probleme DLookUp - VB/VBA/VBS - Programmation
Marsh Posté le 13-04-2005 à 16:58:28
Déjà un nom de société avec apostrophe va planter grave :
"[Société] = """ & Me![NomSociété] & """" |
Aussi y'a une concaténation qui manque entre le Format() et le "AND" :
vrainuméro = DLookup("[IndexDevGlob]", "GlobalDevis", _ |
Marsh Posté le 13-04-2005 à 17:11:38
Merci FlorentG pour la réponse ultra rapide.
j'avais déjà essayé en mettant une apostrophe avant AND.
J'ai copié collé ton bout de code dans mon programme et il me dit soit "erreur de progragrammation, soit il manque un séparateur sur :
" AND [Société] = """
Bref ça ne marche tjs pas
et ça reste en rouge
Marsh Posté le 13-04-2005 à 17:15:01
Ceci dit , sil y a une autre méthode en VBA pour trouver un enregistrement avec 2 criteres, je suis preneur...
Marsh Posté le 13-04-2005 à 18:08:30
Y'a plus personne pour me repondre ?
C'est dommage, ça partait bien !
Marsh Posté le 13-04-2005 à 22:02:20
Après bien des essais, j'ai enfin trouvé la bonne syntaxe (en tout cas celle qui marche sur mon ordi)....
Je la retranscris ici, ça peut en aider d'autres :
vrainuméro = DLookup("[IndexDevGlob]", "GlobalDevis", _
"[DateGlob] = " & Format(Me![DateGlob], "\#mm-dd-yyyy\#" )& _
" AND [Société] = " & " ' " & Me![NomSociété] & " ' " )
Sans oublier le & commercial après le format de date et les apostrophes entre les guillemets (j'ai rajouté des espaces pour mieux les montrer).
Merci pour tout.
Marsh Posté le 13-04-2005 à 23:37:23
Ah merde je suis con, j'ai oublié les '&'. Par contre, t'as pas corrigé les ' qu'il faut transformer en ""
Marsh Posté le 14-04-2005 à 00:01:40
Ben, ecoute, ça marche comme ça... je n'y touche plus !
par contre, j'ai un autre problème (tu t'es aperçu que je débute !) : je ne sais pas comment actualiser au fur et à mesure ma table pour chercher les autres occurrences de la même société a la même date.
De plus quand il ne trouve pas de N° correspondant, il n'accepte pas la valeur Null !
Marsh Posté le 14-04-2005 à 00:03:09
DLookup ne retourne qu'une ligne je crois. Faut utiliser un RecordSet pour pouvoir fouiller dans plusieurs enregistrements
Marsh Posté le 14-04-2005 à 00:07:10
Voila ce que j'ai fait : c'est ans doute du bricolage mais je n'ai pas trouvé mieux :
Dim numéro As Integer
1 numéro = DLookup("[IndexDevGlob]", "GlobalDevis", _
"[DateGlob] = " & Format(Me![DateGlob], "\#mm-dd-yyyy\#" ) & _
" AND [Société] = " & "'" & Me![NomSociété] & "'" )
If IsNull(numéro) Then GoTo 2
Dim supprim As DAO.Recordset
Set supprim = CurrentDb.OpenRecordset("GlobalDevis", DBOpenDynaset)
supprim.MoveFirst
While supprim("IndexDevGlob" ) <> numéro
supprim.MoveNext
Wend
supprim.Delete
supprim.Close
COMMENT ON ACTUALISE ???"
GoTo 1
2 Exit_Supp_Click:
Marsh Posté le 14-04-2005 à 00:07:55
Dans le while, juste avant le movenext, tu peux récupérer l'enregistrement en cours
Marsh Posté le 14-04-2005 à 00:14:19
Oui d'accord, mais ce que je veux, c'est boucler jusqu'à ce qu'il n'y ait plus d'enregistrement à supprimer et ne pas bloquer avec un message "utilisation incorrecte de la valeur Null" quand il ne trouve plus d'enregistrement.
Marsh Posté le 14-04-2005 à 00:15:47
Y'a une propriété EOF du recordset pour voir si t'es à la fin
Marsh Posté le 14-04-2005 à 00:23:42
Je ne sais pas si j'ai bien compris ta réponse mais je ne veux pas tous les supprimer, mais seulement ceux qui ont la même société pour une date considérée :
Par exemple supprimer la société "A" à la date du 13/4 dans l'exemple ci-dessous :
A 13/4
B 12/4
C 13/4
A 13/4
Marsh Posté le 14-04-2005 à 14:07:17
j'ai résolu mon problème :
J'ai changé mon Integer en Variant et j'ai mis un Me.refresh.
Et ça marche.
Marsh Posté le 13-04-2005 à 16:53:34
Bonjour,
J'ai un problème dont je n'arrive pas a me sortir :
J'ai un formulaire "devis" avec une date de devis et un nom de société.
Je veux pouvoir supprimer ce devis de ma table "GlobalDevis" dans lequel j'ai plusieurs sociétés pour la date considérée.
Je veux donc faire un DLookUp avec 2 critères : un de date (la date du devis) et un de texte (le nom de la société)
Si je fais un DLookUp pour chaque critere, ça marche : il trouve la première occurence de mon Numéro d'index de la table :
numéro = DLookup("[IndexDevGlob]", "GlobalDevis", _
"[Société] = " & "'" & Me![NomSociété] & "'" )
>>> IndexDevGlob = 20, donc il trouve la 1ere occurence du nom de la socièté
ou si je fais :
numdedate = DLookup("[IndexDevGlob]", "GlobalDevis", _
"[DateGlob] = " & Format(Me![DateGlob], "\#mm-dd-yyyy\#" ))
>>> IndexDevGlob = 17, donc il trouve la 1ere occurence de la date
Si je fais :
vrainuméro = DLookup("[IndexDevGlob]", "GlobalDevis", _
"[DateGlob] = " & Format(Me![DateGlob], "\#mm-dd-yyyy\#" ) _
And "[Société] = " & "'" & Me![NomSociété] & "'" )
ça me dit : erreur d'execution 13 >>>incompatibilité de type !
Quelqu'un peut-il m'expliquer ou je fais une erreur ?