Problème lecture dans ma BDD MySQL
Bonjour,
J'ai aujourd'hui un problème : j'ai aujourd'hui besoin de récupérer un id dans ma BDD à partir de l'adresse mail.
Si l'adresse mail existe alors je récupère l'id correspondant, sinon je crée un nouvel id correspondant à l'id MAX +1.
C'est cette seconde partie qui consitue mon problème. En effet, la requête ci-dessous me permet de bien récupérer mon id :
SELECT id_customer FROM customer WHERE email = '" & mail & "Mais j'ai constamment une erreur lorsque l'id n'existe pas.
Le problème vient de la requête, c'est pour cela que je me suis dit que le IF EXIST pourrait m'aider, mais je bloque sur ce problème..
Voici mon code dans l'état actuel des choses :
Sub LireDatacustomer()
Dim Rs As ADODB.Recordset
Dim Derligne As Integer, i As Integer
Dim Requete As String
Dim Col As Integer
Dim mail As String
Set Rs = New ADODB.Recordset
Call ConnectionDB
With Sheets("BasedeDonnees")
mail = Range("C2").Value
Requete = "IF EXIST (SELECT id_customer FROM customer WHERE email = '" & mail & "' Else 'NULL') "
If Requete <> "NULL" Then
Rs.Open Requete, oConnect
Range("F2").Value = Rs.Fields(0)
Rs.Close
Else
Requete = "SELECT MAX(id_customer) FROM customer"
Rs.Open Requete, oConnect
Range("F2").Value = Rs.Fields(0) + 1
Rs.Close
End If
End With
oConnect.Close
Set Rs = Nothing
End SubUne aide serait plus que bienvenue, merci par avance
Bonjour, un test sur le recordcount peut être?
Requete = "SELECT id_customer FROM customer WHERE email = '" & mail & "'"
Rs.Open Requete, oConnect
if Rs.recordcount=0 then
Requete = "SELECT MAX(id_customer) FROM customer"
Rs.Open Requete, oConnect
Range("F2").Value = Rs.Fields(0) + 1
Rs.Close
end ifMerci de ta réponse, cela ne résout malheureusement pas mon problème, je pense faire un INSERT IGNORE dans ma BDD comme ca je serai sûr qu'il y aura ce que je veux dans la BDD
J'ai fais différemment finalement c'était tout con, je met le code pour les intéressé
'Lire les données de la BDD (table customer (client)) OK
Sub LireDatacustomer()
Dim Rs As ADODB.Recordset
Dim Derligne As Integer, i As Integer
Dim Requete, Requete1 As String
Dim Col As Integer
Dim mail As String
Set Rs = New ADODB.Recordset
Call ConnectionDB
With Sheets("BasedeDonnees")
mail = Range("C2").Value
Requete1 = "SELECT COUNT(*) FROM customer WHERE email = '" & mail & "'"
Rs.Open Requete1, oConnect
If Rs.Fields(0) = 0 Then
Rs.Close
Requete = "SELECT MAX(id_customer) FROM customer"
Rs.Open Requete, oConnect
Range("F2").Value = Rs.Fields(0) + 1
Rs.Close
Else
Rs.Close
Requete = "SELECT id_customer FROM customer WHERE email = '" & mail & "'"
Rs.Open Requete, oConnect
Range("F2").Value = Rs.Fields(0)
Rs.Close
End If
End With
oConnect.Close
Set Rs = Nothing
End SubVoilà bon courage a tous