none
SQL SERVER TARİH SORUNU RRS feed

  • Soru

  • Merhabalar,
    Aşağıdaki kod bloğuyla Delphi'den SQL SERVER'a kayıt eklemeye çalışırken incorrect syntax near ‘.2019 hatası alıyorum

    tarih 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;

    11 Şubat 2019 Pazartesi 10:38

Tüm Yanıtlar

  • Parametre kullanmadığınız için böyle bir hata alıyorsunuz , muhtemelen arada bir yerde ' değeri geliyor ve veriyi bozuyor , örnek.

    Altan Özdemir

    11 Şubat 2019 Pazartesi 11:04
  • 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;



    11 Şubat 2019 Pazartesi 11:24
    Yanıtlayıcı
  • 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;

    11 Şubat 2019 Pazartesi 17:28
  • datetime.DateTime düzgün bir DateTime donduruyor sanmiştim, Delphi kullanmıyorum.
    11 Şubat 2019 Pazartesi 22:04
    Yanıtlayıcı