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 :

Creation mdb vide [Base de donn�e]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par d�faut Creation mdb vide
    bonjour je tente de cr�er un fichier mdb vide. Je pr�cise je suis avec C++ builder XE. j'ai saisit le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if (FileExists(mMdbFile))
      {
    	if (!DeleteFile(mMdbFile)) throw Exception("Unable to overwrite " +
    	  mMdbFile + " \r\nMaybe file is currently locked by another application");
      }
      Variant vADO;
      AnsiString provider = PROVIDER_SOURCE + mMdbFile;
      vADO = Variant::CreateObject("ADOX.Catalog");
      vADO.OleFunction("create", provider.c_str());
      // on termine
      vADO = Unassigned;
    Seulement � l'ex�cution j'ai une erreur OleException 'Type de variable incorrect'.
    J'ai bien inclus comobj.hpp et je ne comprends pas pourquoi cela ne fonctionne pas!!! Si quelqu'un � une id�e !!!

  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 chpog
    Peut etre comme ceci
    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    Variant vADO;
    // chemin de la base
    AnsiString FileName = ExtractFilePath(Application->ExeName)+"maBdd26.mdb";
    // teste d'existance de la base
    if (FileExists(FileName.c_str()))
      {
    Form1->ADOConnection1->Connected = false;
    Form1->ADOConnection1->Close();
    DeleteFile(FileName);
      }
    // on cree une base Access sans Access vide
    AnsiString provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName+";";
    vADO = Variant::CreateObject("ADOX.Catalog");
    vADO.OleFunction("create", provider.c_str());
    // on connecte avec ADOConnection
            Form1->ADOConnection1->ConnectionString = provider;
            Form1->ADOConnection1->LoginPrompt = false;
            Form1->ADOCommand1->Connection = Form1->ADOConnection1;
     
    // on cree une Table vide
    // on cree le champ
     
    //        Form1->ADOConnection1->Connected = false;
    // en quittant on libere les Variant
    vADO = Unassigned;

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par d�faut
    Merci pour ta r�ponse. J'ai essay� mais cela ne fonctionne pas mieux.
    mon souci �tant vraiment localis� sur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    vADO.OleFunction("create", provider.c_str());
    C'est cette ligne qui ne fonctionne pas.
    Mais impossible de savoir si c'est parceque ADOX.catalog � chang� avec la version 9.0 de C++ builder XE ou si c'est autre chose!
    si quelqu'un arrive � faire fonctionner se code sous C++ builder X 9.0 je suis preneur!!!

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    'ADOX.Catalog' n'a rien � avoir avec C++Builder !
    C'est un ActiveX d�j� install� sur le poste avec ODBC

    Je suppose que tu as utilis� l'exemple de la FAQ - Comment ouvrir une base de donn�es Access vide sous OleADO sans Access ?

    Tu as utilis� du AnsiString, je te conseille le WideString qui est le type recommand� pour l'utilisation d'objet COM ou ActiveX

    Pense que XE est Unicode, j'ignore comme r�agit le type Variant
    son utilisation est nettement plus simple en Delphi, est-il pass� de char* � w_char* ou wchar_t* ?



    C++Builder : Cr�er une BDD Access vide [R�solu]
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Futur Membre du Club
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2011
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par d�faut
    Bonjour chpog

    A priori ton probl�me vient du fait que la cha�ne de connexion Provider n'est pas valide.
    En tout cas sur ton 1er code. En effet Provider = PROVIDER_SOURCE + mMdbFile;
    Je suppose que PROVIDER_SOURCE est une constante = � "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" et
    mMdbFile est le nom complet du fichier .mdb (incluant le chemin) en tout cas �a devrait �tre le cas.
    Mais dans ton code il te manque le point virgule en fin de cha�ne.
    Essaye avec Provider = PROVIDER_SOURCE + mMdbFile + ";";
    Et surtout v�rifie bien que la cha�ne correspond bien, qu'il n'y a pas un point en moins une lettre doubl�e etc.
    Je ne suis pas d�veloppeur C++ mais Delphi donc je ne peux pas essayer le code mais par contre il est certain que sans le ";" � la fin de ta cha�ne il y aura une erreur.
    Le code Delphi �quivalent est le suivant:

    procedure CreateMdbFile(mMdbFile: string);
    const
    PROVIDER_SOURCE = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='; // Les cha�nes sont encadr�es par des ' et non des " en Delphi
    var
    vADO: oleVariant //d�claration pr�alable des variables
    Provider: string; // string = UnicodeString sous Delphi
    begin // �quivalent aux { du C
    try // instruction try finally pour �tre s�r d'ex�cuter vADO := Unassigned
    Provider := PROVIDER_SOURCE + mMdbFile + ';';
    vADO := CreateOleObject('ADOX.Catalog');
    vADO.Create(Provider); //Inutile sous Delphi de refaire une conversion explicite en cha�ne
    finally
    vADO := Unassigned; // lib�re l'objet
    end;
    end; // �quivalent au } du C

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par d�faut
    Merci pour ces r�ponses et effectivement en passant mon AnsiString en UnicodeString cela "fonctionne". Du moins je n'ai plus la m�me erreur!! LOL
    Merci a vous pour vos r�ponses !!
    J'avais pourtant utilis� la fonction rechercher j'ai aps du taper les bons mots.

    Merci beaucoup.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Creation mdb multi utilisateurs
    Par colorid dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 24/07/2011, 15h09
  2. [D�butant] creation fichier vide
    Par nanath02 dans le forum Langage
    R�ponses: 2
    Dernier message: 18/09/2007, 11h09
  3. R�ponses: 3
    Dernier message: 27/06/2007, 17h13
  4. Creation d'une DB.mdb en vbs
    Par guile60 dans le forum VBScript
    R�ponses: 3
    Dernier message: 26/06/2007, 05h22
  5. Creation d'une BD paradoxe 7 (.db) a partir d'Access (.mdb)
    Par melles dans le forum Bases de donn�es
    R�ponses: 8
    Dernier message: 14/04/2007, 22h37

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