Bonjour
Je suis en train de développer une application vb.net en VS2010, SGBD : SQL Server 2008.
J'ai un plan qui se compose de plusieurs rayon et chaque rayon se compose de plusieurs articles.
J'ai donc les tables suivantes :
- plan (code,..)
- rayon (id,code,#numPlan,...)
- article (code,designation,prix,...)
- article_rayon (id,#article,#rayon,quantite)
j'ai chargé 3 datasets :
- un pour la les plans
- un pour les rayons du plan sélectionné
- un pour les articles du rayon sélectionné
C'est bon pour l'affichage.
J'ai un bouton Enregistrer qui permet d'ajouter un nouveau plan avec ses rayons et les articles, modifier un plan et supprimer.
Je peut faire ça avec la méthode classique (insert, update, delete) mais y a t-il une autre solution plus efficace par commandbuilder par exemple.
voici le code:
Merci.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Module MonModule Dim strConn As String = "Data Source=localhost; Integrated Security=SSPI; Initial Catalog=MaBase" Public cnx As New SqlConnection(strConn) 'la fonction pour raffraichissement qui retourne un dataview Public Function rafraichier(ByVal requete As String) As DataView cnx.Open() Dim da = New SqlDataAdapter(requete, cnx) cnx.Close() Dim ds As New DataSet() ds.Clear() da.Fill(ds, "matable") Dim dv = ds.Tables("matable").DefaultView dv.AllowEdit = True Return dv End Function End Module Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'afficher la liste des plans dans un datagrid pour le test Dim dv As DataView = rafraichier("SELECT * FROM [plan]") dgvPlan.DataSource = dv End Sub 'afficher la liste des rayons du plan donné dans un listbox et datagrid(pour le test) Private Sub txtPlan_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPlan.Validated lstRayon.Items.Clear() Dim dv As DataView = rafraichier("SELECT * FROM [Rayon] WHERE numplan='" & txtPlan.Text & "'") dgvRayon.DataSource = dv 'listbox Dim pos As Integer ReDim lstRayon.Tag(dv.Count - 1) For cmp = 0 To dv.Count - 1 pos = lstRayon.Items.Add(dv(cmp).Item("code") & Chr(9) & dv(cmp).Item("designation")) lstRayon.Tag(pos) = dv(cmp).Item("id") Next cmp 'liste des artciles du rayon sélectionné dans la listbox Private Sub lstRayon_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstRayon.SelectedIndexChanged Dim rayon As Integer = lstRayon.Tag(lstRayon.SelectedIndex) Dim dv As DataView = rafraichier("SELECT Article_Rayon.ID,Article_Rayon.Repere,Article_Rayon.Rayon,Article_Rayon.Article,Article.Designation,Article.Dimension,Article.Prix,Article_Rayon.Quantite " & _ "FROM [Article],[Article_Rayon] " & _ "WHERE Article_Rayon.rayon=" & rayon & " AND Article_Rayon.Article=Article.Code") dgvArticle.DataSource = dv End Sub
Partager