Problème base de donnée MS Access

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

Merci lionel_om, ces chouette.

Mais de nouveau même problème.

On dirais que je n'arrive pas a mettre l'odbc en route.

Je travaille avec PB 4.10 que je viens de télécharger me décidant enfin a m'y mettre après d'ailleurs quelques temps que je me le suis procuré.

j'ulise donc la fonction UseODBCDatabase() pour initialisé l'ODBC suivant l'aide et Resultat contient sistématiquement 0. Donc, je peux pas aller plus loin.

D'ou pourrait venir le problème ?
Tous les exemples trouvé, me donne la même chose.
Pourtant access 2000 fonctionne sur mon system et ce n'est pas une version pirate. Je crois savoir que le moteur est le 4.

Qui peut encore m'aider ?
Merci
Jean-Marie
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Donne un bout de code pour vérifier...

Sinon :
  • le chemin d'acces au fichier est bien correcte ?
  • Est-ce que tu as bien fermé Access avant d'exécuter ton prog ?
  • Essaye de sauvegarder ta Base Access dans un format différent, je veux dire de la convertir: mode de compatibilité. Il me semble que j'ai déja eu ce pb. Faut la sauvée en version 97 je pense
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

oh oh,
Merci.
Je crois que je viens de mettre le doigt sur une solution.
J'étudie la possibilité puis-je viens l'exposé.
pour les futur débutants comme mois.
Parce-que la j'ai vraiment séché merci.
Merci pour ton aide.
Jean-Marie
Kayne
Messages : 157
Inscription : sam. 06/oct./2007 18:33
Contact :

Message par Kayne »

Je n'arrive a faire fonctionner aucun de tes codes.

Code : Tout sélectionner

Enumeration 1
  #ODBC_ADD_DSN            ; Add a new user Data source.
  #ODBC_CONFIG_DSN         ; Configure (modify) an existing user Data source.
  #ODBC_REMOVE_DSN         ; Remove an existing user Data source.
  #ODBC_ADD_SYS_DSN        ; Add a new system Data source.
  #ODBC_CONFIG_SYS_DSN     ; Modify an existing system Data source.
  #ODBC_REMOVE_SYS_DSN     ; Remove an existing system Data source.
  #ODBC_REMOVE_DEFAULT_DSN ; Remove the default data source specification section from the system information.
EndEnumeration

#ODBC_DRIVER_MSACCESS = "Microsoft Access Driver (*.mdb)"

Procedure.l MSAccess_AddConnection(name.s, database.s)
  Protected attrs.s
 
  attrs + "UID="         + ";"
  attrs + "PWD="         + ";"
  attrs + "DSN="         + name + ";"
  attrs + "DBQ="         + database + ";"
  attrs + "FIL="         + "MS Access;"
  attrs + "Driver="      + "ODBCJT32.DLL;"
  attrs + "DefaultDir="  + GetPathPart(database) + ";"
  attrs + "Description=" + FormatDate("Créé le %dd-%mm-%yyyy, %hh:%ii:%ss;", Date())
 
  ReplaceString(attrs, ";", #NULL$, 2)
  ProcedureReturn SQLConfigDataSource_(#Null, #ODBC_ADD_DSN, #ODBC_DRIVER_MSACCESS, attrs)
EndProcedure

InitDatabase()
MSAccess_AddConnection("mabase","C:\Documents and Settings\Hugo\Bureau\mabase.mdb")
If OpenDatabase(1,"mabase","","") = 0
MessageRequester("Erreur","impossible d'ouvrir la base")
Else
MessageRequester("Info","Ok tout marche")
EndIf 
La base ne peut jamais s'ouvrir et rien n'apparait dans l'Administrateur de source de donnée ODBC.
__________________________________________

Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Regarde les pistes que j'ai noté lors d emon dernier post...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

Je crois que je m'en suis sorti.

Je suis entraint de tester.

JM
Kayne
Messages : 157
Inscription : sam. 06/oct./2007 18:33
Contact :

Message par Kayne »

lionel_om a écrit :Donne un bout de code pour vérifier...
Ca c'est fait
lionel_om a écrit :
  • le chemin d'acces au fichier est bien correcte ?
Oui il est correct il y a bien une base de donnée mabase.mdb sur mon bureau
lionel_om a écrit :
  • Est-ce que tu as bien fermé Access avant d'exécuter ton prog ?
Oui il est fermé
lionel_om a écrit :
  • Essaye de sauvegarder ta Base Access dans un format différent, je veux dire de la convertir: mode de compatibilité. Il me semble que j'ai déja eu ce pb. Faut la sauvée en version 97 je pense
C'est ici que je comprend pas bien et ou il pourrait y avoir un pb. J'ai la version 2003 de acces (et 3.94 de pure),j'ouvre acces, je vais dans créer une nouvelle base de donnée puis a gauche base de donnée vide. Ensuite je met le fichier sur le bureau avec pour nom mabase et je choisi pour format mdb.
J'ai que le choix entre ça ou .mdw et .mda.
Et si c'était pour prendre une ancienne version, ca parait bizarre que la nouvelle version réduise le nombre de possibilitée.
Si tu pouvais m'aider je te serais reconnaissant.

(Ps: et si on pouvais faire un échange de lien, de ton site vers ma page de tutoriels purebasic .. Je te serait encore plus reconnaissant :wink: )
__________________________________________

Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Kayne a écrit :C'est ici que je comprend pas bien et ou il pourrait y avoir un pb. J'ai la version 2003 de acces (et 3.94 de pure),j'ouvre acces, je vais dans créer une nouvelle base de donnée puis a gauche base de donnée vide. Ensuite je met le fichier sur le bureau avec pour nom mabase et je choisi pour format mdb.
J'ai que le choix entre ça ou .mdw et .mda.
Et si c'était pour prendre une ancienne version, ca parait bizarre que la nouvelle version réduise le nombre de possibilitée.
Si tu pouvais m'aider je te serais reconnaissant.
Pour le format MDB c'est bon.
Mais ce "format" a évolué depuis Access 97. Et il me semble qu'il faut migrer vers une BDD Access 97 pour que PB puisse l'ouvrir. Par défaut, Access te crée une BDD de dernière génération. A toi de la convertir. C'est dans la de menu (mais je ne sais plus où et je ne suis pas en mesure de chercher n'ayant pas l'install avec moi).

Sinon attend les pistes de 'djmcg'.

Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Kayne
Messages : 157
Inscription : sam. 06/oct./2007 18:33
Contact :

Message par Kayne »

ok merci de ta réponse
__________________________________________

Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

Voila, j'arrive.
Je met en place le texte source et je vous le met.
J'ai du repartir d'un exemple dépouillé. Parce-que je n'y comprenait rien.
Et toujours maintenant. Si ce n'est que j'arrive a me connecter a une base existante que j'ai mis en place avec access 2000.

Dès que je peux je le met sur le site.

A bientôt.

Jean-Marie

PS.: Ma lenteur est du au fait que j'ai encore une étudiante qui a un travaille monstre. Ce n'est pas évident de ce lever a 5 heure du matin pour avoir l'ordi. Sachant que je souffre de douleur chronique au dos. J'ai parfois très difficile de me mettre a travailler. :oops:
Kayne
Messages : 157
Inscription : sam. 06/oct./2007 18:33
Contact :

Message par Kayne »

Je l'ai converti en version 97 ça marche toujours pas ...
J'attends avec impatience les pistes de djmc ...
__________________________________________

Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

Bonjour a tous.
Voici enfin le code que je qualifie de minimum pour ouvrir une base de donnée ACCESS existante. Je doit ce code de plusieurs source mais c'est l'aide GL Gillou http://lggillou.vbc3.com/index.php qui m'a transmit ce code minimum. Je l'en remercie. Je ne met pas de commentaire expliquant les procédure, parce-que je ne comprend pas tous et ma littérature ne me permet pas d'approfondir le sujet. Je ne connaît pas n'on plus l'anglais. Voici le code :

Code : Tout sélectionner

;- Constantes
;  ----------
#ODBC_ADD_DSN = 1 ; Add Data source
#ODBC_CONFIG_DSN = 2 ; Configure (edit) Data source
#ODBC_REMOVE_DSN = 3 ; Remove Data source

#DataBase = 1     
#DSN = "PureBasic_DSN"
#Driver = "Microsoft Access Driver (*.mdb)"

;- Variables
;  ---------
File.s = "C:\MesProgrammes\LeBoulanger\LeBoulanger.mdb"

;- Procedures
;  ----------
;** On ouvre la connection
;   ----------------------
Procedure Makeconnection(Driver.s,Attributes.s)
    result=OpenLibrary(1,"ODBCCP32.DLL")
    If result <> 0
        result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,Driver.s,@Attributes)
        NewResult=SQLConfigDataSource_(0,#ODBC_ADD_DSN,Driver.s,@Attributes)
        CloseLibrary(1)
    EndIf
    ProcedureReturn result
EndProcedure    ;   fin de MakeConnection
;===============================================================================
;** On ferme la connection
;   ----------------------
Procedure DeleteConnection(Driver.s,DSN.s)
    result=OpenLibrary(1,"ODBCCP32.DLL")
    If result
        strAttributes.s = "DSN="+DSN
        result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_REMOVE_DSN,Driver,strAttributes )
        CloseLibrary(1)
        If result
            ProcedureReturn 1
        EndIf
    EndIf
EndProcedure    ;   fin de DeleteConnection

;*******************************************************************************
;- Programme
;  ---------
UseODBCDatabase()
If (Makeconnection(#Driver, "DSN="+#DSN+";Description=Access File;DBQ="+File+";"))
    Database = OpenDatabase(#DataBase, #DSN, "", "")
    If Database <> 0
        MessageRequester("LeBoulanger", "ok "+Str(Database)) ; C'est cette ligne qui me permet de croire que ma base est ouverte.
    EndIf
DeleteConnection(#Driver, #DSN) ; je la referme de suite. Je travaille sur la séquence qui va lire les données de ma table.
EndIf
Voila pour moi la suite, c'est lire, écrire, modifier, supprimer des enregistrements.

Je tiens à remercier tous ceux qui ici et sur d'autres forum prennent le temps de répondre aux question pas toujours très bien formuler. Merci pour votre AIDE.

Cela m'intéresserait que mes code soit vu et " critiquer " dans le bon sens du terme. Avis au candidat mentor. Je crois que je vais ouvrir un petit site ou je mettre les codes a disposition et au moins a vue.

Je peux utiliser le logo purebasic ? bien sûr en y indiquant les précautions qui s'impose. A savoir par exemple que PureBasic n'est en rien responsable de ce que j'écrit. J'ai d'autres question, conseil mais je vais les mettre dans hors sujet.

MERCI pour votre aide.
A bientôt.

Jean-Marie

j'allais oublié :
Il faut peut-être préciser, que je travaille sous Win Xp Pro, Que l'access sur ma machine est l'office 2000. Je crois que le moteur JET est le 4.0., PureBasic 4.10 et le jaPBe 3.8.3.697. Que j'ai laissé mes base d'origine.
Voila si vous avez besoin d'autres chose, posé votre question et je répondrait. Enfin si je sais.
Kayne
Messages : 157
Inscription : sam. 06/oct./2007 18:33
Contact :

Message par Kayne »

Excellent, ca marche pour moi
__________________________________________

Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Bizarre :

Code : Tout sélectionner

Procedure Makeconnection(Driver.s,Attributes.s)
    result=OpenLibrary(1,"ODBCCP32.DLL")
    If result <> 0
        result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,Driver.s,@Attributes)
        NewResult=SQLConfigDataSource_(0,#ODBC_ADD_DSN,Driver.s,@Attributes)
        CloseLibrary(1)
    EndIf
    ProcedureReturn result
EndProcedure    ;   fin de MakeConnection 
Cette fonction appelle deux fois la mm fonction : "SQLConfigDataSource()", l'une de Windows, l'autre de la DLL (sans doute la mm).
Pouvez vous tester les deux valeurs "result" et "NewResult". Théoriquement, vous pouvez virer l'appelle de la DLL. Sinon c'est l'appel à la fonction SQLConfigDataSource_().

Et dans la procédure DeleteConnection() cet appel en doublons n'y est pas... Doit y avoir des choses qui restent à la fin...

Je vous conseille de jeter quelques coups d'oeils avant d'utiliser ça comme ça...

Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
djmcg
Messages : 139
Inscription : sam. 28/août/2004 6:37

Message par djmcg »

Merci pour votre aide.

En ce qui me concerne, la connections base de donnée est un sujet peux connu de moi. J'ai même un peux difficile de comprendre. Je n'ai jamais trouvé de tutoriel simple sur ce sujet.

Temps que je ne comprend pas mieux ce que cette procédure fait, je préfère pas y toucher pour l'instant.
Pouvez vous tester les deux valeurs "result" et "NewResult". Théoriquement, vous pouvez virer l'appelle de la DLL. Sinon c'est l'appel à la fonction SQLConfigDataSource_().
Quand au double appel de SQLConfigDataSource_() je me suis en effet posé la question sans pouvoir y remédier.

Il faut juste souligner que je retrouve cela dans plusieurs exemple. Voir par exemple "basic univers". :oops:

A noter que si je supprime l'appel a la DLL cela ne semble plus fonctionner.

Merci

Jean-Marie
Répondre