Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Bonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
etde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Bonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Bonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne bug
pas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une table
etde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
J'ai l'impression compte tenu d'une certaine complexité de cette opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce
qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une
table
etde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
J'ai l'impression compte tenu d'une certaine complexité de cette opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce
qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une
table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
J'ai l'impression compte tenu d'une certaine complexité de cette opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce
qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une
table
etde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans "Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine", je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette opération
etde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
jene peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
lecode (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
desupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bugpas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce
quin'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
baseORACLE dans laquelle je souhaite que l'on analyse la présence d'une
tableetde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans "Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine", je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de cette opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
le
code (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base etc...) ce
qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
base
ORACLE dans laquelle je souhaite que l'on analyse la présence d'une
table
et
de la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans "Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine", je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette opération
etde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate (mauvais
signe) augurant un message pas trés sympathique de la part de l'outil que
jene peux connaitre pour l'instant tant que le premier n'est pas résolu :
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait donc
lecode (à juste raison) considère que la table n'existe pas, donc passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle, se
connecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base (oubli
desupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout", tu
feras: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier si la
table est bien supprimer d'Oracle est pas simplement d Access, dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de la
table
Par contre si la table est présente malgrés l'exécution du code qui ne
bugpas l'export tombe en échec car la table créé au paravant n'est pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base etc...) ce
quin'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du code
Je pense à mon avis que le code VBA n'execute pas son action sur la
baseORACLE dans laquelle je souhaite que l'on analyse la présence d'une
tableetde la supprimer si tel est le cas avant un nouvel export de celle-ci
Merci pour ton analyse et une proposition de solution
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opération
etde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de l'outil
que
jene peux connaitre pour l'instant tant que le premier n'est pas résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donc
lecode (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
se
connecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une
table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
desupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression
avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tu
feras: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si la
table est bien supprimer d'Oracle est pas simplement d Access,
dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de
la
table
Par contre si la table est présente malgrés l'exécution du code
qui ne
bugpas l'export tombe en échec car la table créé au paravant n'est
pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base
etc...) ce
quin'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du
code
Je pense à mon avis que le code VBA n'execute pas son action sur
la
baseORACLE dans laquelle je souhaite que l'on analyse la présence
d'une
tableetde la supprimer si tel est le cas avant un nouvel export de
celle-ci
Merci pour ton analyse et une proposition de solution
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donc
le
code (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export d'une
table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression
avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si la
table est bien supprimer d'Oracle est pas simplement d Access,
dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de
la
table
Par contre si la table est présente malgrés l'exécution du code
qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est
pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informations
concernant l'adresse de la base Oracle (Type base, nom base
etc...) ce
qui
n'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du
code
Je pense à mon avis que le code VBA n'execute pas son action sur
la
base
ORACLE dans laquelle je souhaite que l'on analyse la présence
d'une
table
et
de la supprimer si tel est le cas avant un nouvel export de
celle-ci
Merci pour ton analyse et une proposition de solution
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opération
etde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de l'outil
que
jene peux connaitre pour l'instant tant que le premier n'est pas résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donc
lecode (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
se
connecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une
table
versune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
desupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression
avant le
nouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tu
feras: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si la
table est bien supprimer d'Oracle est pas simplement d Access,
dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
action
spéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de
la
table
Par contre si la table est présente malgrés l'exécution du code
qui ne
bugpas l'export tombe en échec car la table créé au paravant n'est
pas
suppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
une
actionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
d'informationsconcernant l'adresse de la base Oracle (Type base, nom base
etc...) ce
quin'est pas le cas dans ton code pour supprimer l'éventuelle table
N'est ce pas une lacune qui expliquerait le dysfonctionnement du
code
Je pense à mon avis que le code VBA n'execute pas son action sur
la
baseORACLE dans laquelle je souhaite que l'on analyse la présence
d'une
tableetde la supprimer si tel est le cas avant un nouvel export de
celle-ci
Merci pour ton analyse et une proposition de solution
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
desyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as daoDBEngine",
jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de l'outil
quejene peux connaitre pour l'instant tant que le premier n'est pas résolu
:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
seconnecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une
tableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tuferas: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si latable est bien supprimer d'Oracle est pas simplement d Access,
dans cecas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faireavec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
actionspéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de
latable
Par contre si la table est présente malgrés l'exécution du code
qui nebugpas l'export tombe en échec car la table créé au paravant n'est
passuppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
uneactionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:815014CB-B7B2-4EA2-8DC0-710FFB9688D7@microsoft.com...
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donc
le
code (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
se
connecter à la base et relancer la requete "Select..." sur la bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export d'une
table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
de
supprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présence
de cette table et dans cette éventualité opère sa suppression
avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si la
table est bien supprimer d'Oracle est pas simplement d Access,
dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sous
Oracle tout fonctionne correctement éxécution du code et export de
la
table
Par contre si la table est présente malgrés l'exécution du code
qui ne
bug
pas l'export tombe en échec car la table créé au paravant n'est
pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation erreur
desyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as daoDBEngine",
jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de l'outil
quejene peux connaitre pour l'instant tant que le premier n'est pas résolu
:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en fait
donclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur Oracle,
seconnecter à la base et relancer la requete "Select..." sur la bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire ;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export d'une
tableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en échec
Est-il possible d'insérer dans la Macro une action qui vérifie la
présencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros pour
le'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete "maRequeteAjout",
tuferas: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra vérifier
si latable est bien supprimer d'Oracle est pas simplement d Access,
dans cecas, il nous faudra le nom du Driver ODBC et voir ce qu'on peut
faireavec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
actionspéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en place
sousOracle tout fonctionne correctement éxécution du code et export de
latable
Par contre si la table est présente malgrés l'exécution du code
qui nebugpas l'export tombe en échec car la table créé au paravant n'est
passuppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export via
uneactionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
sur une seule ligne !
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
desyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC)
strConnect > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outil
quejene peux connaitre pour l'instant tant que le premier n'est pas
résolu
:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en
fait
donclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
seconnecter à la base et relancer la requete "Select..." sur la
bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'une
tableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
la
présencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour
le'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete
"maRequeteAjout",
tuferas: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra
vérifier
si latable est bien supprimer d'Oracle est pas simplement d Access,
dans cecas, il nous faudra le nom du Driver ODBC et voir ce qu'on
peut
faireavec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
actionspéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en
place
sousOracle tout fonctionne correctement éxécution du code et
export de
latable
Par contre si la table est présente malgrés l'exécution du
code
qui nebugpas l'export tombe en échec car la table créé au paravant
n'est
passuppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export
via
uneactionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
sur une seule ligne !
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:815014CB-B7B2-4EA2-8DC0-710FFB9688D7@microsoft.com...
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC)
strConnect > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de
l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas
résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en
fait
donc
le
code (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
se
connecter à la base et relancer la requete "Select..." sur la
bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export
d'une
table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
de
supprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
la
présence
de cette table et dans cette éventualité opère sa suppression
avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete
"maRequeteAjout",
tu
feras
: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra
vérifier
si la
table est bien supprimer d'Oracle est pas simplement d Access,
dans ce
cas, il nous faudra le nom du Driver ODBC et voir ce qu'on
peut
faire
avec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
action
spéciphique de ma
Macro et non par une requète
'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment
'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en
place
sous
Oracle tout fonctionne correctement éxécution du code et
export de
la
table
Par contre si la table est présente malgrés l'exécution du
code
qui ne
bug
pas l'export tombe en échec car la table créé au paravant
n'est
pas
supprimée
d'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export
via
une
action
de la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
sur une seule ligne !
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
desyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC)
strConnect > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outil
quejene peux connaitre pour l'instant tant que le premier n'est pas
résolu
:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en
fait
donclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
seconnecter à la base et relancer la requete "Select..." sur la
bonne
tablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'une
tableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
la
présencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour
le'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
bds.execute "maRequeteAjout"
End Function
Dans ta macro au lieu de faire : OuvrirRequete
"maRequeteAjout",
tuferas: ExecuterCode et tu iras chercher cette fonction.
NB : une fois que tu auras réussi à faire ça, il faudra
vérifier
si latable est bien supprimer d'Oracle est pas simplement d Access,
dans cecas, il nous faudra le nom du Driver ODBC et voir ce qu'on
peut
faireavec.
Ce que j'ai réalisé et obtenu :
Merci beaucoup de m'accorder un peu de ton temps pour m'aider
J'ai bien créé un module dans lequel j'ai inséré ton code VBA
Je l'ai quelque peu modifié comme suit :
Set bds=currentdb()chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
Modification :'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
'bds.execute "maRequeteAjout"
je ne donne pas l'instruction d'éxécuter la requète
"maRequeteAjout" car l'export vers Oracle est réalisé par une
actionspéciphique de ma
Macro et non par une requète'On a finit on sort
Exit Function
noDropTable:
Modification :
la même que précédemment'La table Oracle n'existait pas donc on ajoute basiquement
'bds.execute "maRequeteAjout"
End Function
Aprés cette adaptation si la table à créer n'est pas déjà en
place
sousOracle tout fonctionne correctement éxécution du code et
export de
latable
Par contre si la table est présente malgrés l'exécution du
code
qui nebugpas l'export tombe en échec car la table créé au paravant
n'est
passuppriméed'Oracle
L'instruction "DROP TABLE" n'est pas suivi d'effet
Une autre question se pose à moi lorsque je commande l'export
via
uneactionde la Macro je dois
décliner sur des champs prévus à cet effet un certain nombre
D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "", dbUseODBC) ->
sur une seule ligne !
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -sur une seule ligne !
Set daoDatabase > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre deux
lignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",dbUseODBC)
strConnect > > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en
faitdonclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur la
bonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprimechSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'unetableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
laprésencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pourle'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "", dbUseODBC) ->
sur une seule ligne !
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -
sur une seule ligne !
Set daoDatabase > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre deux
lignes ex :
je commence ici _
et je termine la
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:1D3E8590-1EED-4CBB-9E17-C8414A8CDABB@microsoft.com...
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:815014CB-B7B2-4EA2-8DC0-710FFB9688D7@microsoft.com...
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
version
Deuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC)
strConnect > > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de
l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas
résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais en
fait
donc
le
code (à juste raison) considère que la table n'existe pas, donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
se
connecter à la base et relancer la requete "Select..." sur la
bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export
d'une
table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oubli
de
supprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
la
présence
de cette table et dans cette éventualité opère sa suppression
avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "", dbUseODBC) ->
sur une seule ligne !
strConnect > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -sur une seule ligne !
Set daoDatabase > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre deux
lignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe chaque
ligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je n'avais
pas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",dbUseODBC)
strConnect > > > > > "ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC, false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais en
faitdonclecode (à juste raison) considère que la table n'existe pas, donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur la
bonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprimechSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'unetableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui vérifie
laprésencede cette table et dans cette éventualité opère sa suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe exacte)
'Ici tu appelle t'as requete que tu utilises dans tes macros
pourle'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->
sur une seule ligne !
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -
sur une seule ligne !
Set daoDatabase > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deux
lignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaque
ligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avais
pas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin",
"",dbUseODBC)
strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de
cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access
via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais
en
faitdonclecode (à juste raison) considère que la table n'existe pas,
donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur
la
bonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
.OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprimechSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute
basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le
message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'unetableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette
base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui
vérifie
laprésencede cette table et dans cette éventualité opère sa
suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pourle'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???
D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->
sur une seule ligne !
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -
sur une seule ligne !
Set daoDatabase > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deux
lignes ex :
je commence ici _
et je termine la
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:1D3E8590-1EED-4CBB-9E17-C8414A8CDABB@microsoft.com...
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:815014CB-B7B2-4EA2-8DC0-710FFB9688D7@microsoft.com...
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
de
version
Deuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin",
"",
dbUseODBC)
strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de
cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de
l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas
résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access
via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais
en
fait
donc
le
code (à juste raison) considère que la table n'existe pas,
donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
se
connecter à la base et relancer la requete "Select..." sur
la
bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
.OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pour le
'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute
basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" <FFO@discussions.microsoft.com> a écrit dans le
message de
news:22DE9C7A-61FE-4B1B-9F91-B9BB65879ED7@microsoft.com...
Rappel :
l'échéance de Macros la dernière action commande l'export
d'une
table
vers
une base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette
base
(oubli
de
supprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui
vérifie
la
présence
de cette table et dans cette éventualité opère sa
suppression
avant le
nouvel
export
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pour
le
'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->
sur une seule ligne !
strConnect > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -
sur une seule ligne !
Set daoDatabase > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deux
lignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaque
ligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si je
peuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
de
versionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avais
pas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin",
"",dbUseODBC)
strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de
cette
opérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
un
simplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate
(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
les
paramètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
est
réaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access
via
ODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais
en
faitdonclecode (à juste raison) considère que la table n'existe pas,
donc
passetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur
la
bonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
.OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprimechSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pour le'tranfert
daoDatabase.execute "maMacroTransfert"
'On a finit on sort
Exit Function
noDropTable:
'La table Oracle n'existait pas donc on ajoute
basiquement
daoDatabase.execute "maMacroTransfert"
End Function
Quelque chose dans ce style ?
"FFO" a écrit dans le
message de
news:Rappel :
l'échéance de Macros la dernière action commande l'export
d'unetableversune base ORACLE via ODBC
Or si une table du même nom est déjà présente dans cette
base
(oublidesupprimer celle générée antérieurement) l'export tombe en
échec
Est-il possible d'insérer dans la Macro une action qui
vérifie
laprésencede cette table et dans cette éventualité opère sa
suppression
avant lenouvelexport
Proposition de G genier :
Va dans le section module, fais nouveau.
une fois dans l'éditeur vba, tu tapes :
Function exportTableToOracle()
Set bds=currentdb()
chSQL = "SELECT * FROM tableOracle;"
on error goto noDropTable
bds.execute chSQL
'Si on est ici c'est que le SELECT à marcher donc on
supprime
chSQL = "DROP TABLE tableOracle;" (à voir la syntaxe
exacte)
'Ici tu appelle t'as requete que tu utilises dans tes
macros
pourle'tranfert
bds.execute "maRequeteAjout"
'On a finit on sort
Aaaahhh..., ca me paraissait tellement logique, dsl de pas y avoir pensé
avant :p
Bon, dans Outils->Référence, vérifie que l'autre DAO Object est bien coché.
Du coup en va en profiter pour vérifier la déclaration des variables
globales :
Ce code doit etre tout en haut cette ligne : Option Compare Database, doit
normalement etre mise par défaut.
Option Compare Database
Private daoConnection As DAO.Workspace --> j'ai changé le type, peut etre
que l'erreur vient de la
Private daoDatabase As DAO.Database
"FFO" a écrit dans le message de
news:On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
memet aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->sur une seule ligne !
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -sur une seule ligne !
Set daoDatabase > > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deuxlignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
detrouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV":erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaqueligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si jepeuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
deversionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avaispas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin","",dbUseODBC)
strConnect > > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de
cetteopérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
unsimplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
lesparamètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
estréaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access
viaODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais
enfaitdonclecode (à juste raison) considère que la table n'existe pas,
doncpassetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur
labonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
..OpenDatabase(nomdBaseODBC,false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
Aaaahhh..., ca me paraissait tellement logique, dsl de pas y avoir pensé
avant :p
Bon, dans Outils->Référence, vérifie que l'autre DAO Object est bien coché.
Du coup en va en profiter pour vérifier la déclaration des variables
globales :
Ce code doit etre tout en haut cette ligne : Option Compare Database, doit
normalement etre mise par défaut.
Option Compare Database
Private daoConnection As DAO.Workspace --> j'ai changé le type, peut etre
que l'erreur vient de la
Private daoDatabase As DAO.Database
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:EBA9B138-0421-4193-BCED-D207FB648704@microsoft.com...
On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???
D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
me
met aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->
sur une seule ligne !
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -
sur une seule ligne !
Set daoDatabase > > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deux
lignes ex :
je commence ici _
et je termine la
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:1D3E8590-1EED-4CBB-9E17-C8414A8CDABB@microsoft.com...
Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
de
trouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
:
erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faire
Je sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:815014CB-B7B2-4EA2-8DC0-710FFB9688D7@microsoft.com...
nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilation
type défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",
dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"
Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreur
de
syntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaque
ligne
en erreur en les faisant précéder par une côte avant de lancer une
nouvelle
compilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de fée
Non tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si je
peux
aider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",
le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
de
version
Deuxième point, la ligne est : "Private daoConnection as
daoDBEngine",
je
pense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avais
pas.
On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin",
"",
dbUseODBC)
strConnect > > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"
'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de
news:558D5245-93A7-4C99-ACBA-788F9AA5CAF6@microsoft.com...
J'ai l'impression compte tenu d'une certaine complexité de
cette
opération
et
de mon maigre savoir en ce domaine que je suis sur le point
d'occuper
honteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
un
simple
copier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusement
une fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate
(mauvais
signe) augurant un message pas trés sympathique de la part de
l'outil
que
je
ne peux connaitre pour l'instant tant que le premier n'est pas
résolu
:
Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
les
paramètre
de ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
est
réalisé
ainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
code
Tu voudras bien m'indiquer l'art et la manière
Mille fois Merci
Bonjour,
Je pensais que la table Oracle était une table liée à Access
via
ODBC.
Donc évidement la requête "SELECT..." ne fonctionne jamais
en
fait
donc
le
code (à juste raison) considère que la table n'existe pas,
donc
passe
toujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,
se
connecter à la base et relancer la requete "Select..." sur
la
bonne
table
cette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire
;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
..OpenDatabase(nomdBaseODBC,
false,
false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL
Aaaahhh..., ca me paraissait tellement logique, dsl de pas y avoir pensé
avant :p
Bon, dans Outils->Référence, vérifie que l'autre DAO Object est bien coché.
Du coup en va en profiter pour vérifier la déclaration des variables
globales :
Ce code doit etre tout en haut cette ligne : Option Compare Database, doit
normalement etre mise par défaut.
Option Compare Database
Private daoConnection As DAO.Workspace --> j'ai changé le type, peut etre
que l'erreur vient de la
Private daoDatabase As DAO.Database
"FFO" a écrit dans le message de
news:On avance on avance !!!!
effectivement tu as vu juste en rectifiant la disposition des lignes la
compilation à appréciée ne relevant plus d'erreur
Les ennuies ne sont pas fini pour autant car à l'exucution du code via la
macro access rouspète encore (il falait bien que son mauvais caractère
s'exprime encore !!!) avec comme message d'erreur :
Ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) message erreur "un composant ActiveX ne peut pas créer l'objet"
Qu'en penses tu ???D'accord :)
Ce qui est étrange c'est que j'ai sous les yeux ce même code et qu il ne
memet aucune erreur de syntaxe :/
Attention, j'ai peur que les lignes ne soient coupés.
Dans ce cas il faut mettre comme ça :
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) ->sur une seule ligne !
strConnect > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV" -sur une seule ligne !
Set daoDatabase > > > daoConnection.OpenConnection("LaConnexion",dbDriverNoPrompt, False,
strConnect) -> sur une seule ligne !
Si tu veux mettre sur deux lignes il faut utiliser le signes "_" entre
deuxlignes ex :
je commence ici _
et je termine la
"FFO" a écrit dans le message de
news:Je tiens d'abord à te rassurer aucune ironie à ton égard trop content
detrouver une main secourable toute dévouée à ma cause
Non juste un brin d'humour devant cette adversité informatique pour
travailler de concert en toute décontraction alors que les évennements
s'acharnant contre nous pourrait provoquer un peu de crispation
Voici donc le résultat du nouveau code :
ligne Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC) : erreur de syntaxe
Ligne Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) : erreur de syntaxe
Ligne strConnect > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV":erreur de syntaxe
Celà semble plus sympathique mais il reste malgré tout du chemin à
faireJe sens comme de l'ironie dans tes messages...
Essais cela s'il te plait :
Private daoConnection As DAO.Workspace
Private daoDatabase As DAO.Database
Private Function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect", "Admin", "",
dbUseODBC)
strConnect > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = daoConnection.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
End Function
Avant d'avancer plus tentons de nous connecter.
"FFO" a écrit dans le message de
news:nouveau paramétrage "Microsoft DAO XX Object Library" Ok
Ligne : Private daoConnection As daoDBEngine message erreur de
compilationtype défini par l'utilisateur non défini
Ligne : Set daoConnection = CreateWorkspace("ODBCDirect", "Admin",
"",dbUseODBC) message erreur de compilation erreur de syntaxe
Ligne : strConnect > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=P27R002-PCLV"Message erreur compilation attendu numéro de ligne ou étiquette ou
instruction ou fin d'instruction
Ligne : Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect) message erreur de compilation
erreurdesyntaxe
Je te précise que pour obtenir les différent message j'inhibe
chaqueligneen erreur en les faisant précéder par une côte avant de lancer une
nouvellecompilation
C'est grave docteur ????
L'enfant se présente mal mais les miracles celà existe !!!!
Merci pour tes doigts de féeNon tu n'empiètes pas sur mon temps ;), je le fais par plaisir
si jepeuxaider.
Permier point, j'ai omis de t'indiquer de cocher dans
"Outils->Référence",le choix : "Microsoft DAO XX Object Library" ou XX est un numéro
deversionDeuxième point, la ligne est : "Private daoConnection as
daoDBEngine",jepense que le "F" devant le "P" est un soucis de copier-coller.
On va modifier la connection avec ces informations que je
n'avaispas.On va changer la fonction
Private function fctConnection()
Set daoConnection = CreateWorkspace("ODBCDirect",
"Admin","",dbUseODBC)
strConnect > > > > > > >
"ODBC;DSN=P27R002-PCLV;UID=LeLogin;PWD=LeMotDePasse;DATABASE=LaBase"'changer LeLogin, LeMotDePasse et LaBase
'Ouvrir une connexion
Set daoDatabase = wrk.OpenConnection("LaConnexion",
dbDriverNoPrompt, False, strConnect)
end function
"FFO" a écrit dans le message de
news:J'ai l'impression compte tenu d'une certaine complexité de
cetteopérationetde mon maigre savoir en ce domaine que je suis sur le point
d'occuperhonteusement ton précieux temps
J'ose malgré tout abuser et te rendre compte du résultat aprés
unsimplecopier coler de ton code :
Access rouspète sur la première ligne prétextant qui l'attend
fiévreusementune fin d'instruction en sélectionnant "as" :
FPrivate daoConnection as daoDBEngine
Forte inquiètude sur une des lignes suivantes d'un rouge
écarlate(mauvaissigne) augurant un message pas trés sympathique de la part de
l'outilquejene peux connaitre pour l'instant tant que le premier n'est pas
résolu:Set daoDatabase = daoConnection .OpenDatabase(nomdBaseODBC,
false,false, "ODBC;")
Je dois trés certainement à un endroit ou à un autre décliner
lesparamètrede ma base ORACLE : où et de quelle manière ????
A l'export qui fonctionne admirablement bien le paramètrage
estréaliséainsi :
Action : TransférerBase
Type transfert : Exportation
Type base : Base de données ODBC
Nom base : ODBC;DSN=P27R002-PCLV;PWD="mot de passe"
Type objet : Table
Source : "nom de la table sous access"
Destination : "nom de la table donné sous ORACLE"
Structure seulement : Non
Un certain nombre de ces informations doivent paraitre dans le
codeTu voudras bien m'indiquer l'art et la manière
Mille fois MerciBonjour,
Je pensais que la table Oracle était une table liée à Access
viaODBC.Donc évidement la requête "SELECT..." ne fonctionne jamais
enfaitdonclecode (à juste raison) considère que la table n'existe pas,
doncpassetoujours par la même chemin.
Donc c'est simple, on va créer une connection sur le serveur
Oracle,seconnecter à la base et relancer la requete "Select..." sur
labonnetablecette fois.
Actioooon (comme dirait une célèbre chanteuse si on peut
dire;))
Private daoConnection as daoDBEngine
Private daoDatabase as DAO.Database
Private Function fctConnection(nomdBaseODBC)
Set daoConnection =new dao.dbengine
Set daoDatabase = daoConnection
..OpenDatabase(nomdBaseODBC,false,false, "ODBC;")
End function
Private fctFermeture()
daoDatabase .close
Set daoDatabase =nothing
Set daoConnection =nothing
end function
Function exportTableToOracle()
chSQL = "SELECT * FROM tableOracle;"
fctConnection nomBaseODBC
on error goto noDropTable
daoDatabase.execute chSQL