Query Hatasi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Query Hatasi

Mesaj gönderen mrtblt »

Siparis tablomdaki sadece istedigim siparisin icerisindeki memoda belirledigim kodlari guncellemek icin asagidaki gibi bir query yazdim

Kod: Tümünü seç

  a := dm.tbl_anasip.FieldByName('sipkod').AsString;
  c := combobox1.Text;
  x := memo1.lines.Count;
  for i := 0 to x - 1 do
  begin
    q.Close;
    q.SQL.Clear;
    q.SQL.Add('update sip_detay set durumu ='+trim(c)+''' where SIPCODE = '+trim(a)+''' and where  itemcode ='+memo1.Lines[i]+'');
    q.Open;
  end;

Sorguyu calistirmayi denedigimde su hata ile karsilasiyorum

Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 38
' where SIPCODE = S01''. Process crm.exe (4944)
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

s.a.
birincisi 2 tane where kullanmışsınız,
ikincisi tırnakları kontrol edin.
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Where'in 1 kere kullanilmasi noktasinda haklisin dalginliga gelmis tirnak hususundada hakli oldugunu biliyorum ama burada dalginlik yok :) bissuru tirnak varyasyonu denedim beceremedim mesela sonun gibi

Kod: Tümünü seç

where SIPCODE = '+trim(a)+'''
derleyicinin bunu dogru anlayabilecegi sekilde tirnaklari nasil duzenlememiz gerekiyor.
Gene yukaridaki hatanin aynisini veriyor
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Su sekilde cozdum. tesekkurler

Kod: Tümünü seç

    q.SQL.Add('update sip_detay set durumu ='''+trim(c)+''' where SIPCODE = '''+trim(a)+''' and itemcode ='''+memo1.Lines[i]+'''');
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Mesaj gönderen akdatilla »

mrtblt yazdı:Where'in 1 kere kullanilmasi noktasinda haklisin dalginliga gelmis tirnak hususundada hakli oldugunu biliyorum ama burada dalginlik yok :) bissuru tirnak varyasyonu denedim beceremedim mesela sonun gibi

Kod: Tümünü seç

where SIPCODE = '+trim(a)+'''
derleyicinin bunu dogru anlayabilecegi sekilde tirnaklari nasil duzenlememiz gerekiyor.
Gene yukaridaki hatanin aynisini veriyor
s.a.
Bazı arkadaşlar farklı şekillerde de yapyorlar ancak istersen şu tekniği kullanabilirsin:
'...where SIPCODE = '#39+kod+#39'....';


s
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

yani bu sekilde yaptigimizda degiskeni sadece 1 er tane tirnak arasina almak yetiyor mu?
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Sevgili atilla hazir mevzuya girmisken bi soru daha sormak istiyorum :)
Soyle bir tablom var

Kod: Tümünü seç

CREATE TABLE SIP_DETAY (
    SIPCODE      VARCHAR(10),
    ITEMCODE     VARCHAR(10),
    RENK         VARCHAR(35),
    TOPLAM_ADET  INTEGER,
    .....
    .....

);
Bu tablodan itemcod distinct olmak kaydi ile su sorguyla

Kod: Tümünü seç

SELECT DISTINCT ITEMCODE, SUM(TOPLAM_ADET) AS ADET, SUM(VAT) AS VAT, SUM(TUTAR) AS TUTAR  FROM SIP_DETAY  GROUP BY ITEMCODE
herbir itemcode icin toplam ne kadar siparis alinmis onu bulabiliyorum. Yanliz yapmak istedigim biseyvar. Bir hiyerarsi kuraraktan birkac distinct kullanmak istiyorum yani soyle diyeyim.

sipcode distinct alalim sonra bu sipcode altindaki itemcode larida distinct alalim ve herbir itemcode icin toplamlari bulalim.
yani soyle bisey olsun :

sipcode itemcode toplam
1 2452 155
1 3475 115
1 2613 128
2 1442 136
2 1816 283
2 1525 122
2 2613 144

Boyle bir hiyerarsi mumkunmu? Mutlaka mumkundur :D
Bold satirlari gordunmu? ayni itemcode ama birbilerine karismiyorlar cunku kurulan hiyerarsi ile onlar ilgili sipcode a baglilar

Ama boyle yapidaki bir sorguyu nasil kurabiliriz?
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Mesaj gönderen akdatilla »

s.a.
kusura bakma mesajını daha bugün gördüm.
Mesajından anladığım kadarıyla şöyle bir sorgulama yapabilirsin :

Kod: Tümünü seç

SELECT SIPCODE,ITEMCODE, SUM(TOPLAM_ADET) AS ADET, SUM(VAT) AS VAT, SUM(TUTAR) AS TUTAR FROM 
SIP_DETAY  GROUP BY SIPCODE, ITEMCODE
Cevapla