İki tablodan birden sorgulama yapmak...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

O kısmın filitreleme ile ilgisi yok JOIN de kullandığın bağlama ile ilgili :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Evet rşimşek hocam dediğiniz gibi yaptım. Ok sorun yok. :wink: Ttüm yardımlarınız için çok tşk ederim. Allah hepinizinden razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Cümlemizden inşallah :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Herkese iyi akşamlar;
Bu sorumda bu konun devamı olduğu için ayrı bir başlık açmadım. O yüzden bunun altına devam ediyorum.
Sorunum şu arkadaşlar, yukarıda çalışan son kod ile rşimşek hocamın dediği gibi left join ile iki tabloyu birbirine bağlarım ve yukarıdaki kod bloğu ile istediğim kayıtları ekrana getirebildim. Şimdiki sorunum şu bu ekrana getirdiğim kayıtların bir, iki alanında bilgi değiştirmek istiyorum. Ama bir türlü başaramadım. Edit-post yöntemi ile denedim olmadı. Update Set ile denedim yine olmadı. Nasıl bir kod bloğu ile acaba istediğim alanları güncelleyebilirim. Sorgulamadan sonra ekrana gelen sonucu aşağıdaki kod ile başka bir forma taşıyorum.

Kod: Tümünü seç

  with mfsatisfrm do
    Begin
      dxDateEdit1.Text := DateToStr (ustablefaturatarihi.AsDateTime);
      dxEdit1.Text := ustablefaturano.AsString;
      dxEdit2.Text := ustablecunvan.AsString;
      dxEdit3.Text := ustableucinsi.AsString;
      dxEdit4.Text := ustableserino.AsString;
      dxEdit5.Text := ustablebarkod.AsString;
      ShowModal;
    End;
ama buradan değiştirmek istediğim alanları nasıl değiştiririm. Bu konuda da yardımcı olabilirseniz çok sevinirim. Allah cümlenizden razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sanırım Veritabanını söylemediniz. Eğer firebird ise IBDataSet veya muadili bir bileşen kullanamalısınız. Arama kelimeniz UpdateSQL :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam veritabanı MySQL kullanıyorum. Update SQL ile denedim ama istediğim update kodunu bir türlü oluşturamadım. Kısaca bir örnek yazabilirmisiniz acaba mümkünse?
Şimdiden çok tşk ediyorum. Allah razı olsun...
Saygılar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hangi bileşen setini kullanıyorsun :?:

Normalde select sorgu cümlesi karışık olunca RequestLive özelliğini True yaparak edit modda kullanabilirsiniz. Dah karışık (JOIN li veya birden fazla tablo kullanımında vb.) daha farklı yöntemler kullanmak gerekiyor :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Günaydınlar;
Hocam notmal Query kullanıyorum. Requestlive özelliğini true yaparak da denemek adına bir sql cümlesi yazdım ama başaramadım hocam. Nasıl bir sql kodu yazmam gerektiği hakkında akşamdan beri düşünmeme rağman bulamadım :(
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Query ile olmaz.. Dediğim gibi sade yapıdaki sorgularda ancak RequestLive True diyebilirsiniz.. Onun haricinde üzerinde gezindiğiniz kayıtlarda başka bir yöntemle mesela kayıta ulaşmayı sağlayan anahtar alandan örnek bir table olarak da arka planda tabloyu açıp kayıtı güncelleyebilirsin.. Firebird için bu işleri IBX veya FIBPlus bileşen seti, IBX de UpdateSQL bileşeni veya FIBPlus da UpdateSQL cümleciği ile kolaylıkla hallediyor :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam peki query'nin yani dataacces'in updatesql'i ile olmaz mı? Eğer bununla da olmuyor ise benim bu şekilde olan bir kaydı nasıl güncellemem gerekiyor. Yani bu etaptan sonra ne yapabilirim? :(
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

BDE nin Query bileşenine de UpdateSQL bileşeni bağlayarak yapabilirsin :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam UpdateSQL bileşenini bu zamana kadar hiç kullanmadım. Acaba bunun kullanımı ile ilgili biraz bilgi verebilirmisiniz. Yada mümkünse şu andaki olaya bu UpdateSQL bilşenini bağlayıp nasıl kullanabileceğim hakkında bir bilgi verebilirseniz çok memnun olurum.
Allah cümlenizden razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

UpdateSQL sade olmayan karmaşık dediğimiz türdeki SELECT yapıları için kullanılır. Yoksa basit SELECT yapılarında (select * from employee gibi) RequestLive i True yapmak yeterli olur.

BDE nin UpdateSQL bileşenini forma ekleyip hazırladığın Query bileşenine bağladıktan sonra UpdateSQL bileşenine sağ tuş yapıp en üstteki Update Editor.. seçiyorsun. Daha sonra gerekli esas tabloyu belirtip anahtar/key alanını da belirledikten sonra Generate SQL ile gerekli Insert/Update/Delete SQL leri oluşturulur. Gerekiyorsa ufak tefek müdahaleler yapabilirsin... Birden fazla tabloda kayıt işlemleri yapılır mı dersen hiç denemedim. Bu bahsettiklerim sadece esas/ilk tablo için geçerli :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam tarifinizle sonunda updatesql bileşenini nasıl bağlayacağımı buldum. Çok tşk ediyorum bağladıktan sonraki resimlerini ekledim acaba sql cümlesinin ve değiştirmek istediğim alanların bağlantısı ve sql cümlesi doğru mu acaba birde verileri değiştirmek için kullandığım kodu aşağıda yazıyorum. Bu şekilde iken hata vermiyor ama update'te etmiyor istediğim alanları. Acaba nerede yanlış yapıyorum.
Resim 01:
Resim
Resim 02:
Resim

Değiştirmek için kullandığım kod ise;

Kod: Tümünü seç

procedure Tmfsatisfrm.satis;
begin
  With faturasizsatisfrm do
    Begin
      ustable.Edit;
      ustablesatilankisi.AsString := dxEdit6.Text;
      ustablesatistarihi.AsString := dxdateedit1.Text;
      ustablesatisfiyat.Ascurrency := dxcurrencyedit1.Value;
      ustable.Post;
    End;
  Close;
end;
İlginiz için çok tşk ediyorum. Allah cümlenizden razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yaptıklarında normal olmayan bir durum farkedemedim. Malum Query bileşeni için güncelleme olaylarında Query yi kapatıp açmadan yapılan değişiklikleri algılaması zor gibi.. Yani Firebird deki commit/Commitraining olayı gibi.. Yine de Database ve Session bileşeleri ile bir şeyler yapabilirsin belki. Ayrıca My-Sql ile fazla bir tecrübem yok. Genelde My_Sql için Zeos bileşenleri tavsiye edilir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla