Bonjour tout le monde,
Mon objectif est, via ODBC, d'utiliser un applicatif ACCESS avec une BDD MySQL en local.
Alors j'ai tout bien lié mes tables et me suis connecté à ma base MySQL via ODBC avec les paramètres suivants :
Mais, quand je souhaite ajouter un enregistrement dans ma base via le code VBA suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DatabaseName = "inscriptions" DatabaseUsername = "inscription" DatabasePassword = "inscription" DatabaseServer = "localhost" tdfcurrent.Connect = "ODBC;DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & DatabaseServer & ";" & _ " DATABASE=" & DatabaseName & ";UID=" & DatabaseUsername & ";PWD=" & DatabasePassword & ";Option=2051;FLAG_AUTO_IS_NULL = 8388608;"
qui me génère et exécute 2 requêtes SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim rsins As New ADODB.Recordset rsins.Open "INSCRIPTION", CurrentProject.Connection, adOpenDynamic, adLockPessimistic rsins.AddNew rsins!ins_enf_no = Form![$famille_enfant]!enf_no rsins!ins_per = 1 rsins.Save
où `ins_no` est de type AUTO INCREMENT NOT NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO `inscription` (`ins_enf_no`,`ins_per`) VALUES (42346,1) SELECT * FROM `inscription` WHERE `ins_no` IS NULL
La 2e requête signifie qu'il cherche la dernière "inscription" insérée, soit celle de la 1e requête. Mais la 2e requête ne fonctionne pas car MyODBC met, au démarrage, la variable sql_auto_is_null à 0.
Même quand je force la valeur de sql_auto_is_null à 1 via VBA :
La requête ne fonctionne pas et Access plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim sql As String Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & DatabaseServer & ";" & _"DATABASE=" & DatabaseName & ";UID=" & DatabaseUsername & ";PWD=" & DatabasePassword &";OPTION=2051;FLAG_AUTO_IS_NULL = 8388608;" cn.Open sql = "SET sql_auto_is_null=1" Set rs = cn.Execute(sql)
Si quelqu'un a déjà eu un soucis de ce genre avec une requête du type "WHERE auto_inc IS NULL" et qu'il a résolu le problème, je serai super content de l'aide qu'il pourrait m'apporter.
Merci à tous
Partager