IBUpdateSQL, SQL karmaşık ise hatalı çalışıyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

IBUpdateSQL, SQL karmaşık ise hatalı çalışıyor.

Mesaj gönderen fduman »

Merhaba,

Firebird de çalışıyorum.

2 nesnem var IBQuery ve IBUpdateSQL.

IBQuery Select SQL'e inner join ile birleştirdiğim örnekteki SQL komutunu yazıyorum:

Kod: Tümünü seç

select ID, VARDIYA_ADI, VARDIYA_BILGILERI.CALISMA_KODU,
  BASLANGIC, BITIS, CALISMA_ADI,
  VARDIYA_ADI || ' (' || substring(BASLANGIC from 1 for 5)
  || '-' || substring(BASLANGIC from 1 for 5) || ')' as VARDIYA
 from VARDIYA_BILGILERI
  inner join VARDIYA_TURLERI on
    VARDIYA_BILGILERI.CALISMA_KODU = VARDIYA_TURLERI.CALISMA_KODU  
  order by VARDIYA_ADI
Burada VARDIYA ve CALISMA_ADI kolonu bilgilendirme amaçlı. Herhangi bir update almıyor. Computed diyebiliriz.

IBUpdateSQL'e bağladığımda hatalı çalışıyor. Fieldname'ler geldiği halde Table Name boş geliyor. Zannedersem parser join sorgusunda sapıtıp ana tablonun ismini alamıyor. Dolayısıyla SQL'ler Auto Generate olmuyor.

Yanlış anlaşılmasın multi table update gibi birşey değil benim istediğim. Tek tabloya update yapıyorum fakat başka tablodan select için alan çekiyorum. Bir nevi lookup.

Ne yapmamı öğütlersiniz. Insert, Update, Delete, Refresh SQL'leri manuel mi yazayım?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

tablo adı secilen yerde join ettiginiz tablo adı geliyorsa
buraya ana tablo adını el ile girip enter layın
bende de benzer olaylar olmustu bu tip sorgularda
tablonun alanlarını listede gorunce ve tablo ismi de dogru ise generate edilen sql de dogru oluor, sadece refreshSQL sapıtabiliyor bunu updatesql den kopyalayıp biraz duzenleyince olur sanırım
ÜŞENME,ERTELEME,VAZGEÇME
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Teşekkürler. Önerini deneyeceğim. Daha önce yapmıştım da olmamıştı diye hatırlıyorum.

Ancak benzer inner join içeren başka bir dataset te UpdateSQL'in düzgün çalışması ilginç. Problemi inceliyorum. Şimdilik lookup field yaratarak çözdüm, ancak içime sinmedi. Lookup ta her kayıt için ağda veri gidip geliyor. Bir defada çekmek varken.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

UpdateSQL, Table name'i eğer SQL içinde

Kod: Tümünü seç

substring(BASLANGIC from 1 for 5)
komutu geçiyorsa almıyor. Zannedersem parser'dan kaynaklı bir problem. Gerçi SQL'leri manuel olarak yazarsanız düzgün çalışıyor.

Table name'i elle düzeltsem bile bir sonraki gösterimde gene içi boş olarak geliyor.

Ne yapalım böyle kullanacağız.
Cevapla