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 :

[interbase6]probleme d'insertion dans une table


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut [interbase6]probleme d'insertion dans une table
    bonjour ,
    voila j ai une base de données interbase, le dataset s appele IBDpatient
    j y ais remplit l insertsql,le selectsql et le deletesql correctement.
    j ai creé un bouton pour entrer les données a partir de differents tbedits,
    voila le code du bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm2.Button1Click(Sender: TObject);
    begin
     if (datamodule.DataModule1.IBDpatient.locate('NOM',NomPatient.Text,[])) then
      begin
    datamodule.DataModule1.IBDpatient.append;
    datamodule.DataModule1.IBDpatient.Fieldvalues['NOM']:= NomPatient.Text;
    datamodule.DataModule1.IBDpatient.FieldValues['PRENOM']:=PrenomPatient.Text;
    datamodule.DataModule1.IBDpatient.FieldValues['ADRESSE']:= AdressePatient.Text;
    datamodule.DataModule1.IBDpatient.FieldValues['VILLE']:= VillePatient.Text;
    //datamodule.DataModule1.IBDpatient.FieldValues['CP'].asinteger:= strtoint(CPPatient.Text);
    datamodule.DataModule1.IBTpatient.CommitRetaining;
    tout fonctionne tant que je laisse l insertion duCP en commentaire mais quand j enleve le commentaire et que j essaye d inserer le CP ca me donne EconvertError with message "is not a valid integer value" alors que dans ma table CP est bien un integer
    quel est mon erreur?
    je voudrai aussi savoir si ma procedure d'insertion de données est correct ou si il y a plus simple sans utilser ibquery ou ibupdate?
    d'avance merci. [/color][/i][/u]

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Normal vous utilisez mal les composants de delphi orienté base de données.

    Ce qui se passe est simple vous utilisez la prorpriété Text qui renvoie une chaine cette chaine est exactement ce qui est affiché dans votre DBEdit. Donc pour un code postal 12345 il vous retourne 12 345 car vous avez surement dans les paramètres de windows l'affichage des nombres qui utilise le séparateur de millier.

    Or si vous essayez de convertir 12 345 en integer il provoque une exception.

    Si vous utilisez bien le IBDataSet (ou couple IBQuery/IBUpdate) et les DBEdit correctement dans votre bouton de validation vous ne devez avoir que le code de vérification/validation et un suivi d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBDataSet.Transaction.Commit;
    Vous vous compliquez innutilement la tache et devez coder plus de code que la normal. Consultez les différents tutos afin de bien utilisez les composants vous éviterez de réinventer ce qui existe déjà et surtout qui fonctionne bien.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut
    ok merci,
    j ai déja lu toutes les FAQ et je crois que je vais recommencer;

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut
    bon ben l insertion a partir d un db navigator fonctionne
    par contre dans les FAQ je vois surtout l insertion avec dbnavigator
    pourriez vous me donner un exemple simple d une insertion dans une table sans passer par dbnavigator merci

  5. #5
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Vous supprimez le dbnavigator si vous voulez.

    Lorsque vous souhaitez que l'utilisateur insère un nouvel enregistrement il suffit juste de faire :

    Et dans un bouton de validation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IBDataSet.Post;
    IBDataSet.transaction.Commit;
    Le DBNanigator ne fait qu'appeler les méthodes du dataset qui lui est attaché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    First;
    Prior;
    Next;
    Last;
    Insert;
    Delete;
    Edit;
    Post;
    Cancel;
    Refresh;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut
    donc si j ai bien compris il suffit de faire
    ibdataset.insert
    avec ibdataset.post;ibdataset.transactio.commit;
    et si dans mes tbedit j ai bien regler les datafield et datasource
    je n ai plus a utiliser fieldvalue, tout se fera automatiquement
    merci de votre patience

  7. #7
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Oui tout a fait.
    C'est tellement simple qu'on a du mal à y croire non ??

    Remerciez les composants Delphi de la VCL qui sont très bien étudiés facilite le travail des développeurs

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut
    bon alors j ai regler tt mes boutons avec les datafield et les datasources
    ensuite mon code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    datamodule.DataModule1.IBDpatient.Insert;
    datamodule.DataModule1.IBDpatient.post;
    datamodule.DataModule1.IBDpatient.Transaction.commit;
    et ca me donne lock conflict on no wait transaction
    j ai aussi essayer de creer un autre formulaire ou la cle primaire qui est integer doit etre remplie par un tbeedit dont j ai reglé le datafield et le datasource mais il me dit quand j insere que le champs de la cle primaire doit avoir une valeur alors que je le rentre pourtant dans le tbedit
    Peut etre les vcl sont la pour faciliter la vie mais il ne sont pas si simples.

    enfin ca ne fait jamais que deux jours que je suis la dessus et je sens que ce n est pas fini

  9. #9
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Je n'ai jamais dit qu'il fallait mettre ces trois instructions à la suite.

    Le IBDataSet.Insert;

    Permet de se mettre en mode INSERT : Les DbEdit sont initialisés.

    Votre utilisateur peut donc remplir les DBEdit.

    Ensuite dans votre bouton Valider vous faites les vérifications générales sur vos données et quand tout est OK vous faites le IBDataSet.Post et le commit.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Par défaut
    bon cette fois ci c est mon dernier essai car ca fait trop longtemps que j essaye et je vais remplacer l insertion par un navigator,dommage j aurais quand meme bien aimer reussir.
    voici ce que je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ibdataset.insert;
    ibdataset.Fieldvalues('NOM'):=TBEEdit1.text;
    ibdataset.fieldvalues('CP').asinteger:=(strtoint(TBEEdit2.text));
    IBDataSet.Post; 
    IBDataSet.transaction.Commit;
    j ai bien compris que CP ne pouvait pas marcher car quand on le transforme en integer la conversion se base sur les paramas windows et ne le transforme donc pas bien en integer
    alors comment faire pour passer la valeur de mon tbeedit2 en un integer que CP acceptera
    De plus j ai toujours l erreur suivante lock conflict on no wait transaction
    Cette fois si j en ai vraiment marre et j ai l impression d etre tro nul et de rien comprendre
    de plus je trouve ca completement absurde car dans un autre formulaire ou j utilise ibstoredproc a qui j envoi un tbeedit transformé en integer comme parametre il l accepte sans probleme
    tant pis j aurais essayer

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 119
    Par défaut
    Comme Barbibulle a dit .

    Sur ton bouton ajouter dans le on click tu met
    Tu met un autre bouton appeler valider

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

Discussions similaires

  1. probleme d'insertion dans une table via perl
    Par juzii dans le forum SGBD
    Réponses: 7
    Dernier message: 21/07/2008, 17h12
  2. probleme d'insertion dans une table
    Par metwa dans le forum JBuilder
    Réponses: 1
    Dernier message: 02/05/2008, 22h21
  3. probleme d'insertion dans une table
    Par metwa dans le forum JDBC
    Réponses: 3
    Dernier message: 30/04/2008, 11h38
  4. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 20h13
  5. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 15h24

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