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 :

Insertion,update dans une BD à table avec beaucoup de champs


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Insertion,update dans une BD à table avec beaucoup de champs
    Cette fois-ci, je travaille avec une base de données avec une table

    de 100 champs (énormes non!) et j'utilise ADO pour se connecter à

    cette BD. J'ai voulu effectuer des insertions dans la table: INSERT

    INTO. Mais là, j'ai rencontré beaucoup de

    problèmes:EOleException.
    Des erreurs du genre:Point-virgule absent à la fin de

    l'instruction SQL
    ou Erreur de syntaxe dans INSERT INTO.

    Mais j'ai revérifié mes instructions sql et c'est correct!!

    De plus lorsque j'insère une chaîne par ex: "C:\Documents and

    Settings\All Users.WINDOWS\Documents\Mes images\Échantillons

    d'images\Nénuphars.jpg" l'exception devient: Objet parameter

    défini de manière incorrecte
    .

    Qu'est-ce que cet objet Parameter? je vois pas
    Je pense qu'on ne peut pas utiliser une table avec plusieurs champs

    ou est-ce une faille de ADO, dois-je retourner à BDE?
    Est-ce que vous avez déja rencontré un tel problème.Si oui, quelle solution avez-vous trouvé?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    bruce-willis
    Invité(e)
    Par défaut
    Moi, je ne sais pas quoi de répondre.
    Moi j'ai déja essayé avec 50 champs, ce fut la galère alors j'ai abandonné.

    Je voudrais savoir ce que les autres en pense!

  3. #3
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Slt bruce-willis,

    Faut jamais jeter l'éponge mon cher ami. Je ne sais pas si c'est un défaut du composant ADO ou celui de Ms Access: je crois que Access doit supporter cela car il est connu pour être puissant.

    EST-CE QUE QUELQU'UN A UNE SUGGESTION A ME DONNER? PLEASE
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Peut être déja poster toutes les instructions et requete relatives a la mise a jour de ta table.
    En expliquant les types d'objets utilisés, etc ...
    Je pense qu'on ne peut pas utiliser une table avec plusieurs champs
    Ca m'étonnerais tout de même ...

  5. #5
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    En fait, j'utilise ADO pour manipuler une BD Ms Access constitué par plusieurs tables avec beaucoup de champs, l'une d'elles possèdent même 110 champs. Vous vous demandez à quoi servent tous ces champs, et oui ils ont une importance capitale.

    Je me demande pourquoi cela génère un EOleException alors que je crois que je n'ai ommis aucunes erreurs dans le code. Par ex,ici une insertion (j'insère des valeurs n'importe quoi mais correctes et j'utilise des ......... pour raccourcir):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("insert into venteterrain(reference,adressebien,...........,section,superficie) values('klmkjml','kmjklm',..................'ipiop',70)");
    ADOQuery1->SQL->Add("insert into venteterrain(prixm2,superficie_mor,prixm2_mor,.............,repere,conseil_jur,conseil_tec) values(70,70,70,...............,'','')");//les champs conseil_jur,conseil_tec sont des Mémo
    ADOQuery1->SQL->Add("insert into venteterrain(prestation,plat_p,..................,voisinage_nb,limitation_nb,autres_nb) values('','',..............,50,50,50)");//le premier champ est un Mémo
    ADOQuery1->SQL->Add("insert into venteterrain(remblaye_nb,acces_nb,arbore_nb,eau_elec_nb,cloture_nb,pente_nb) values(50,50,50,50,50,50)");
    ADOQuery1->ExecSQL();
    Ce code provoque l'erreur:Erreur de syntaxe dans INSERT INTO.
    Certaines chaines vides doivent contenir en fait un chemin (C:\...) et lorsqu'on les remplit avec un chemin, l'erreur:Objet parameter défini de manière incorrecte..Donc ça empire alors que ça marche pour des BD à 5 champs par ex.

    Même cas pour pour l'UPDATE: erreurErreur de syntaxe (Opérateur absent) .... J'ai fait des SQL->SaveToFile() de la liste des requêtes et c'est correct à 100% mais erreur lors du
    ADOQuery1->ExecSQL();
    Même erreur dans l'update lorsqu'on insère un chemin.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    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
    Citation Envoyé par rakoto15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("insert into venteterrain(reference,adressebien,...........,section,superficie) values('klmkjml','kmjklm',..................'ipiop',70)");
    ADOQuery1->SQL->Add("insert into venteterrain(prixm2,superficie_mor,prixm2_mor,.............,repere,conseil_jur,conseil_tec) values(70,70,70,...............,'','')");//les champs conseil_jur,conseil_tec sont des Mémo
    ADOQuery1->SQL->Add("insert into venteterrain(prestation,plat_p,..................,voisinage_nb,limitation_nb,autres_nb) values('','',..............,50,50,50)");//le premier champ est un Mémo
    ADOQuery1->SQL->Add("insert into venteterrain(remblaye_nb,acces_nb,arbore_nb,eau_elec_nb,cloture_nb,pente_nb) values(50,50,50,50,50,50)");
    ADOQuery1->ExecSQL();
    Je vois dans tes requêtes SQL que tu ne mets pas le ";" final. Ca ne pose pas de problème lorsque tu n'as qu'une commande dans la requête, mais c'est sûr que c'est un soucis lorsque tu en mets plusieurs. Un peu comme si tu oubliais les ";" dans ton code C++.

    Alors je n'ai jamais essayé, mais peut-être que tu peux passer toutes tes commandes en une seule fois en mettant le ";" de séparation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ADOQuery1->SQL->Add("insert into toto(...) values(...);");
    ADOQuery1->SQL->Add("insert into toto(...) values(...);");
    ADOQuery1->ExecSQL();

  7. #7
    bruce-willis
    Invité(e)
    Par défaut
    Slt rakoto15,

    t'as bien fait d'effectuer l'insertion en plusieurs lignes car avec un nbr de champs tel que le tien, une ligne ne suffirait pas.

    Sunchaser! Comment as-tu fait si tu dis que c'est possible une table avec plusieurs champs (plus de 100).

  8. #8
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Pour l'exception Objet parameter défini de manière
    incorrecte
    , l'erreur était en fait l'existence d'apostrophe
    dans les chaînes des chemins ou dans les mémos.

    Mais est-ce qu'on ne peut pas utiliser des apostrophes dans les
    chaînes en SQL?

    Je me demande aussi pourquoi la boîte de dialogue de saisie de mot
    de passe n'apparâit pas alors que Connected=true et
    LoginPrompt=true aussi. Alors que cela apparaît dans mes autres
    projets avec des petites BD.
    Est-ce que cela a qlq choses y avoir avec ces problèmes???
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  9. #9
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par bruce-willis
    Sunchaser! Comment as-tu fait si tu dis que c'est possible une table avec plusieurs champs (plus de 100).

    Meuuuuaaah ....!? J'ai pas dis tout a fait cela moi.
    Et pis d'abord, moi j'essaie de fuir dès que je vois 'MS Access'. Mais bon, ce genre de considération ne fais pas avancer le schmilblick.

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Je n'ai jamais rencontré ce type de PB hormis sur les points suivants:

    Ne jamais mettre de moins (-) dans les noms de champs, jamais de caractère accentué dans ce type de requête.
    Toujours préférer lécriture "..."+QuotedStr("TOTO")+"..." à "...'TOTO'...".

    Pour des requêtes à problème, je les réalise sous accès afin de trouver l'erreur qui est explicite (contrairement à ADO), ensuite je fais un copier coller avec de petites modifications et en enlevant le ";" de la fin.

    Et là pas de PB

  11. #11
    bruce-willis
    Invité(e)
    Par défaut
    Pardonnez Sunchaser, je ne voulais pas te blesser!!!

  12. #12
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Pour la boite de dialogue qui n'apparaisse pas, c'est résolu. C'est en fait une betise de ma part.

    FBartolo! Je n'utilise pas de - ni d'accents dans les noms de champs.
    Je vais essayer ton truc de QuotedStr() mais je vais te demander quelle est la différence ????

    Pour Pour des requêtes à problème, je les réalise sous accès afin de trouver l'erreur qui est explicite

    Je ne comprends pas!! Peux-tu m'expliquer?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  13. #13
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par bruce-willis
    Pardonnez Sunchaser, je ne voulais pas te blesser!!!
    A non, non ... pas du tout ...
    Juste que si j'avais eu la solution de suite, je l'aurais postée ...

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2009, 10h22
  2. Réponses: 2
    Dernier message: 10/03/2009, 12h45
  3. Réponses: 17
    Dernier message: 21/04/2008, 01h21
  4. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  5. Réponses: 4
    Dernier message: 01/06/2007, 13h54

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