Suite utilisation mySQL dans Excel

Merci à H2SO4 pour son aide, j'ai pu accéder à ma base mySQL à partir d'EXCEL.

Il me reste cependant un problème : comment garder ma connexion persistante pendant tout le déroulement de mon applicatif et passer les valeurs de connexion du userForm principal vers les userForms secondaires

bonsoir,

définir les variables objet connection et recordsets en dehors des procédures et/ou comme public

Bonjour,

j'ai bien défini les variables à l'extérieur de mon userForm en variable Global :

Global conn As Object
Global enreg As Object

et la variable de connexion dans mon userForm initial

Private Sub UserForm_Initialize()

    Dim connexion As String

    Set conn = CreateObject("ADODB.Connection")
    Set rec = CreateObject("ADODB.Recordset")
    connexion = "DRIVER={MySQL ODBC 5.2 ANSI Driver};DATABASE=comptabilite;SERVER=localhost;UID=root; PWD= ; OPTION=16386"
    ' on ouvre la connexion
    conn.Open connexion

    Dim tableau() As String

    FM_ChoixCompte.Show

    Me.compteTraite = Sheets("ParmTrt").Range("B2").Value

End Sub

lorsque je fais appel à mon second userForm

Private Sub UserForm_Initialize()

    Dim req As String
    req = "SELECT ID_Param, Parm_Designation FROM parametrage WHERE  Parm_Identifiant = 'Compte'"
    ' envoi du SQL vers la connexion
    rec.Open req, conn

    Set f = r.Fields
    ncol = f.Count - 1 ' nombre de champs de la réponse
    i = 0
    Do Until r.EOF = True ' tant qu'il y a des lignes dans la réponse
        compte.AddItem
        cel = "A" + CStr(i + 2)
        compte.List(i, 0) = CStr(Range(cel).Value)
        compte.List(i, 0) = f.Item(0).Value
        cel = "B" + CStr(i + 2)
        compte.List(i, 1) = f.Item(1).Value
        i = i + 1
        r.Movenext
    Loop
    r.Close
    Set r = Nothing

    Me.compte.Text = ""

End Sub

j'affiche une erreur :

Erreur d'exécution : 424

Objet requis

et là ..............................................................................

Bonjour

tu définis "enreg" en global mais tu utilises "rec" et "r"

bonjour,

proposition de correction à tester

public conn As Object
public r As Object
Private Sub UserForm_Initialize()

    Dim connexion As String

    Set conn = CreateObject("ADODB.Connection")
    Set r = CreateObject("ADODB.Recordset")
    connexion = "DRIVER={MySQL ODBC 5.2 ANSI Driver};DATABASE=comptabilite;SERVER=localhost;UID=root; PWD= ; OPTION=16386"
    ' on ouvre la connexion
    conn.Open connexion

    Dim tableau() As String

    FM_ChoixCompte.Show

    Me.compteTraite = Sheets("ParmTrt").Range("B2").Value

End Sub
Private Sub UserForm_Initialize()

    Dim req As String
    req = "SELECT ID_Param, Parm_Designation FROM parametrage WHERE  Parm_Identifiant = 'Compte'"
    ' envoi du SQL vers la connexion
    r.Open req, conn

    Set f = r.Fields
    ncol = f.Count - 1 ' nombre de champs de la réponse
    i = 0
    Do Until r.EOF = True ' tant qu'il y a des lignes dans la réponse
        compte.AddItem
        cel = "A" + CStr(i + 2)
        compte.List(i, 0) = CStr(Range(cel).Value)
        compte.List(i, 0) = f.Item(0).Value
        cel = "B" + CStr(i + 2)
        compte.List(i, 1) = f.Item(1).Value
        i = i + 1
        r.Movenext
    Loop
    r.Close
    Set r = Nothing

    Me.compte.Text = ""

End Sub

Un grand merci à H2SO4 pour son aide.

Je pense qu' je devrais m'en sortir pour la suite.

Cordialement.

Bonjour à tous, plus particulièrement à H2SO4,

notre correspondance précédente m'a permis de gérer tous mes accès à ma base mySQL et me passer ainsi de l'utilisation d'une feuille Excel pour passer mes paramètres entre mes différents modules.

La connexion reste persistante dès lors que toutes les liaisons sont faite dans un module générale ou j'ai regroupé la totalité des accès à ma base : connexion "OPEN", lecture "SELECT", modification "UPDATE", insertion "INSERT", libération "CLOSE". Maintenant il me reste un tout petit problème :

comment récupérer l'ID d'une enregistrement à la suite de sa création

Merci pour vos réponses

Bonsoir,

as-tu essayé ceci ?

SELECT LAST_INSERT_ID()

Ou avais-je la tête

it's good

Encore un grand merci

Rechercher des sujets similaires à "suite utilisation mysql"