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*:
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"
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"
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 :
Ç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.
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
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
Partager