Bonjour,

voilà sous SQL Server 2008 j'ai créée 3 tables, la table BIENS qui est le Sur-type des tables APPARTEMENT et MAISON qui sont donc les sous typage (je ne sait pas si ça parle à quelqu'un, si non c'est comme un héritage, les propriété communes au deux tables comme la ville, superficie etc.. sont regroupé dans une table ici BIENS, et les tables appartement et maisons ont leur propre propriétés:
Appartement: une cave un balcon, un etage
Maison: jardin, garage
et ces deux tables vont chercher les propriété communes dans Biens
)

Donc j'ai bien mis une clé primaire à BIENS: ID, la meme clé avec le meme type dans appartement et maison, relié entre eux. voici les reltions mise en place:


ma question: est-ce bon?
mon problème: lorsque j'enregistre des données depuis VB 2008, dans SQL cela enregistre tout deux fois dans la table BIENS et une fois dans la table maison ou appartement
il faut que l'ID d'un sous typage corresponde à l'ID du sur typage, mais comment faire? comment éviter les doublons ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 If Groupe.Text = "Appartement" Then
            Me.objDATA = New Connection()
            Dim ad As Integer
            Me.rqSql = "INSERT INTO [BONVALETJ_C35].[dbo].[BIENS]" & _
                       "DISTINCT(Rue,CP,Ville,Superficie,Prix_Achat,Prix_Location,Orientation,Nb_Pieces)" & _
                       "VALUES(" & _
                       "'" & Me.Rue.Text & "'" & _
                       ",'" & Me.CP.Text & "'" & _
                       ",'" & Me.Ville.Text & "'" & _
                       ",'" & Me.Superficie.Text & "'" & _
                       ",'" & Me.Prix_Achat.Text & "'" & _
                       ",'" & Me.Prix_Location.Text & "'" & _
                       ",'" & Me.Orientation.Text & "'" & _
                       ",'" & Me.Nb_Pieces.Text & "');" & _
                       "; SELECT SCOPE_IDENTITY();"
            ad = Me.objDATA.actionRows(Me.rqSql)
            Me.rqSql1 = "SELECT Appartement.ID" & _
                       "FROM APPARTEMENT "
            Me.DS = Me.objDATA.getRows(Me.rqSql, "ID")
            Dim enreg As Integer = DS.Tables(0).Rows.Count - 1
            If DS.Tables(0).Rows(enreg).Item(0) IsNot DBNull.Value Then
                index_Biens = DS.Tables(0).Rows(enreg).Item(0)
            End If
            Dim id As Integer
            Me.rqSql = "INSERT INTO [BONVALETJ_C35].[dbo].[APPARTEMENT]" & _
                       "(ID,Etage,Balcon,Cave)" & _
                       "VALUES(" & _
                       "'" & index_Biens & "'" & _
                       ",'" & Me.Etage.Text & "'" & _
                       ",'" & Me.Balcon.Text & "'" & _
                       ",'" & Me.Cave.Text & "');" & _
                       "; SELECT SCOPE_IDENTITY();"
            id = Me.objDATA.actionRows(Me.rqSql)
        End If