Ajouter un Enregistrement dans une Table InterBase en Delphi

Résolu
demande001 Messages postés 15 Date d'inscription samedi 24 juin 2006 Statut Membre Dernière intervention 4 novembre 2008 - 17 oct. 2006 à 13:08
demande001 Messages postés 15 Date d'inscription samedi 24 juin 2006 Statut Membre Dernière intervention 4 novembre 2008 - 4 nov. 2008 à 09:15
Bonjour;
Voila je ss new en interBase et je voudrais bien savoir si quelqu'un peut me donné la méthode d'ajouter un enregistrement dans une table IB en programmation avec Delphi j'utilise le Composant IBDATASET pour la connection a cette table
la methode Append et Post marche pour le premier enregitrement seulement et des que il existe plus qu'un elle bloque
j'aimerais bien avoir une implementation SQL c'est Si possible....
Merci d'avance...

3 réponses

Zicson1 Messages postés 56 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 27 mars 2010
3 nov. 2008 à 13:27
Bonjour,
En effet IB utilise beaucoup les implémentations SQL, contrairement au TDATASET qui utilise la notion Ttable.post, les IBDATASET utilise TIbdaset.ExexSQL.

Pour l'usage de ton IBDATASET, tu le depose sur l'unité et tu le selectionne puis tu renseigne sa proprité Database en selectionnant le nom de ton composant IBDATABASE situé sur ton Datamodule.
si le nom de ta base de données n'est pas visible, tu fais FIHIER+UTILISER UNITE et tu choisi l'unité de ton Datamodule.

Ensuite, tu fais un clic droit sur ton composant IBDATASET et tu clique sur le menu EDIT SQL et à droit tu doule clic sur le nom de ta table et tu met une étoile(*) après le SELECT de la requête (Select*From Table) +OK.

Tu refais un clic droit sur le même IBdataset + Dataset editor ou sql editor +generated SQL apres avoir cliquer sur generate sql on a:
1-Inset
2-Modify/Update
3-Refrech

Tu coche l'option Insert et automatiquement il écrit la requête pour toi.
Tu copies cette requête et tu fais un clic droit sur ton IBDATASET+EDIT SQL et tu y colle la requête+ok

Enfin tu place un bouton ENREGISTRER et tu fais double clic sur lui pour acceder à l'editeur de code Pascal de delphi et tu y écris.

<meta http-equiv= "Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 10" /><meta name="Originator" content="Microsoft Word 10" /><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CServer%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><style><!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
--></style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]-->Begin

          IBdataset2.Prepare;

          IBdataset2.ParamByName('Codeclient').AsString: =(Edit1.Text);

         IBdataset2.ParamByName('Nom').AsString:= ( Edit2 .Text);

          IBdataset2.ParamByName('Prenoms').AsString: =(Edit3Text);

          IBdataset2.ParamByName('Adresse').AsString:= ( Edit4 .Text);

          IBdataset2.ParamByName('CNI').AsString: =(Edit5.Text);

          IBdataset2.ParamByName('CS').AsString:= ( Edit6 Text);

         IBdataset2.ParamByName('Cellulaire').AsString: =(Edit7.Text);

          IBdataset2.ParamByName('Telephone').AsString:= ( Edit8 .Text);

          IBdataset2.ParamByName('EMAIL').AsString: =(Edit9.Text);

          IBdataset2.ExecSQL;

      DATAMOD.TransGest.CommitRetaining;

           ShowMessage('Enregistrement
éffectué avec      

                                      succès');            /*                                            

                           Edit1.Text:= '';

                         Edit2.Text: ='';     /*Libere le Edit après l'enregistrement*/

                      Edit3.Text:= '';

                    Edit4.Text: ='';

                  Edit5.Text:= '';

                Edit6.Text: ='';

              Edit7.Text:= '';

            Edit8.Text: ='';

          Edit9.Text:= '';

       Edit1 .SetFocus;     /*positionne le curseur sur le premier Edit aprés l'enregistrement*/

   End

End;

NB: Pour enregistrer une date: .AsDate: =strToDate(Edit2.Text);
       Pour enregistrer un entier: .AsInteger:=StrToInt(Edit1.text);
       Pour enregistrer un reel. AsFloat:=StrToFloat(Edit3.Text);
       Pour enregistre les caractères Alpha Numerique: AsString:=(Edit5.Text);
ful
3
Zicson1 Messages postés 56 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 27 mars 2010
3 nov. 2008 à 13:33
Je reposte le code pour diminuer la police afin de rendre sa structure compréhensible.

Begin

          IBdataset2.Prepare;

          IBdataset2.ParamByName('Codeclient').AsString:= (Edit1.Text);

          IBdataset2.ParamByName('Nom').AsString: =(Edit2.Text);

          IBdataset2.ParamByName('Prenoms').AsString:= ( Edit3 Text);

          IBdataset2.ParamByName('Adresse').AsString: =(Edit4.Text);

          IBdataset2.ParamByName('CNI').AsString:= ( Edit5 .Text);

          IBdataset2.ParamByName('CS').AsString: =(Edit6Text);

         IBdataset2.ParamByName('Cellulaire').AsString:= ( Edit7 .Text);

          IBdataset2.ParamByName('Telephone').AsString: =(Edit8.Text);

          IBdataset2.ParamByName('EMAIL').AsString:= ( Edit9 .Text);

          IBdataset2.ExecSQL;

      DATAMOD.TransGest.CommitRetaining;

           ShowMessage('Enregistrement éffectué avec succès');            /* accusé de reception*/                                          

                           Edit1.Text: ='';

                         Edit2.Text:= '';     /*Libere le Edit après l'enregistrement*/

                      Edit3.Text: ='';

                    Edit4.Text:= '';

                  Edit5.Text: ='';

                Edit6.Text:= '';

              Edit7.Text: ='';

            Edit8.Text:= '';

          Edit9 .Text: ='';

       Edit1.SetFocus;     /*positionne le curseur sur le premier Edit aprés l'enregistrement*/

   End

End;

ful
0
demande001 Messages postés 15 Date d'inscription samedi 24 juin 2006 Statut Membre Dernière intervention 4 novembre 2008
4 nov. 2008 à 09:15
Bonjour;

sa reste toujours utile (même deux ans après)

Merci quand même
0
Rejoignez-nous