Condition requete SQL

nitro81 Messages postés 23 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 17 avril 2008 - 10 avril 2008 à 09:21
nitro81 Messages postés 23 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 17 avril 2008 - 10 avril 2008 à 11:26
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 avril 2008 à 09:25
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
0
nitro81 Messages postés 23 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 17 avril 2008
10 avril 2008 à 09:33
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 ?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 avril 2008 à 09:52
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
0
nitro81 Messages postés 23 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 17 avril 2008
10 avril 2008 à 10:37
Merci pour ton aide. Ca marche !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nitro81 Messages postés 23 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 17 avril 2008
10 avril 2008 à 11:26
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
0
Rejoignez-nous