Soran
SQL SERVER TARİH SORUNU

Soru
-
Merhabalar,
Aşağıdaki kod bloğuyla Delphi'den SQL SERVER'a kayıt eklemeye çalışırken incorrect syntax near ‘.2019 hatası alıyorumtarih formatıyla ilgili sorunu bir türlü çözemedim. yardımcı olabilir misiniz.
procedure TForm2.Button1Click(Sender: TObject);
var
sor:integer;begin
sor:=MessageDlg('Yeni Kayıt Eklensin mi?',mtwarning,[mbyes,mbno],0); if sor=IDYEs then
begin
adoq1.SQL.Clear;
adoq1.SQL.Add('INSERT personel_tbl (personel_sicil_no, personel_tc_no, personel_ad,personel_soyad, baslama_tarih) VALUES ('+edit1.Text+','+edit2.Text+','''+edit3.Text+''','''+edit4. Text+''',''datetime.Datetime'' )');
adoq1.ExecSQL;
end
else
exit;
end;
Tüm Yanıtlar
-
-
Burada tarih kullandığın için hata alman Tanrı'nın bir lütfu, yoksa daha büyük bir hatayla kodlamaya devam ediyor olabilirdin.
ASLA ve ASLA bu şekilde string birleştirerek SQL komutu oluşuma, parametre kullan.
adoq1.SQL.Add('INSERT personel_tbl (personel_sicil_no, personel_tc_no, personel_ad,personel_soyad, baslama_tarih) VALUES (@pSicilNo, @pTC, @ad, @soyad, @tarih)'); // parametreleri kur
Delphi kaynaklarına hızlıca bir göz attım, parametreleri biraz garip kuruyor gibi (Delphi'de multiline string yok mu?):
adoq1.SQL.Add('INSERT personel_tbl'+ ' (personel_sicil_no, personel_tc_no, personel_ad,personel_soyad, baslama_tarih)'+ ' VALUES'+ ' (:pSicilNo, :pTC, :ad, :soyad, :tarih)'); adoq1.Parameters.ParamByName('pSicilNo').Value := edit1.Text; adoq1.Parameters.ParamByName('pTC').Value := edit2.Text; adoq1.Parameters.ParamByName('ad').Value := edit3.Text; adoq1.Parameters.ParamByName('soyad').Value := edit4.Text; adoq1.Parameters.ParamByName('tarih').Value := datetime.Datetime; adoq1.ExecSQL;
-
datetime.datetime veya datetime.date veya datepicker.date vs bunların hiçbiriyle yine kayıt yapamadım ama datepicker nesnesinin tarih değerine edit kutusuna atınca kayıt işlemi yapılıyor. en azından şimdilik bir sorun yok gibi. son hali şu şekilde oldu.
procedure TForm2.Button1Click(Sender: TObject);
var
sor:integer;
begin
sor:=MessageDlg('Yeni Kayıt Eklensin mi?',mtwarning,[mbyes,mbno],0);
if sor=IDYEs then
begin
adoq1.SQL.Clear;
adoq1.SQL.Add('INSERT personel_tbl (personel_sicil_no, personel_tc_no, personel_ad,personel_soyad, baslama_tarih) VALUES(:sicil, :TC, :ad, :soyad, :tarih)');
adoq1.Parameters[0].Value:=edit1.Text;
adoq1.Parameters[1].Value:=edit2.Text;
adoq1.Parameters[2].Value:=edit3.Text;
adoq1.Parameters[3].Value:=edit4.Text;
adoq1.Parameters[4].Value:=strtodate(edit5.Text);
adoq1.ExecSQL;
end
else
exit;
end; -