Chargement d'un combo à partir d'un autre lent lors de l'enregistrement!
js8bleu
Messages postés576Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention27 janvier 2014
-
27 nov. 2010 à 11:12
paramecie
Messages postés15Date d'inscriptionsamedi 23 octobre 2010StatutMembreDernière intervention29 novembre 2010
-
28 nov. 2010 à 02:35
Bonjour à tous,
j'ai 4 combobox. Lorsque je sélectionne le combo1, en fonction du choix, il charge les données de la combo2. Lorsque je sélection un item de la combo2 il charge les données de la combo3. Ainsi de suite. Je souhaiterai savoir si cette méthode est gourmande en mémoire d'autant plus que mon application est en réseau et que souvent les données chargées par combo peuvent atteindre la dizaine. Ou peut-être que mon code n'est pas optimisé. Voici la partie de mon code qui charge cmbpropriete en fonction du choix de cmbexamen.
cmbpropriete.Clear
Dim rscmbexamen As New ADODB.Recordset
rscmbexamen.Open "select numexamen from Tableexamen where nomexamen = '" & Replace(cmbexamen.Text, "'", "''") & "' ", cn, adOpenStatic, adLockPessimistic
txtnumexamen.Text = rscmbexamen.Fields(0)
cmbpropriete.Clear
Dim rspropriete As New ADODB.Recordset
rspropriete.Open "select nompropriete from Tablepropriete where numexamen = " & txtnumexamen & " order by nompropriete", cn, adOpenDynamic, adLockOptimistic
Do While Not rspropriete.EOF
cmbpropriete.AddItem rspropriete.Fields(0)
rspropriete.MoveNext
Loop
Merci d'avance pour votre très précieuse aide.
Cordialement.
A voir également:
Chargement d'un combo à partir d'un autre lent lors de l'enregistrement!
paramecie
Messages postés15Date d'inscriptionsamedi 23 octobre 2010StatutMembreDernière intervention29 novembre 2010 28 nov. 2010 à 02:35
Bonjour!
Je ne suis pas très pro en ADODB, mais...
On ne doit pas être obligé de créer un nouvel objet à chaque requête (réutiliser ou objet recordset global au module) ça doit être plus économique. On peut le remplir d'enregistrements différents (Open) à chaque fois, au lieu de le détruire.
J'éviterais surtout de passer un code SQL, si c'est du Access utiliser une requête proprement paramétrée, c'est beaucoup plus efficace. Sinon une procédure stockée.
Sinon non ceci n'est pas vraiment gourmand, et 10 lignes, ce n'est rien - on peut recevoir des centaines ou milliers d'enregistrement en réseau, mais effectivement, il vaut mieux optimiser.
Utiliser des requêtes (et sous réserve que les tables, champs, indexes, règles et tout le tintouin soient bien construits aussi