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

Bases de données Delphi Discussion :

Erreur lors de l'ajout dans une table


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut Erreur lors de l'ajout dans une table
    salut
    j'ai une base de donnée access ,qui contient plusieurs table ,en essayant de enregistrer de nouvelle enregistrement dans une table de la base de donnée j'ai eu un message d'erreur suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception class EDBEngineError with message 'Multiple records found, but only one was expected.'. Process Project1.exe (3424)

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Tu as un problème d'index non unique, ... tes valeurs peuvent déjà existé dans la base !
    Essaye de faire des insertions par SQL au lieu d'un Append\Insert\Post

    c'est assez rare avec le BDE avec DBase, Paradox ou IB, mais avec Access, je ne l'ai jamais utilisé, lui préférant un accès ADO (ce qui évite le déploiement du BDE sur les machines clients)
    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

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    j'ai pus trouver l'ereur elle venais d'un champ de type DATE que j'ai crée dans la base de donnée.
    mais je suis un peut perdue ,je veut afficher des données qui ce trouves dans plusieurs table (avec jointure). j'ai utiliser une DBGrid et un DataSource et un composant Query . j'ai fait une requet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Query1.Active := False;
       Query1.SQL.Clear;
         Query1.SQL.Add ('SELECT nom, prenom, adresse, voiture.classe');
         Query1.SQL.Add ('FROM conducteure, voiture');
         Query1.RequestLive := true;
         Query1.Open; {open query + display data
    mais en cliquant sur le bouton pour executer la requet le DBGrid n'affiche rien.
    est ce qu'il y a une erreur dans ma requet ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    il te manque la jointure elle même ... (le critère qui lie conducteur à une voiture)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1.Active := False;
    Query1.SQL.Clear;
    Query1.SQL.Add ('SELECT nom, prenom, adresse, voiture.classe');
    Query1.SQL.Add ('FROM conducteure, voiture');
    Query1.SQL.Add ('WHERE condtucteure.voiture_ID = voiture.Voiture_Id');
    Query1.RequestLive := true;
    Query1.Open;
    Enfin, le RequestLive sur une jointure, ouch, est-ce possible !
    Mieux vaut récupérer les ID et faire soit même les deux UDPATE sur conduct et voiture
    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 régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    j'ai eu l'erreur suivant que je n'est sait pas d'ou vient ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Propriete SQL Connection requise pour cette operation

  6. #6
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    c'etait un probleme de DataSource qui etait liée un compsant Query dans une autre forme.
    mais j'ai toujours un probleme avec ma requete pour chercher une voiture par le class.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1.Active := False;
    Query1.SQL.Clear;
    Query1.SQL.Add ('SELECT *');
    Query1.SQL.Add ('FROM  voiture');
    Query1.SQL.Add ('WHERE class = "Edit1.Text" ');
    Query1.RequestLive := true;
    Query1.Open;
    le probleme est cette requette affciher des colonnes vide dans le DBGrid ,avec acune valeur?

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Consulte l'aide et les tutoriels, tu ne maitrise pas les Bases sur la manipulation des chaines ! L'utilisation de Base de Données requiert certains pré-requis en terme de connaissance du langage Pascal Object sur Delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query1.SQL.Add (Format('WHERE class = "%s" ', [Edit1.Text]));
    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

  8. #8
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut afichage de deux table
    salut j'ai une erreur qui me casse la tête ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    la table est en lecture seule
    et sa quand je veut afficher le contenue de deux table dans un seul DBGrid.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Query1.Active := False;
       Query1.SQL.Clear;
       Query1.SQL.Add ('SELECT *');
       Query1.SQL.Add ('FROM tab1,tab2');
       Form5.Query1.RequestLive := true;

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    RequestLive ne peut pas fonctionner sur les jointures (je crois)

    Donc si tu veux modifier, il faut le faire à la main ...
    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

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Salut!

    As-tu trouvé la solution pour le message d'erreur qui t'indique que la table est en lecture seule? J'ai le même problème...
    SVP. Merci.

    Audrey

  11. #11
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    il faut changer la valeur de la propriete ReadOnly de la table .

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup pour ton aide!

    Mais j'utilise maintenant les composants ADO donc je n'ai plus ce problème...

    Audrey

  13. #13
    Membre habitué Avatar de colfire_dev
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Novembre 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Novembre 2007
    Messages : 244
    Points : 195
    Points
    195
    Par défaut
    Pour plus de gains en performance je pense à mon sens que c'est plus judicieux de travailler avec DBEXpress qui ne fait pas appel à ODBC contrairement à ADO
    A la Recherche du Parfait il faut faire et refaire
    L'homme sage apprend de ses erreurs. L'homme encore plus sage apprend des erreurs des autres.

  14. #14
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut Query1.RequestLive := true;
    bonjour

    jai une petite question svp:

    Query1.RequestLive := true; //sert a quoi c quoi son role ?


    merci

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Cela permet qu'un Edit\Insert\Post puisse être faire directement sur le DataSet
    RequestLive établie un lien entre le résultat de la requête et la table source, consulte l'aide, il faut lire le texte qui est pas long, ainsi que le sujet relatif "Obtention d'un ensemble de résultats modifiable"
    Mais cela ne fonctionne pas sur les jointures sans un TUpdateSQL ...
    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

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

Discussions similaires

  1. Erreur lors d'un INSERT sur une table dans Firebird via dbExpress
    Par matou7 dans le forum Bases de données
    Réponses: 4
    Dernier message: 03/04/2012, 16h40
  2. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  3. Réponses: 3
    Dernier message: 07/12/2005, 14h28
  4. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13
  5. big ajout dans une table
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 19/04/2005, 10h22

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