Yazdığım projede iki olasılık var tarih ve isim varsa update yoksa insert et.İnsert edileceği zaman alanları değiştirmek istiyorum.Yaptığım bir çok denemeler de hatalar alıyorum.Sql de insert into alanlar(Field) değişebilirmi.Bunun pratik yolunu gösterirseniz çok sevinirim..

Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
var
sqlstrin,sqlstrin2,asl,az:string;
etop:integer;
begin
asl:=PageControl1.ActivePage.Name;
sqlstrin:='insert into eczane (TARIH,ILAC_ADI,'+asl+',AK_TOP_DEG)';
sqlstrin2:='values(:TARIH,:ILAC_ADI,:'+asl+',:AK_TOP_DEG)';
az:=sqlstrin+sqlstrin2;
etop:=yeni.Query4S1.AsInteger+yeni.Query4S2.AsInteger+yeni.Query4S3.AsInteger
+yeni.Query4S5.AsInteger+yeni.Query4S6.AsInteger+yeni.Query4S7.AsInteger
+yeni.Query4S8.AsInteger+yeni.Query4S9.AsInteger+yeni.Query4S10.AsInteger
+yeni.Query4S11.AsInteger+yeni.Query4S12.AsInteger+yeni.Query4S13.AsInteger;
with yeni.Query3 do
begin
Close;
Prepare;
SQL.Clear;
SQL.Add('select * from eczane');
SQL.Add('where TARIH=:asi');
SQL.Add('and ILAC_ADI=:com');
ParamByName('asi').AsDate:=DateTimePicker1.Date;
ParamByName('com').AsString:=DBComboBox1.Text;
Open;
end;
if yeni.Query3.IsEmpty<>True then
begin
with yeni.Query4 do
begin
Close;
SQL.Clear;
SQL.Add('update eczane set TARIH=:asi,');
SQL.Add('ILAC_ADI=:com,');
SQL.Add(':Pan=:Sayi,');
SQL.Add('AK_TOP_DEG=:etoplam,');
SQL.Add('where TARIH=:asi');
SQL.Add('and ILAC_ADI=:com');
Prepare;
ParamByName('etoplam').AsInteger:=12;
ParamByName('Pan').AsString:=PageControl1.ActivePage.Name;
ParamByName('Sayi').AsInteger:=StrToInt(DBEdit1.Text);
ParamByName('asi').AsDate:=DateTimePicker1.Date;
ParamByName('com').AsString:=DBComboBox1.Text;
ExecSQL;
end;
end
else
with yeni.Query4 do
begin
Close;
SQL.Clear;
SQL.Add(az);
Prepare;
ParamByName('AK_TOP_DEG').AsInteger:=StrToInt(DBEdit1.Text);
ParamByName(asl).AsInteger:=StrToInt(DBEdit1.Text);
ParamByName('TARIH').AsDate:=DateTimePicker1.Date;
ParamByName('ILAC_ADI').AsString:=DBComboBox1.Text;
ExecSQL;
end;
end;
end.