Select et update (ODBC) -> erreur 3146

CptGoodNight Messages postés 3 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 10 juillet 2002 - 8 juil. 2002 à 16:19
MegaMIND243 Messages postés 23 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 24 juillet 2012 - 1 mai 2012 à 10:43
Petit soucis pour faire co-exister ces deux types de fonction dans une macro VBA qui attaque une base Oracle:

J'utilise ma connexion odbc pour recuperer un objet Recordset -> c'est mon ordre "Select"

Lorsque plus loin, je veux executer un ordre "Update" via un second objet QueryDef, j'ai une erreur '3146' : ODBC -- l'appel a echoue

Séparemment, les codes fonctionnent, mais ensemble, j'ai l'impression que les ressources ODBC ne se libère pas, ou ne s'initialise pas correctement.

Voici à quoi ressemble mon code :

Dim vSource As String, strSelect As String, strMAJ As String
Dim WkODBC As Workspace
Dim ConPoint As Connection

vSource = "ODBC;DRIVER={Oracle73 Ver 2.5};UID=RSKOB;PWD=RSKOB;DBQ=ORAXR06;ASY=OFF;"

DBEngine.DefaultType = dbUseODBC

Set WkODBC = CreateWorkspace("", "", "", dbUseODBC)

Set ConPoint = WkODBC.OpenConnection("", , False, vSource)

...
strSelect "select cours from historique where sicovam " + CStr(Sicovam) _
+ " and jour = '" + strJour + "'"

Set Qdf1 = ConPoint.CreateQueryDef("", strSelect)
Set Qdf2 = ConPoint.CreateQueryDef("")

Set rstResultat = Qdf1.OpenRecordset()
...
rstResultat.Close
Qdf1.Close
strMAJ "update ccbp_historique set cours " + CStr(Cours) _ + " where date_cours '" + strJour + "' and sicovam " + CStr(Sicovam)

With Qdf2
.Prepare = dbQUnprepare
.Sql = strMAJ
.Execute
End With

Le plantage a lieu a la phase Execute

4 réponses

cs_processus Messages postés 360 Date d'inscription vendredi 24 août 2001 Statut Membre Dernière intervention 9 juillet 2008 3
8 juil. 2002 à 16:45
Pq tu fait un QueryDef sur un update ? Tu n'attend pas de retour ?

Fait un simple TaConnexion.Execute(TaRequeteUpdate)

==============
Site Web de JDPROG
Présentation de MP3 Index
0
CptGoodNight Messages postés 3 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 10 juillet 2002
8 juil. 2002 à 17:03
Ok j'applique mon ordre à un objet Connexion

Ca donne :

ConPoint.Execute strMAJ

Mais ça ne résoud pas mon problème, car la même erreur ressort.
0
CptGoodNight Messages postés 3 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 10 juillet 2002
10 juil. 2002 à 12:20
Je me réponds à moi-même.

Il semblerait que ce soit dû au format de table. En clair, la syntaxe purement sql d'une des requêtes était fausse.

En sql, j'aurai récupéré une erreur type : "format invalide". Mais en VB, elle ressort comme une erreur 3146, ce qui a faussé mon jugement.
0
MegaMIND243 Messages postés 23 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 24 juillet 2012
1 mai 2012 à 10:43
bonjour,

j'ai téléchargé mySql Driver 3.51 pour pouvoir exporter ma base des données access vers mysql. et lors de l'exportation j'ai l'erreur 1153 Paquet plus grand que 'max_allowed_packet' reçu.

ma base des données access contient des OBJET OLE (des images) il m'importe la table mais pas les données comment dois je faire?

et aussi mySql ODBC me permet pas d'utliser une base de données créer sur PHPadmin... comment je peux faire pour selectionner une dataset sur la fenetre mySql driver parce qu'il me donne juste la base test et information schema.

merci
0
Rejoignez-nous