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 Sub

Une 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 if

Merci 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 Sub

Voilà bon courage a tous

Rechercher des sujets similaires à "probleme lecture bdd mysql"