Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3049 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ODBC

n°561862
gar6more74
Posté le 07-11-2003 à 16:21:46  profilanswer
 

Salut
 
J?ai developpé un module qui se connecte à une base access  dans un espace Microsoft Jet.
La connection s?etablit de la facon suivante :
 
Set Wrkjet = CreateWorkspace("", "Admin", "", dbUseJet)
Set GlobalDB = Wrkjet.OpenDatabase(Cheminbase & "/" & Nombase)
 
Je souhaiterais maintenant travailler avec une base MySQL.
 
J?ai donc utilisé le code suivant pour travailler dans un espace ODBC :
 
Set Wrkjet = CreateWorkspace("", "Admin", "", dbUseODBC)
 Set GlobalDB = Wrkjet.OpenDatabase(database, _
        dbDriverNoPrompt, , _
        "ODBC;DATABASE=" & database & ";UID=" & UID & ";PWD=;DSN=" & DSN & "" )
 
J?arrive bien à me connecter à la base et à executer des requètes mais j?ai quelques problèmes. J?arrive à les contourner mais malheureusement, il faut que je modifie le code. Je voulais savoir si il y avait pas un autre moyen.
 
 
Je debute dans le domaine et j?espère que vous pourrez m?aider :
 
 
1°/ J?utilisait la propriété Recordcount pour savoir si la requete avait des resultats or depuis que j?utilise la liaison odbc, Recordcount vaut toujours ?1. Est ce que c?est normal ?
 
2°/ Avec Microsoft Jet, les requetes de MAJ pouvait  se faire de cette  facon :
 
Set Rec=GlobalDB.openRecordset(«Table »)
Rec.Edit
Rec!Champs1=val1
Rec !Champs2=Val2
Rec.update
Rec.close
 
Avec ODBC, j?ai une erreur du type l?objet n?est pas disponible en Ecriture.
Je dois faire de cette facon :
 
Set Rec=GlobalDB.openRecordset(«Update Table Set ?? »)
 
merci

mood
Publicité
Posté le 07-11-2003 à 16:21:46  profilanswer
 

n°563000
gar6more74
Posté le 10-11-2003 à 09:04:40  profilanswer
 

Pas d'idée ???

n°563036
drasche
Posté le 10-11-2003 à 10:39:14  profilanswer
 

j'ai aucune expérience Jet/ODBC et je serais plutôt pour l'emploi d'ADO qui est la seule API qui va survivre à long terme (tu emploies DAO qui est spécifique Access mais qui est progressivement abandonné depuis Access 2000). Le portage n'est pas très difficile car DAO et ADO se ressemblent pas mal au point de vue interface (c'est ce qui se cache derrière qui diffère un peu)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°563206
gar6more74
Posté le 10-11-2003 à 14:22:23  profilanswer
 

Merci pour les infos.

n°563278
gar6more74
Posté le 10-11-2003 à 16:04:57  profilanswer
 

J'ai trouvé quelque chose sur un forum concernant l'eereur avec les edit (erreur 3027 "Mise à jour impossible. La base de données ou l'objet est en lecture seule." ) : . L'erreur pourrait venir d'un problème de configuration de la source ODBC. Est ce qu'il y a une option à cocher ou quelque chose à mettre pour lui indiquer que la base est en lecture/ecriture

n°563336
drasche
Posté le 10-11-2003 à 17:36:45  profilanswer
 

Bon vu que t'arrives à lancer un update en SQL, c'est pas un problème de source ODBC ni de connexion, plutôt la manière dont tu ouvres ton recordset.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°565188
minours666
Posté le 12-11-2003 à 19:23:22  profilanswer
 

ton recordset n'est pas en read only par hasard ?

n°565574
gar6more74
Posté le 13-11-2003 à 09:07:37  profilanswer
 

Si je met :  
Set rs = conn.OpenRecordset("my_dao", dbOpenDynamic, dbExecDirect, dbOptimistic)
ca me met encore l'erreur. Je pense pas que c'est ca.
Merci quand meme.

n°565743
dalcap
Posté le 13-11-2003 à 12:39:12  profilanswer
 

Bonjour,
 
je pencherais pour la manière dont tu attaques la base. Ta chaine de connexion ne contient pas de driver spécifique pour parler à la base (style "MS Access driver" ). Je ne sais pas si pour MySQL ca existe...
 
Par contre, j'ai une petite expérience comme ça avec une Base de Données à la c.. dont je n'avais pas le driver pour ouvrir en ADO. ca me faisait la même erreur -1 sur l'utilisation de recordcount. c'est en modifiant ma chaine de connexion que j'avais résolu le problème.
 
ça t'aidera peut-être...
 
bon courage

n°565908
gar6more74
Posté le 13-11-2003 à 15:20:06  profilanswer
 

Merci pour votre aide.
J'ai enlevé le dbUseODBC au moment de la création du Workspace et ca marche ! Enfin presque.
Je fais des ecritures et certaines fois ca plante et j'ai le message : ODBC L'appel a echoué. Err 3146
Je sais pas pourquoi.Si vous comprenez...

mood
Publicité
Posté le 13-11-2003 à 15:20:06  profilanswer
 

n°565926
dalcap
Posté le 13-11-2003 à 16:02:21  profilanswer
 

tu pourrais activer la trace du connecteur ODBC pour savoir quel appel a échoué exactement ??

n°566030
minours666
Posté le 13-11-2003 à 18:14:08  profilanswer
 

essaye de creer un fichier udl et tu ensuites
rs.ConnectionString = "file name=" & App.Path & "maConnection.udl" , en plus comme ca t'as plus a rentrer ds le code pour changer la connection :)


Aller à :
Ajouter une réponse
 

Sujets relatifs
Passage Microsoft Jet -> ODBCPb traitement avec ODBC
[Erreur ODBC] Etat du curseur non valide[PHP] se connecter a une base de données Access ou autre via odbc?
[ODBC] Déploiement d'appli utilisant ODBC pour une base ACCESSExcel: comment lier une combobox aux alias ODBC?
HELLLPPP probleme sql avec oracle (VB, adodc, odbc)odbc
[C#] connection ODBCODBC, SQLDisconnect, COM
Plus de sujets relatifs à : ODBC


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)