modification (update) avec tquery sous delphi7
bonjour
j'ai fait un petit program de recherche j'ai deposer un notre tquery un dbgrid et un tedit
apres dans la proprieté de tquery sa proprieté sql j'ai mit une requete comme suit :
Code:
select*from table_client where (code_client=:E1)
voila la recherche c bon
merci
maintenant la modification sur le chmp rechercher
modification avec tquery?
bonjour
modification :
quand je click sur le boutton modifier voila le program que j'ai ecrit:
je le lance ma recherche apres je double click sur le dbgrid voila ce qui ce passe :
Code:
1 2 3 4 5 6 7 8 9 10
|
procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
form4.edit1.Text := query2.FieldValues['code_client'];
form4.edit2.text := query2.FieldValues['Nom_Client'];
form4.edit3.text := query2.FieldValues['prenom_client'];
form4.edit4.text := query2.FieldValues['adress_client'];
form4.edit5.text := query2.FieldValues['tel_client'];
form4.edit6.text := query2.FieldValues['code_postal'];
end; |
apres dans la meme forme la ou il ya le dbgrid je click sur le boutton modifier jaffiche la form4 :
apres je modifi par exemple l'adress du client avec son numero de telephonne apres je valide avec ce program :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure TForm4.Button1Click(Sender: TObject);
var requete,x2,x3,x4 : string;
x1,x5,x6 : integer;
begin
x1:= strtoint(edit1.Text);
x2:= edit2.Text;x3:= edit3.Text;x4:= edit4.Text;x5:= strtoint(edit5.Text);x6:= strtoint(edit6.text);
requete := 'insert into Table_Client(Code_Client,Nom_Client,Prenom_Client,Adress_Client,Tel_Client,Code_Postal) Values(:x1,:x2,:x3,:x4,:x5,:x6)';
form2.query1.close;
form2.query1.sql.clear;
form2.query1.sql.add(requete);
form2.query1.parambyname('x1').AsInteger := strtoint (edit1.Text);
form2.query1.parambyname('x2').Asstring := edit2.text;
form2.query1.parambyname('x3').Asstring := edit3.text;
form2.query1.parambyname('x4').Asstring := edit4.text;
form2.query1.parambyname('x5').AsInteger := strtoint(edit5.text);
form2.query1.parambyname('x6').AsInteger := strtoint(edit6.Text);
form2.query1.execsql;
end; |
le message derreur qui maffiche est comme suit :
Citation:
''key violation
violation of primary key constraint'pk_table_client'.cant insert duplicate in object 'table_client'
general sql error
the statement has been terminated''
je sais ce que sa veux dire ce que je ne comprend pas c que c une modification donc le tquery nest pas en mode 'edit' ?
comment je fait alors ?
merci
modification avec tquery?
bonjour
je fait une modification donc c'est update, c'est pas insert
j'ai fait une erreur
merci
modification avec tquery?
modification :
quand je click sur le boutton modifier voila le program que j'ai ecrit:
je le lance ma recherche apres je double click sur le dbgrid voila ce qui ce passe :
Code:
1 2 3 4 5 6 7 8 9
| procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
form4.edit1.Text := query2.FieldValues['code_client'];
form4.edit2.text := query2.FieldValues['Nom_Client'];
form4.edit3.text := query2.FieldValues['prenom_client'];
form4.edit4.text := query2.FieldValues['adress_client'];
form4.edit5.text := query2.FieldValues['tel_client'];
form4.edit6.text := query2.FieldValues['code_postal'];
end; |
apres dans la meme forme la ou il ya le dbgrid je click sur le boutton modifier jaffiche la form4 :
apres je modifi par exemple l'adress du client avec son numero de telephonne apres je valide avec ce program :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| procedure TForm4.Button1Click(Sender: TObject);
var requete,x2,x3,x4 : string;
x1,x5,x6 : integer;
begin
x1:= strtoint(edit1.Text);
x2:= edit2.Text;x3:= edit3.Text;x4:= edit4.Text;x5:= strtoint(edit5.Text);x6:= strtoint(edit6.text);
requete := 'update Table_Client set Nom_Client=:x2,Prenom_Client=:x3,Adress_Client=:x4,Tel_Client=:x5,Code_Postal=:x6 where code_client = :x1';
form2.query1.close;
form2.query1.sql.clear;
form2.query1.sql.add(requete);
form2.query1.parambyname('x2').Asstring := edit2.text;
form2.query1.parambyname('x3').Asstring := edit3.text;
form2.query1.parambyname('x4').Asstring := edit4.text;
form2.query1.parambyname('x5').AsInteger := strtoint(edit5.text);
form2.query1.parambyname('x6').AsInteger := strtoint(edit6.Text);
form2.query1.execsql; |
le message derreur qui maffiche est comme suit :
Citation:
'query1: field 'x1' is of unknown tyoe' process stoped use step or run to continue.
alors comment jaffecte la valeur du code_client dans la clause where pour modifier les autres champs?
merci
tqurey insertion gerer les exceptions ?
bonjour
tquery insertion :
maintenant se que je vuex si possible svp de jerer les exceptions des erreur par exemple quand l'utilisateur valide
un enregistrement qui existe deja ou bien une double clé au lieu que le systeme maffiche lerreur jaimerai que sa moi qui
jere lerreur on meton un message
ce code_client existe deja veeuillez inserer un entre code ou bien appuyer sur annuler pour annuler linsertion
cette enregistrement existe deja veuillez inserer un autre enregistrement oubien click sur annuler pour annuler linsertion
voila mon source d'insertion : comment le pimmenter ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| procedure TForm3.Button1Click(Sender: TObject);
var requete, NomClient, PrenomClient, AdrClient: string;
CodeClient, TelClient, CodePostal: Integer;
begin
//variable pour allimenter les parametres de la requete
codeclient:= strtoint(edit1.text);
nomclient:= edit2.Text;
prenomclient:= edit3.Text;
adrclient:= edit4.Text;
telclient:= strtoint(edit5.Text);
codepostal:= strtoint(edit6.Text);
requete := 'insert into Table_Client(Code_Client,Nom_Client,Prenom_Client,Adress_Client,Tel_Client,Code_Postal) Values(:codeclient,nomclient,prenomclient,adrclient,telclient,codepostal)'
with form2.query1 do
begin
// definition de la raquete
close;
sql.clear;
sql.add(requete);
//alimentation des parametres
parambyname('codeclient').asinteger := strtoint(edit1.Text);
parambyname('nomclient').asstring := edit2.text;
parambyname('prenomclient').asstring := edit3.text;
parambyname('adrclient').asstring := edit4.text;
parambyname('telclient').asinteger := strtoint(edit5.Text);
parambyname('codepostal').asinteger := strtoint(edit6.Text);
try
//execution
prepare;
execsql;
exept
//gerer les erreurs
showmessage('linsertion annuler veuillez reessayer svp');
end;
end;
end; |
merci
tquery gerer les exceptions des erreurs
bonjonr edam
je vais consulté ton program et je te rependrai et jaurai quelque question a te posé si c possible tout a lheure
aussi es que c possible davoir un exemple comment gerer les exception de redandance des code par exemple ou bien de redandance de lenregistrement
avec le tquery?
merci