savoir si une requête sort un résultat ou non ?? [access] (RESOLU) - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2004 à 10:22:00
lol juste :
si résultat de requete alors *action* fin
Marsh Posté le 23-06-2004 à 10:46:09
Dr Raf a écrit : lol juste : |
cool mais une idée pour résoudre mon blm serais plus approprié merci !!!!!
Marsh Posté le 23-06-2004 à 10:51:04
c ça qui m'as induit en erreur :
Citation : ceci n'est pas du code, mais de l'algo.... |
bon si tu voulais qu'on t'aide fallait dire quelle language (à priori vb ou un truc dans le genre)
if not ObjRecordset.eof then |
Marsh Posté le 23-06-2004 à 10:53:31
Ben, ça dépend du type de requete. Si c'est un SELECT, tu recupère qq chose dans un recordset, ou tu obtiens un recordset vide. Si un DELETE ou INSERT, en VB, tu peux récupérer une variable de retour avec le nb. d'enregistrements touchés... Si j'ai bien compris la question.
Marsh Posté le 23-06-2004 à 10:59:09
hum a mon avis c'est pour un recordset tel que la pseudo proplématique est posée
si c une requete sans recordset ca te fé une erreur et ta le message...
Marsh Posté le 23-06-2004 à 11:16:53
merci bien a vous !!!!
seul petit blem, acces me dit " trop peu de paramètres. 2 attendu"
que cela signifie ?
en vous remerciant d'avance de vos réponses
de plus c bien une requete SELECT me suis pas encore aventuré ds les autres types de requetes
Marsh Posté le 23-06-2004 à 11:20:17
commence par nous montrer ta requête, tu nous aide pas bcp pour l'instant...
Marsh Posté le 23-06-2004 à 11:25:06
pitoudali a écrit : merci bien a vous !!!! |
donc a mon avis il attend 2 paramètres qui pourtant sont entrer dans 2 zone de texte et qui sont bien recup par la requete
voici le code:
Dim stDocName As String
Dim stLinkCriteria As String
Dim Rs As Recordset
Set Rs = CurrentDb.OpenRecordset("reqlogin" )
If Not Rs.EOF Then
stDocName = "page de connection BD"
DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
le code de la requete:
SELECT login.login, login.passwd
FROM login
WHERE (((login.login)=[Formulaires]![formlogin]![login]) AND ((login.passwd)=[Formulaires]![formlogin]![passwd]));
Marsh Posté le 23-06-2004 à 11:29:24
l'erreur est bien sur : Set Rs = CurrentDb.OpenRecordset("reqlogin" ) ?
Marsh Posté le 23-06-2004 à 11:33:55
Dr Raf a écrit : l'erreur est bien sur : Set Rs = CurrentDb.OpenRecordset("reqlogin" ) ? |
ok alors merci
mais comment régler ce problème ?
on a l'erreur mais la solution ??
c pas que je suis naze en VBA, je suis une vrai M..... en VBA ( nuance )
en tt cas Dr Raf, c cool de répondre lol
Marsh Posté le 23-06-2004 à 11:44:25
hum... ct une kestion vu que tu met pas la ligne de l'erreur ca aurait pu être sur "DoCmd.OpenForm stDocName, , , stLinkCriteria " par exemple.......................................
Marsh Posté le 23-06-2004 à 11:55:35
Dr Raf a écrit : hum... ct une kestion vu que tu met pas la ligne de l'erreur ca aurait pu être sur "DoCmd.OpenForm stDocName, , , stLinkCriteria " par exemple....................................... |
l'erreur ne provient pas de "DoCmd.OpenForm stDocName, , , stLinkCriteria ", c sur car si je ùmet une msgbox a la place meme msg d'erreur
en fait je n'est aucune idée d'ou peu bien provenir l'erreur, car access me dit juste " trop peu de paramètre. 2 attendu", j'imagine alors qu'il attend 2 paramètres, qui pourtant sont bien récupérer dans la requête puisque cette requête fonctionne .
voila en tte simplicité je cherche a avoir des utilisateurs répertoriés dans une table, avec leur passwd respectifs , je leurs demande de rentrer leur login ds une textbox et leur passwd dans une autre textbox, si a l'execution de la requete "select", il en ressort un résultat c que c good et alors j'ouvre la page d'accueil de l'appli, sinon il ne se passe rien, à la limite un msgbox(" pad bon login et passwd" )...
voila, mais pour le moment je vois pas pourquoi il me prend pas mes paramètres ...
si quelqu'un a une idée, qu'il m'ouvre les yeux, car is sont plein de ....
Marsh Posté le 23-06-2004 à 12:01:06
fait afficher la requete dans ton prog peut etre que les paramètres de la requête sont vides...
(en tout cas ta requete me parle vraiment pas, c du SQL ca ?
((login.login)=[Formulaires]![formlogin]![login])
Marsh Posté le 23-06-2004 à 12:07:36
Ca ne peut pas marcher tel que. Le fait de faire un set rs = MaRequete declanche la requete alors que le formulaire n'est pas ouvert, encore moins rempli. La requete veut 2 parametres (login et passwd), d'où le message d'erreur.
Il faut déclancher la requete à partir d'un bouton sur le formulaire formlogin. Formulaire ouvert, champs remplis, la requete aura ses parametres.
Marsh Posté le 23-06-2004 à 12:09:36
Un RS vide, ça se teste pas avec "BOF" uniquement
EOF ca dit qu'on est à la fin (après la dernière ligne)
BOF ca dit qu'on est au début (avant la première ligne)
Donc un RS vide, c'est :
if rs.BOF and rs.EOF then
msgbox("il est vide" )
elseif rs.BOF then
msgbox("on est au début" )
elseif rs.EOF then
msgbox("on est à la fin" )
else
msgbox("on est en train de se balader dedans" )
end if
Marsh Posté le 23-06-2004 à 12:12:01
je te met au defis de me montrer un formulaire vide avec eof <> true...
enfin si tu veux faire défiler les résultats tu met simplement :
while not rst.eof |
Marsh Posté le 23-06-2004 à 13:27:30
c'est suite à mon post que du dit ça, ou en réponse à une autre personne ? parcequ'il faut m'expliquer je vois pas le rapport.
quand à while ... wend, fout-moi ça a la poubelle et utilise la "vraie" symaxe do while ... loop
Marsh Posté le 23-06-2004 à 14:01:36
Dr Raf a écrit : fait afficher la requete dans ton prog peut etre que les paramètres de la requête sont vides... |
c du SQL à la access voila c tt y a rien d'autre à dire
Marsh Posté le 23-06-2004 à 14:04:10
JihemAir a écrit : Ca ne peut pas marcher tel que. Le fait de faire un set rs = MaRequete declanche la requete alors que le formulaire n'est pas ouvert, encore moins rempli. La requete veut 2 parametres (login et passwd), d'où le message d'erreur. |
ma requete se déclenche a l'aide d'un bouton sur le formulaire , dc le formulaire est ouvert et je remplis mes champs avant d'appuyer sur le bouton ( qd même ) mais ca n'empeche que ca me met le message d'erreur " trop peu de paramètre...."
Marsh Posté le 23-06-2004 à 14:07:23
Arjuna a écrit : Un RS vide, ça se teste pas avec "BOF" uniquement |
même avec eof et bof tjs pas prise en compte de mes paramètres ...,
Marsh Posté le 23-06-2004 à 14:08:47
Le message, il s'affiche à l'ouverture du formulaire ou à l'appui sur le bouton ?
Marsh Posté le 23-06-2004 à 14:17:27
Arjuna a écrit : |
hum.. oubli g du mal comprendre
Marsh Posté le 23-06-2004 à 14:17:39
JihemAir a écrit : Le message, il s'affiche à l'ouverture du formulaire ou à l'appui sur le bouton ? |
a l'appuie sur le bouton, apres avoir rempli les champs
Marsh Posté le 23-06-2004 à 14:30:04
pitoudali a écrit : a l'appuie sur le bouton, apres avoir rempli les champs |
Perso, je n'utilise pas les requetes stockées avec parametres, parce que je sais pas faire . Enfin, je sais faire, mais c'est compliqué. Il faut passer par des collections de paramètres, bref, c'est gonflant. Je préfère générer ma requete dans le code.
Je récupère les strings des textbox et je construis la requete:
Code :
|
Après, tu envoies la requete et tu récupère le résultat.
Marsh Posté le 23-06-2004 à 14:44:32
comment envoie tu alors la requete ??
je ne vois pas comment avec le "strSql"
Set Rs = CurrentDb.OpenRecordset("strSql" ) ca ca ne passe pas
Marsh Posté le 23-06-2004 à 14:50:21
Tu charges un recodset direct avec la requete:
Code :
|
Voilà...
Edit: j'envoie le code que tu cites..
C'est quoi, le message d'erreur ?
Marsh Posté le 23-06-2004 à 14:58:21
dc j'ai mis ta ligne de code
Set rsTmp = CurrentDb.OpenRecordset(strSQL)
il me met en msg d'erreur "incompatibilté de type", mais ne me surligne pas la ligne en jaune
Marsh Posté le 23-06-2004 à 15:03:50
As tu déclaré rsTmp?
Marsh Posté le 23-06-2004 à 15:04:32
Set rsTmp = CurrentDb.OpenRecordset(strSql)
c'est sur cette ligne qu'il y a imcompatibilité de type
Marsh Posté le 23-06-2004 à 15:09:25
ca serais pas un blem de librairie ?? par contre je sais pas uo aller pour en ajouter ( tt comme tu avais expliquer a Mr Mazurier, pour la librairie DAO ...) c avec access 2000 que je travail
Marsh Posté le 23-06-2004 à 15:42:15
Ben c'est pareil. Quand tu es dans un module VB, tu fais "Outils", "Références", et tu choisis Micro$oft DAO ...
Marsh Posté le 24-06-2004 à 08:56:15
Dim rs As Recordset
Dim strName As String, strPasswd As String
Dim rsTmp As DAO.Recordset
Dim qdReq As DAO.QueryDef
strName = login.Value
strPasswd = passwd.Value
Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM login WHERE login LIKE '" & strName & "' AND passwd LIKE '" & strPasswd & "';" )
Set rsTmp = qdReq.OpenRecordset
If Not rsTmp.EOF Then
MsgBox ("good" )
End If
Marsh Posté le 24-06-2004 à 08:58:28
voila le code qui passe !!
de plus j'avais pas la dll DAO ....
merci a JihemAir pour sa patience envers mon incompétence
comme l'aurais dit un certain monsieur " T'es un puissant toi "
merci !!!!
Marsh Posté le 23-06-2004 à 10:19:47
bonjour
j'aurais voulu savoir comment savoir si une requete sort un résultat ou non ??
c-a-d si la requete sort un résultat, je fais une action sinon je ne fais rien ?
ceci n'est pas du code, mais de l'algo....
if requete.value =true then
action
else
rien
end if
Message édité par pitoudali le 24-06-2004 à 16:27:38