Bonjour,
J'ai créé une petite application qui consiste en un formulaire principal affichant un terme et sa traduction et des boutons ouvrant un formulaire secondaire avec un datagridview pour ajouter, supprimer ou modifier des domaines, clients, etc se rapportant à ce terme.
Les données du "sous-formulaire" sont filtrées à l'ouverture de celui-ci grâce à l'ID du terme en question. Pour cela, je transfers tout d'abord l'ID dans un "public string" d'un module, lequel est copié à l'ouverture dans le textbox1 du form2. Ensuite j'utilise le code suivant au chargement du form2*:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = db.mdb;")
 
        Dim selStr As String = "SELECT DEID, ID, KatGramDE, Begriff, AnmerkungDE  FROM TblTerminoDE WHERE ID Like '" & TextBox1.Text & "' "
        da1 = New OleDbDataAdapter(selStr, conn)
        da1.MissingSchemaAction = MissingSchemaAction.AddWithKey
        ds1 = New DataSet()
        conn.Open()
        da1.Fill(ds1, "TermDE")
        conn.Close()
 
        DataGridView1.DataSource = ds1
        DataGridView1.DataMember = "TermDE"
Mon datagridview m'affiche bien les données que je veux mais je me demande si cette manière de faire n'est pas un peu du "bricolage"
Parce que si je veux ajouter une entrée dans mon datagridview, je suis obligé d'ajouter par le code l'ID du terme pour que la relation puisse exister :

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
 
        Dim dv1 As New DataView(ds1.Tables("TermDE"))
        Dim drv1 As DataRowView = dv1(DataGridView1.CurrentRow.Index)
 
        If drv1("KatGramDE").ToString = "" Then
            MessageBox.Show("Fehler!")
        Else
            Try
 
                drv1("ID") = TextBox1.Text
 
            Catch ex As Exception
 
            End Try
 
 
            Dim cb As New OleDbCommandBuilder(da1)
            conn.Open()
            da1.Update(ds1, "TermDE")
            conn.Close()
        End If
Ça marche, mais que pour la dernière ligne entrée, si j'entre plusieurs ligne, l'ID est enregistrée seulement dans la dernière, les autres lignes sont bien enregistrées mais sans ID donc sans relation avec le formulaire principal.

J'espère que je suis à peu près clair...

N'y a-t-il pas un moyen de faire tout ça de manière un peu plus "professionnelle" ?

Merci beaucoup par avance pour votre aide !

Guillaume