DataGrid ne se remplis pas [Résolu]

Signaler
-
 light666 -
Bonjour,

J'éssaie en vain de remplier un dataGrid a partire d'un recordset :
j'ai un comboBox dans le quel j'ai mis des données extraient d'une table

Le dataGrid n'affiche rien. Merci d'avance pour votre aide.

PS:J'ai chercher sur le net j'ai ajouter des trucs mais toujours la même chose.

Mon CODE :
'Déclarations
Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
'Sur le load de la form j'ai ouvert ma DataBase

Private Sub Combo1_Click()

txtREF = Replace(Combo1.Text, "'", "''") & "';"


rst1.CursorLocation = adUseClient
rst1.Open "SELECT Code_Ref,PrixSansR,PrixRemise from refer where designation ='" & txtREF, con


If rst1.EOF Then
 Set DataGrid1.DataSource = rst1
 DataGrid1.Refresh
End If

rst1.Close

End Sub


Edit : Ajout des balises de code.
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.

5 réponses

Messages postés
32999
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2021
351
Bonjour,

1 - J'ai ajouté la coloration syntaxique à ton code.
Merci d'y penser lors de tes prochains messages.

2 - Ta requête semble comporter une petite erreur. Une quote manquante à la fin.

rst1.Open "SELECT Code_Ref,PrixSansR,PrixRemise from refer where designation ='" & txtREF&"'", con



Bonsoir jordane45;
Merci pour ta réponse.

Balises de code : j'y penserai ;)

En ce qui concerne l'erreur, je pense que au niveau de txtREF (plus haut) j'ai déjà mis la quote c'est pas la peine de la mettre encore sur la rst1...
Mais bon je vais essayer comme ça et je vais voir si ça remplis bien mon DataGrid.

Merci
Messages postés
32999
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2021
351
Je viens de voir que tu faisais un replace d'une quote en "''" ..pourquoi faire ?

Si tu as des apostrophes dans ta chaine de caractère il vaut mieux utiliser les caractères d'échapement dans ta requête sql.

txtREF = Replace(Combo1.Text, "'", "\'") 



Puis peux tu tester ce que vaut ta requête ?

req = "SELECT Code_Ref,PrixSansR,PrixRemise from refer where designation ='" & txtREF&"';"
msgbox req
rst1.Open req, con


je ne comprend pas non plus pourquoi tu utiliser le End Of File..
If rst1.EOF Then


Tu peux normalement directement l'affecter...
voir tester le nombre de lignes retournées par ta requête avant si besoin...
 msgbox "NbROWS = " & rst1.RecordCount
If rst1.RecordCount >0 then
 Set DataGrid1.DataSource = rst1
End If

Bonjour,

Oui effectivement j'ai des apostrophes dans ma chaine, et j'ai trouver ça sur un forum :

txtREF = Replace(Combo1.Text, "'", "''") & "';"

Pour les tests :

J'ai utiliser ça :

Private Sub Combo1_Click()

txtREF = Replace(Combo1.Text, "'", "\'")

req = "SELECT Code_Ref,designation,PrixSansR,PrixRemise from refer where designation ='" & txtREF & "';"

MsgBox req

rst1.Open req, con

MsgBox "NbROWS = " & rst1.RecordCount

If rst1.RecordCount > 0 Then
Set DataGrid1.DataSource = rst1
End If

rst1.Close

End Sub

alors ça ma générer des erreurs sur plusieurs valeurs de "Designation" : Erreur de syntaxe (opérateur absent) dans l'expression ......

Puis j'ai remis :
txtREF = Replace(Combo1.Text, "'", "''") & "';"

Je n'ai plus d'erreurs, et les MsgBox ont renvoyées des valeurs :

exemple: contenue de la Première MsgBox

SELECT Code_Ref,designation,PrixSansR,PrixRemise from refer where designation ='PALIER FIESTA\FUSION 2002';

Et la deuxième MsgBox juste après me renvoie :

NbROWS=1

Mais la DataGrid ne se remplis pas pour autant.

Pour revenir à :

If rst1.EOF Then

j'ai trouver ça sur un forum aussi.

Merci beaucoup pour l'assistance que vous m'offrez.
RÉSOLUE

J'ai enfin trouver la solution,

Le problème été au niveau de :

rst1.Close

j'ai enlever la fermeture du recordset à la fin et j'ai mis au début un contrôle d'erreur pour fermer le recordset si il est ouvert.

Private Sub Combo1_Click()

On Error resume next
rst1.close

txtREF = Replace(Combo1.Text, "'", "''") & "';"

req = "SELECT Code_Ref,designation,PrixSansR,PrixRemise from refer where designation ='" & txtREF


rst1.Open req, con


If rst1.RecordCount > 0 Then
Set DataGrid1.DataSource = rst1
End If


End Sub

Ma dataGride se rempli sans erreur.

Merci Beaucoup Jordane45 pour les idées et les astuces, et le temps que tu as consacrer pour m'aider.