c'est genial ca marche et c'est plus court
quand tu parles de reorganiser mon code tu veux dire pour qu'il soit plus simple a lire?
c'est genial ca marche et c'est plus court
quand tu parles de reorganiser mon code tu veux dire pour qu'il soit plus simple a lire?
Quelques liens DropBox :
Le dossier de développement :
https://www.dropbox.com/s/lsa440iu5c...ockFR.zip?dl=0
Une petite video montrant le fonctionnement :
https://www.dropbox.com/s/2y1q6s4q72...ockFR.mp4?dl=0
Je te suggère de prendre la peine de lire d’abord tous les commentaires du programme, ils sont parfois plus instructifs que le programme lui-même.
Au départ, ce petit programme didactique a été réalisé pour un forum espagnol, ce n’est que plus récemment que je l’ai francisé (trad. des noms de variables et de procédure, et des commentaires)
La DB jointe n’a pas été traduite, mais un lexique est écrit dans les commentaires en début de programme.
Attention, ce programme n’est pas garanti free-bug mais l’organisation et les méthodes proposées sont correctes.
L’avantage de l’organisation proposée est bien sûr la lisibilité mais aussi la facilité (3 à 5 minutes de Recherche-Remplace, <CTRL<>H>) de passer d’un SGBD à autre. Dans son état actuel, le programme « attaque » une DB Access 2007, mais MySql, SqlExpress et Access 2003 « sont déjà en place ».
La lisibilité, c’est aussi la facilité de maintenance.
Les procédures clés sont :
OuvrirDB ‘ contient out ce que tu avais hier dans QuoteCosting_Load, mais en quelques lignes seulement, des tâches étantconfiées à d’autres procédures …FermerDB
Définition des chaines de connexions,
ChargerDonnees() ‘ contient tous les « Select »
MontrerDonnees() ‘ contient toutes les liaisons
Et puis toutes les autres :
OuvrirConnexion
CreerCommande
CreerUneTable
CreerIdentifiant ‘ gestion manuelle des Id (je veux garder la main )))
Traitements_Click ‘ répond aux boutons BAjouter, BModifier et BSupprimer
EnregistrerSuppression ‘ accès effectif en mode connecté à la DBLectureCirculaire_Click ‘ répond aux boutons BDernier, BPrecedent, BSuivant et BPremier
EnregistrerModification ‘ id.
EnregistrerAjout ‘ id.
et quelques gestions annexes,
telles les sélections dans le DataGridView sur base de Combo (ajoutées depuis hier ..?.. ) :
RechercheSelonCombo_SelectedIndexChanged ‘ répond aux changements de 2 Combo
et d’autres petits réglages …
Pour quelques cas un peu nébuleux, je peux fournir des explications si besoin …
Bonne séance cinéma, bonne lecture, bon amusement,
Re,
Je viens de comprendre (seulement ... mais peut-être...) pourquoi tu ne disposes pas des noms de colonnes dans le DataGridView :
Veux-tu bien faire l'essai de compléter les "Fill" comme ceci :
Après cela, tu devais pouvoir utiliser la procédure suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 cn1.FillSchema(UneTable1, SchemaType.Source) ' Récupère les noms des tables et des champs. Certains SGBD ne permettent pas FillSchema, ealors il faut isoler cette ligne cn1.Fill(UneTable1) cn2.FillSchema(UneTable2, SchemaType.Source) cn2.Fill(UneTable2) cn3.FillSchema(UneTable3, SchemaType.Source) cn3.Fill(UneTable3) cn4.FillSchema(UneTable4, SchemaType.Source) cn4.Fill(UneTable4) cn5.FillSchema(UneTable5, SchemaType.Source) cn5.Fill(UneTable5)
...
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 Private Sub LesComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, ComboBox4.SelectedIndexChanged Dim IndexColonne As Integer Dim IndexLigne As Integer DataGridView1.ClearSelection() IndexColonne = DataGridView1.Columns(sender.DisplayMember).Index For IndexLigne = 0 To DataGridView1.Rows.Count - 1 Try If DataGridView1.Item(IndexColonne, IndexLigne).Value = sender.Text Then DataGridView1.Rows(IndexLigne).Selected = True End If Catch End Try Next End Sub
j'ai essayé et rien ne s'affiche ni dans le dgv ni dans les co,bobox
Pour les "Fill"
Et la procedure:
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 cn1.FillSchema(UneTable1, SchemaType.Source) cn1.Fill(UneTable1) cn2.FillSchema(UneTable2, SchemaType.Source) cn2.Fill(UneTable2) cn3.FillSchema(UneTable3, SchemaType.Source) cn3.Fill(UneTable3) cn4.FillSchema(UneTable4, SchemaType.Source) cn4.Fill(UneTable4) cn5.FillSchema(UneTable5, SchemaType.Source) cn5.Fill(UneTable5) DtSet.Tables.Add(UneTable1) DtSet.Tables.Add(UneTable2) DtSet.Tables.Add(UneTable3) DtSet.Tables.Add(UneTable4) DtSet.Tables.Add(UneTable5) DtSet.Tables(0).TableName = "tblPN" DtSet.Tables(1).TableName = "tblCustomer" DtSet.Tables(2).TableName = "tblTool" DtSet.Tables(3).TableName = "tblRequisition" DtSet.Tables(4).TableName = "tblToolRequisition"
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 Private Sub LesComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, ComboBox4.SelectedIndexChanged Dim IndexColonne As Integer Dim IndexLigne As Integer DataGridView1.ClearSelection() IndexColonne = DataGridView1.Columns(sender.DisplayMember).Index For IndexLigne = 0 To DataGridView1.Rows.Count - 1 Try If DataGridView1.Item(IndexColonne, IndexLigne).Value = sender.Text Then DataGridView1.Rows(IndexLigne).Selected = True End If Catch End Try Next End Sub
Alors là, je ne comprends pas ... N'y a-t-il pas un autre problème ?
Si le DataGridView et les Combo se remplissent quand tu mets les lignes FillSchema en commentaire, alors j'abandonne ce détail et tu dois garder la procédure LesComboBox_SelectedIndexChanged d'hier, celle avec le Select Case.
Une dernière piste, ne laisser la ligne FillSchema que pour la table qui alimente le DataGridView (la 5ème je pense).
Pour ce qui est de la procédure LesComboBox_SelectedIndexChanged, tu peux voir la mienne dans le programme MonStockFR. Dans ce programme, j'effectue aussi la lecture du schéma pour chaque table puisque cela est programmé dans la fonction CreerUneTable().
...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager