Reponse a une requete ajout

gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006 - 18 mai 2006 à 16:53
gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006 - 19 mai 2006 à 11:49
Bonjour bonsoir
Je travaille avec vba access et j'effectue une requete ajout qui se présente ainsi:



NoIPP = Form_Entrée.IPP
Set dbs = CurrentDb
strSQL = "INSERT INTO Patients ( IPP, Nom, Prénom, Sexe, DateN )SELECT Recept.IPP, Recept.Nom, Recept.Prénom, Recept.Sexe, Recept.DateN FROM Recept WHERE (((Recept.IPP)=" & NoIPP & "));"
Set Qdf = dbs.CreateQueryDef("", strSQL)
Qdf.Execute


Ca marche bien si le NoIPP est présent dans la table, mais j'aimerais pouvoir afficher un message quand ce n'est pas le cas.
En gros, quelque chose comme:
"If résultat requete vide then
msgBox "NoIPP non valide""


Si quelqu'un sait comment ce genre de chose peut se faire, merci de me faire signe : )


Merci d'avance

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 mai 2006 à 19:34
Salut
Je crains qu'il faille que tu le fasses en deux étapes :
- Une première requète SQL pour savoir si la donnée existe (avec un RecordSet)
- Si elle existe, la requète telle que tu l'as énoncé
Pour info, "Qdf.Execute" doit avoir (comme sous ADODB) un paramètre optionnel qui te renvoie le nombre d'enregistrements affectés par ta requète. Si ce nombre = 0, c'est que IPP n'existait pas.

Sous Access, je ne suis pas sûr que la syntaxe qui suit fonctionne :strSQL "If Exists (Select Recept.IPP FROM Recept WHERE Recept.IPP " & NoIPP & ") " & _
               " .... ta requète Insert ..."

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006
19 mai 2006 à 11:49
Merci pour le coup de pouce!
En fait j'ai fini par trouver ce qu'il me fallait, en utilisant la propriété RecordsAffected. Ca donne a peu près ça:




NoIPP = Form_Entrée.IPP
    Set Dbs = CurrentDb
    strSQL = "  INSERT INTO Patients ( IPP, Nom, Prénom, Sexe, DateN )SELECT Recept.IPP, Recept.Nom, Recept.Prénom, Recept.Sexe, Recept.DateN FROM Recept WHERE (((Recept.IPP)=" & NoIPP & "));"
    Set Qdf = Dbs.CreateQueryDef("", strSQL)
    Qdf.Execute
    lgNbre = Qdf.RecordsAffected



RecordsAffected renvoie le nombre d'enregistrements affectés par la dernière méthode execute. (sur un querydef ou database)
Voila!
0
gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006
19 mai 2006 à 11:49
Merci pour le coup de pouce!
En fait j'ai fini par trouver ce qu'il me fallait, en utilisant la propriété RecordsAffected. Ca donne a peu près ça:




NoIPP = Form_Entrée.IPP
    Set Dbs = CurrentDb
    strSQL = "  INSERT INTO Patients ( IPP, Nom, Prénom, Sexe, DateN )SELECT Recept.IPP, Recept.Nom, Recept.Prénom, Recept.Sexe, Recept.DateN FROM Recept WHERE (((Recept.IPP)=" & NoIPP & "));"
    Set Qdf = Dbs.CreateQueryDef("", strSQL)
    Qdf.Execute
    lgNbre = Qdf.RecordsAffected



RecordsAffected renvoie le nombre d'enregistrements affectés par la dernière méthode execute. (sur un querydef ou database)
Voila!
0
Rejoignez-nous