IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

ADO et base de données Access


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut ADO et base de données Access
    Bonjour,

    J'aurais voulu savoir si les composants ADO de BB6 ne s'utilisent qu'avec des bases de données Access ? Parce que je n'ai pas access sur mon ordi et ne compte pas l'avoir non plus, mais je voudrais pouvoir déployer mon programme sur n'importe quel ordi sans avoir à utiliser BDE puisqu'il n'est pas installé sur toutes les machines, alors que les outils pour accéder aux bases de données access sont fournis sur windows ....

    Par ailleurs, connaitriez-vous un moyen de créer une base de données Access sans Access ??

    Merchi !

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut androz
    Regarde dans la FAQ il est possible de creer une base de donnees type Access sans Access

  3. #3
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Salut Blondelle,

    J'avais vu la FAQ oui, mais en fait j'ai pas trop compris l'essentiel, à savoir :

    Pour cela, récupérer la odbccp32.dll (32bits), utiliser un petit IMPLIB pour faire le odbccp32.lib, et lier tout ça au projet:
    Comment on fait "un petit IMPLIB" ?? J'ai commencé à chercher un peu, et j'ai rien trouvé de concluant. Sous Borland, je suis allé dans Project->Import Type Library , mais je n'ai pas trouvé le dll en question. J'ai donc essayé de l'ajouter, mais là j'ai un message d'erreur.... pfff

    J'ai trouvé sous Vista l'administrateur de source de données ODBC, donc j'ai pu localiser le dll en question. Il me reste à trouver le moyen d'en faire un *.lib avec IMPLIB et là... je coince.

  4. #4
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Ok, comme souvent, je trouve deux minutes après avoir posté....

    suffit d'utiliser une commande en ligne

    IMPLIB c:\librairie.lib c:\windows\system32\odbccp32.dll

    et voilou, seulement, si je fais un bête copier-coller des trois lignes de code de la FAQ, j'ai un message d'erreur comme quoi il connait pas la fonction SQLConfigDataSource. On dirait que le link vers la librairie s'est pas faite ou bien j'ai oublié quelque chose ?? En plus, ce qui me confirme que y'a un autre souci, c'est que je viens de me rendre compte que la librairie existait déjà dans mon répertoire de librairies Borland ! donc pas besoin de la refaire avec IMPLIB....

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Je ne comprend pas ton probleme, voici le code de la FAQ pour creer une base type Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        // ne pas oublier d'inclure #include <comobj.hpp>
        Variant vADO;
        AnsiString Filename = "C:\\Documents and Settings\\blondelle\\Mes documents\\maBdd2.mdb";
        AnsiString provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +Filename+";";
        if (FileExists(Filename.c_str()))
    {
    MessageBox(Handle,"Ce fichier existe déja!" ,"ATTENTION",MB_OK|MB_ICONWARNING ) ;
    vADO = Unassigned;
    return;
    }
        vADO = Variant::CreateObject("ADOX.Catalog");
        vADO.OleFunction("create", provider.c_str());
        // on termine
        vADO = Unassigned;
    }

  6. #6
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Mon problème, c'est que je n'utilisais pas la bone FAQ

    Par contre, j'ai quand même un souci, je récupère une exception à l'appel de la OleFunction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vADO.OleFunction("create", provider.c_str());
    avec comme seul message : "Une exception s'est produite". La belle affaire. De plus, je ne suis pas sur de comprendre ce que sont les Variant... me reste du boulot on dirait bien

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Salut,

    En fait tu peux utiliser une base access sans avoir Access installé sur le PC des clients car elles sont gérées par MDAC via JET qui sont installés par défaut sur les machines XP. C'est ce que fais avec mon application.

    En revanche je ne sais pas si JET et MDAC sont installés sur windows 7, je n'ai pas encore fais les tests

  8. #8
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    salut Patrick

    Oui je sais que les clients sont installés sur windows, c'est exactement pour ça que je veux changer mes BD paradox en BD access.... Seulement pour l'instant j'y arrive pas

    J'ai toujours cette exception que je ne sais pas comment régler

  9. #9
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Si tu recupere une exception sur "create" c'est que le chemin n'est pas correcte, par exemple un repertoire qui n'est pas cree

  10. #10
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Salut Blondelle !

    Si tu recupere une exception sur "create" c'est que le chemin n'est pas correcte, par exemple un repertoire qui n'est pas cree
    Ah ben ouais gad' don' ça ! On dirait bien que c'est ça....étrange tout de même puisque j'ai fait un copier-coller de ma barre d'adresse M'enfin bon c'est pas grave, ça arrive souvent qu'un petit redémarrage de BB6 me résolve des problèmes. Je sais pas d'où ça vient, mais maintenant, je sais que si j'ai un problème récurrent alors qu'avant j'en avais pas, le redémarrage est presque tout le temps LA solution.

    Merci encore Blondelle pour ton aide plus que précieuse !!!

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Je ne peux malheureusement pas t'aider plus car je ne connais pas ces composantes...

    Moi j'utilise celles de Borland: TADOConnection et TADOQuery sans passer par une librairie extérieure et uniquement en consultation.

  12. #12
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Hello, encore moi

    Finalement, j'arrive à créer une base de données Acces. Maintenant je veux la remplir

    Dans un premier temps, je suis la FAQ ADO et je me connecte à ma base de données fraichement créée. No soucy, seulement ma base de données est vide. Il faut maintenant que je la remplisse.

    J'ai essayé de mettre des nouveaux champs dans ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ADOTable1->FieldDefs->Add("Champ1",ftFloat,0,false);
    Mais le compilateur aime pas ça, FieldDefs n'est pas accessible.

    J'ai bien voulu essayer de suivre la FAQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      AnsiString Nom = "MATABLE";
      ADOQuery1->Connection = ADOConnection1; // Lien avec la Connection
      ADOQuery1->SQL->Clear();
      ADOQuery1->SQL->Add((String)"CREATE TABLE "+Nom+" (MONCHAMP1 INTEGER, MONCHAMP2 STRING)");
      ADOQuery1->ExecSQL();
    mais je ne comprends pas comment je fais le lien vers ma table ADOTable1 ?

    Et pourquoi il ne m'est pas possible tout simplement de pointer la propriété ADOTable1->TableName vers la base de données Access créée ?

    Bref je suis perdu


    Le but, pour ne pas le perdre de vue, est simplement de créer une base de données Access et d'afficher la table (il n'y en a qu'une dans ma base de données) dans une DBGrid. Avec les bases de données Paradox c'était ultra simple, je créais ma base avec le prog fourni par Borland, je mettais un TDataSource et un TTable sur ma fiche, je liais le tout et j'étais en buisiness...

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738

  14. #14
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Merci Blondelle pour ces suggestions...

    Je vais cependant continuer à chercher un peu. J'aimerais vraiment pourvoir réussir à utiliser grosso modo les mêmes outils qu'avec une base Paradox mais en utilisant leur version ADO sans faire appel à des requetes SQL ou des commandes comme c'est le cas dans les exemples que tu me donnes. Pour moi, le passage de Paradox à Access sera alors moins difficile

    Je n'aime pas refaire au complet des choses que j'ai déjà plus ou moins faites. J'aime bien reprendre des bouts d'anciens codes, améliorer ce que j'ai déjà fait... car comme disait une de mes profs de maths en son temps : "on se ramène au cas précédent..."

    Si j'y arrive je vous fais signe !

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/08/2012, 18h41
  2. Edition d'une base de données access en utilisant ado.net
    Par sidisadmir dans le forum ADO.NET
    Réponses: 2
    Dernier message: 10/02/2011, 13h56
  3. Réponses: 15
    Dernier message: 25/10/2004, 12h50
  4. [Déploiement]Base de donnée Access
    Par Giovanny Temgoua dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/08/2004, 21h48
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo