query içindeki %Y %m %d kısmında E2038 Illegal character

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kazimates
Üye
Mesajlar: 332
Kayıt: 01 Tem 2005 12:40
Konum: Kıbrıs
İletişim:

query içindeki %Y %m %d kısmında E2038 Illegal character

Mesaj gönderen kazimates »

form üzerinde query çift tıklanıp içine

Kod: Tümünü seç

SELECT personel.kartno, personel.adi, personel.soyadi, kodlar_departman.aciklama, saat.tarih, min( saat.giris_saat )
FROM `personel_giriscikis` AS saat, `personel_kartlari` AS personel
INNER JOIN kodlar_departman ON personel.departman_kod = kodlar_departman.kod
WHERE saat.personel_id = personel.kartno
AND date_format( saat.tarih, '%Y %m %d' ) = date_format( '2014-05-27', '%Y %m %d' )
GROUP BY personel_id
yazılınca çalışıyor fakat form üzerinde button konulup buton tıklanınca açılan kod penceresinde aşağıdaki gibi bir kod yazıldıpında ve program derlenmeye çalışıldığında ise
[dcc32 Error] PDKS_unit.pas(47): E2038 Illegal character in input file: '%' (#$25) hatası alınıyor. Burada %Y önündeki ' karakteri hata aldırıyor. Bunu nasıl önleyebilirim?

Kod: Tümünü seç

procedure TForm2.Button1Click(Sender: TObject);
begin

  if MyQuery1.Active then
  begin
    MyQuery1.Close;
    MyQuery1.SQL.Clear;
  end;

  with form2 do
  begin
     MyQuery1.SQL.text:=' select personel.kartno, personel.adi, personel.soyadi,'
        + 'kodlar_departman.aciklama, saat.tarih, min( saat.giris_saat )'
        + 'FROM `personel_giriscikis` AS saat, `personel_kartlari` AS personel'
        + 'INNER JOIN kodlar_departman ON personel.departman_kod = kodlar_departman.kod'
        + 'WHERE saat.personel_id = personel.kartno'
        + 'AND date_format( saat.tarih, '%Y %m %d' ) = date_format( '2014-05-27', '%Y %m %d' )'
        + 'GROUP BY personel_id ';
     MyQuery1.Open;
  end;
end;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: query içindeki %Y %m %d kısmında E2038 Illegal character

Mesaj gönderen thelvaci »

QuotedStr kullanabilirsiniz.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: query içindeki %Y %m %d kısmında E2038 Illegal character

Mesaj gönderen xxxjedixxx »

Sorunun yazımdan kaynaklanıyor.

Örneğin; Bir değişkene "Ali'nin kitabı" ifadesini atayacak olursak. Burada "Ali" den sonraki tek tırnağa dikkat.

Metin := 'Ali'nin kitabı';
Burada derleyici bize hata verecektir. Çünkü Ali den sonra tek tırnak ile metni kapatmış olduk. Sonrasında tırnak içinde olmayan nin bağlacı ile devam ediyoruz ve bu da hataya neden oluyor.
Yani Delphi'de tırnak içinde tek tırnağa ihtiyacımız olursa iki tane tek tırnak (apostrof) yazıyoruz.

Metin := 'Ali''nin kitabı'; şeklinde

Senin çözümün ise;
'AND date_format( saat.tarih, '%Y %m %d' ) = date_format( '2014-05-27', '%Y %m %d' )'

satırını aşağıdaki şekilde değiştirmek olacaktır.

'AND date_format( saat.tarih, ''%Y %m %d'' ) = date_format( ''2014-05-27'', ''%Y %m %d'' )'
Cevapla