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 :

Utilisation TADOCommand et Paramètres [OLE]


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 Utilisation TADOCommand et Paramètres
    Bonjour,

    J'utilise ADO avec C++ builder XE.

    Je veux exécuter la requête SQL suivante "CREATE TABLE TOTO (Module INTEGER)"

    Seulement quand j’exécute la requête j'ai une EOleException. Avec Pb de définition de champ.

    J'ai essayé de passer par un paramètres mais cela ne fonctionne pas non plus j'ai la même erreur.

    Quelqu'un aurait une idée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CmdText = "CREATE TABLE TEST (:Field INTEGER)";
     
      Cmd->Parameters->ParamByName("Field")->DataType = ftString;
      Cmd->Parameters->ParamByName("Field")->Size = 20;
      Cmd->Parameters->ParamByName("Field")->Direction = pdInput;
      Cmd->Parameters->ParamByName("Field")->Value = "Module";
     
      Cmd->Execute();
    Merci beaucoup.

  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
    Perso j'utilise les commandes ADO
    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
     
    // on cree une Table vide au nom de Dossier
            Form1->ADOCommand1->CommandText = "CREATE TABLE Dossier";
            Form1->ADOCommand1->Execute();
     
    // on cree le champ ID_Ste defini comme compteur
            Form1->ADOCommand1->CommandText = "ALTER TABLE Dossier ADD ID_Ste COUNTER";
            Form1->ADOCommand1->Execute();
     
    // on defini le champ compteur ID_Ste en clef primaire
            Form1->ADOCommand1->CommandText = "CREATE UNIQUE INDEX idxPrimary ON Dossier (ID_Ste) WITH PRIMARY";
            Form1->ADOCommand1->Execute();
     
    // pour le type BOOLEAN utiliser YESNO
            Form1->ADOCommand1->CommandText = "ALTER TABLE Dossier ADD Instance YESNO";
            Form1->ADOCommand1->Execute();
     
    // pour le type String utiliser TEXT(50), 50 est le nombre de caracteres du champ
            Form1->ADOCommand1->CommandText = "ALTER TABLE Dossier ADD DateNaturJustif TEXT(50)";
            Form1->ADOCommand1->Execute();
     
    // pour le type INTEGER
            Form1->ADOCommand1->CommandText = "ALTER TABLE Dossier ADD NoClass INTEGER";
            Form1->ADOCommand1->Execute();

  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
    Ben là-dessus je suis bien d'accord avec toi.
    Seulement si je passe la commande "CREATE TABLE TOTO (Module INTEGER)"
    Et bien j'ai aussi une OleException et si je remplace Module par Modula cela fonctionne.

    voilà pourquoi je voulais essayer de passer par un paramètre et non en direct.
    ah moins que tu ai la solution pour que ça fonctionne ne direct moi non!!!

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    Tu n'as pas précisé la DB utilisée !
    Sinon peut-être que "Module" est un mot clé et donc interdit par ce SGBD !

    Je ne savais pas que l'on pouvait utiliser des paramètres dans une requête DDL, je pensais que c'était réservé au DML ! Je pense que par paramètre, cela ne pourra jamais fonctionner !
    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
    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
    Ben mince ça sert à quoi alors leur paramètre ??????

    Il est vrai que je n'ai pas précisé la basse utilisé qui est Access 2000.
    Et si je tape la commande dans Access cela fonctionne très bien!!!

    J'avoue n'y rien comprendre et aimerais bien trouver la solution car je porte une bibliothèque qui utilisait DAO vers ADO.

  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
    je n'ai pas réussi à faire le passage de paramètre mais j'ai réussi à contourner mon pb de champ qui se nomme Module.
    Pour cela au lieu d'utiliser dans la connection string suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define PROVIDER_SOURCE "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    j'utilise celle-là qui me permet de faire mes requêtes SQL sans problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #define STR_CONNECT_1 "Provider=MSDASQL.1;Persist Security Info=False;Mode=ReadWrite;Extended Properties=""DBQ="
    #define STR_CONNECT_2 ";DefaultDir="
    #define STR_CONNECT_3 ";Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN="
    #define STR_CONNECT_4 ";MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5"
    #define STR_CONNECT_5 ";SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2010, 14h29
  2. Utilisation de requêtes paramétrées dans Talend.
    Par BI-Ali dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 17/06/2009, 13h49
  3. Erreur utilisation d'un paramètre
    Par Kihmé Xs dans le forum iReport
    Réponses: 2
    Dernier message: 31/03/2008, 09h59
  4. Réponses: 7
    Dernier message: 11/10/2006, 13h35
  5. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50

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