Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suppression table externe ODBC suite

21 réponses
Avatar
FFO
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

10 réponses

1 2 3
Avatar
G.Genier
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
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






Avatar
FFO
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" a écrit dans le message de
news:
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











Avatar
G.Genier
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
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" a écrit dans le message de
news:
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













Avatar
FFO
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" a écrit dans le message de
news:
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" a écrit dans le message de
news:
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


















Avatar
G.Genier
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
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" a écrit dans le message de
news:
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" a écrit dans le message de
news:
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




















Avatar
FFO
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 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" a écrit dans le message de
news:
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" a écrit dans le message de
news:
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













Avatar
G.Genier
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
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" a écrit dans le message de
news:
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" a écrit dans le message de
news:
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















Avatar
FFO
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
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" a écrit dans le message de
news:
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" a écrit dans le message de
news:
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
















Avatar
G.Genier
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
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
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" a écrit dans le message de
news:
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" a écrit dans le
message de








news:
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


















Avatar
FFO
toujours plus fort !!! la bète est en passe d'être vaincu !!!!
Net progré
Je mexplique :
J'ai coché selon tes indications rubrique Référence le choix "Microsoft DAO
3.5 Object Library"
Or un 2° choix similaire était possible mais échapé à ma vigileance
intitullé "Microsoft DAO 3.6 Object Library"
Rectification faite et oh! miracle la connexion a du s'effectuer car si bug
il ya il se produit sur la 2° partie du code paragraphe "Function
exportTableToOracle()"
Ligne : fctConnection nomBaseODBC message erreur "incompatibilité de type"

Un peu maigre comme information mais tu devrais certainement pouvoir en
tirer profit

Courage Courage le bout du tunnel n'est pas loin




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
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
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" a écrit dans le message de
news:
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



















1 2 3