Modifier le recordssource d'un datacontrol

cs_mzl Messages postés 20 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 12 mai 2004 - 5 avril 2004 à 08:53
cs_mzl Messages postés 20 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 12 mai 2004 - 7 avril 2004 à 05:06
bonjour tout le monde!!
j'ai un soucis, et oui, encore une fois.... (Vb et moi, on est pas tres pote...)
voila, j'ai une bd access 2000, et j'ai le choix entre deux direction L et R, que l'utilisateur choisi, ensuite j'ai 3 boutons, et suivant les diffrentes configurations de bouton et choix, je dois afficher des descriptions de produits dans une meme datalist differente suivant les combinaisons,
mais je me heurte a l'erreur suivante: "Pilot ISAM unfundable",
Je vous met un bout de code:

If Direction = "L" ThenSQL1 "SELECT * FROM product WHERE (product.suppliers 'Essilor' AND product.top_50 = 'Oui' AND product.eye = 'L') OR (product.suppliers = 'Essilor' AND product.top_50 = 'Oui' AND product.eye = 'B')"
Adodc1.RecordSource = SQL1
With top_50
.DataField = "description"
.ListField = "description"
.Refresh // le pb ISAM se situe sur le refresh
End With

Alors pour les propietes: datalist.datasource & rowsource sont sur Adodc1
Adodc1.recordsource est sur adcmdtable avec le nom de la table "product" (le pb ne serait pas la??, et il faudrai utiliser adcmdstoredproc, mais je sais pas faire avec cette bete et une bd access)
Si qqun pourait regarder et m'aider?? en vs remerciant!

4 réponses

juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
5 avril 2004 à 09:12
il fo mettre le recordsource sur adcmdunknown (=8) et laisser le .rowsource a vide

voila ++
juva

Retrouvez une équipe de développeurs confirmés sur le tchate:
serveur : bastia.zefunChat.net
port : 6667
chan : #programmation
0
cs_mzl Messages postés 20 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 12 mai 2004
5 avril 2004 à 09:41
Merci, ca marche!!
sinon, j'ai finalement trouve une autre sol: ne pas du tout initialisé le datacontrol
et le faire dans le code:
FilePathName = App.Path & "\bdd.mdb"
connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePathName & ";Persist Security Info=False"

Mais bon, c'est sur que c'est un peu lourd!

Merci bcp!
0
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
5 avril 2004 à 10:27
c'est une otre solution, teste les performances...la mienne évite de se perdre dans des ligne sde code fastidieuses

++juva

Retrouvez une équipe de développeurs confirmés sur le tchate:
serveur : bastia.zefunChat.net
port : 6667
chan : #programmation
0
cs_mzl Messages postés 20 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 12 mai 2004
7 avril 2004 à 05:06
salut, suite... en fait pour sql, chai pas j'ai tjrs fait comme ca euh ca marche..., maintenant, apres moult reflexion, je pense que le Pb est le suivant:
qd je suis en mode debug, sur le connectionstring, j'ai le message:"Object variable or with block variable not set", alors j'essaye de creer une connection directement par les propriétés du Adodc, et là, impossible, il me dit echec a l'initialisation du fournisseur...Mais c'est zarbe parceque les données s'affiche bien dans la datalist (et pourtant c'est le meme adodc)
et a l'écran, je selectionne un element (n'importe), sa créé une nouvelle ligne et sa me recopie systematiquement la 1ere ligne dedans. qd je reessaye de cliquer sa me met "invalid use of NULL".
en voulant utiliser, Sleep, je me suis rendu compte que je n'avait pas la library Win API...
non mais je commence a croir qu'il m'ont donner une version beta au boulot.
Code:
SQL1 "SELECT * FROM product WHERE (suppliers 'Essilor' AND top_50 = 'Yes' AND (eye = 'L' OR 'B'))"

FilePathName = App.Path & "\bdd.mdb"
connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePathName & ";Persist Security Info=False"

With Adodc1
.ConnectionString = connect
.RecordSource = SQL1
End With

Adodc1.Recordset.MoveFirst
For i = 0 To top_50.SelectedItem

If Adodc1.Recordset.BOF Or Adodc1.Recordset.EOF Then
prod_left.Text = "Erreur : sélection hors-limite"
Else
prod_left.Text = Adodc1.Recordset.Fields("code_prod").Value
Adodc1.Refresh
i = i + 1
End If
Adodc1.Recordset.MoveNext
Sleep (500)
Next

(il ne faut pas tenir compte de la boucle , c'etait pour trouver l'erreur)

Voilou, ch crois que chuis definitivement pas faite pour la programmation....
biz
0
Rejoignez-nous