Condition requete SQL

Signaler
Messages postés
23
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
23
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
17 avril 2008
-
Bonjour à tous,

J'ai fais un code pour importer des données Excel dans une table Access. Ce code marche parfaitement. Et maintenant, je voudrai effectué un test pour savoir si un enregistrement est déjà présent dans ma table, auquel cas, je met à jour ma ligne Access, sinon je la créée.
Je n'arrive pas à faire un code qui marche. Quelqu'un peut-il m'aider svp ??

Mon code :

If  ???? (condition qui dit si ma ligne n'est pas présente)
    cSQL = "INSERT INTOnom_table (colonne1, colonne2) VALUES ('" & Req(1) & "', '"& Req(2) &"')"
    DoCmd.RunSQL cSQL   'execution de la requete SQL
Else
    cSQL = "UPDATE nom_table SET colonne2='" & Req(2) & "' WHERE colonne1='" & Req(1) & "'"
    DoCmd.RunSQL cSQL   'execution de la requete SQL
End if

5 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Et bien je pense qu'il faut que tu fasses une requête SELECT et que tu récupères le résultat pour voir si ta ligne est présente.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
23
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
17 avril 2008

Oui, je pensais faire un truc du style :sql " SELECT colonne1 FROM nom_table WHERE colonne1 ' "& Req(1) &" ' "

Mais je ne sais pas comment récuperer la valeur de cette requête car elle n'est pas contenu dans la variable sql là..

Peut-tu m'éclairer plus stp ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Dim rs As Recordset
Dim sql As String   sql " SELECT colonne1 FROM nom_table WHERE colonne1 ' " & Req(1) & " ' "
   Set rs = CurrentDb.openRecordset(sql)
   MsgBox (rs("colonne1").Value) 'tu as ici la valeur
   rs .Close
   Set rs = Nothing
   , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
23
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
17 avril 2008

Merci pour ton aide. Ca marche !
Messages postés
23
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
17 avril 2008

J'ai toujours un problème en fait. En effet, la valeur de la table est nulle quand l'enregistrement n'est pas le même ( pour la requete toto ) et dès que je compare la valeur dans ma boucle If, ça me met l'erreur : "aucun enregistrement en cours"

Si quelqu'un peut m'aider une nouvelle fois. Merci d'avance.

Mon code :

Req(1) = .Range("E" & i).Value
toto = "SELECT * FROM nom_table WHERE colonne1='" & Req(1) & "'"
Set rs = CurrentDb.OpenRecordset(toto)

If (rs("colonne1").Value <> Req(1)) Then
    cSQL = "INSERT INTO nom_table (colonne1, colonne2) VALUES ('" & Req(1) & "', 'tata')"
    DoCmd.RunSQL cSQL   'execution de la requete SQL
Else
    cSQL = "UPDATE nom_table SET colonne2='maj' WHERE colonne1='" & Req(1) & "'"
    DoCmd.RunSQL cSQL   'execution de la requete SQL
End If