SQL Table ilişkilendirmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

SQL Table ilişkilendirmek

Mesaj gönderen sinancaylak »

Merhaba Ben bu soruyu daha öncede sordum ama hala cevabını alamadım. 2 tane tablom var bunlar MUSTERBIL ve MUSTERIURUN

MUSTERIBIL.DB deki alanlarım
MUSTERINO
ADI
SOYADI
ADRESI
TEL

MUSTERIURUN.DB deki alanlarım

MUSTERINO
URUNNO
URUNADI
URUNSERINO

Bu tablalar için 2 adet SQL ve DataSource Kullanıyorum.

MUSTERIBIL.DB deki SQL le şunları yazıyorum
SELECT * FROM MUSTERIBIL
WHERE MUSTERIBIL.MUSTERINO=MUSTERINO

Formdaki UrunNo alanınada sıra verdirterek o kişiye diğer veri tananından birden fazla kayıt girdirmek istiyorum ama ilişkilendirme yaptığımda Read Only hatası alıyorum Request Live True ve False olarak denedim ama sonuç alamadı böyle bir işikilendirmeyi SQL ile nasıl yaparım Bu çok önemli benim için Yardımlarınızı Bekliyorum. Herkese Kolay Gelsin :)
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Merhaba,

Büyük bir ihtimalle kodlama hatası yapıyorsunuzdur. Yazdığınız kodları Copy Past yapıp ekleyiniz bir inceleyelim bakalım.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

SQL Cümlen Yanlış gibi geldi bana


SELECT * FROM MUSTERIBIL,MUSTERIURUN
WHERE MUSTERIBIL.MUSTERINO=MUSTARIURUN.MUSTERINO
Şeklinde dene
Bize iyilik yaraşır.
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Sorunum devam ediyor

Mesaj gönderen sinancaylak »

ben iki doğru yazdığıma inanıyorum ama kodlar aynı size yukarıda belirttiğim gibi neden olmuyo acaba
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Veritabanı paradoks mu? Query bileşeninde ve DBGrid bileşeninde ReadOnly yı kontrol et. False mı?

Ayrıca sql aşağıdaki şekilde yazıp deneyebilirsin.

Kod: Tümünü seç

SELECT mb.MUSTERINO FROM MUSTERIBIL mb, MUSTERIURUN mu
WHERE mu.MUSTERINO = mb.MUSTERINO 
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

recep hocam yaptığını denedim ama olmuyor. ben o yöntemi size sormadan öncede denemiştim ama sonuç alamadım. kayıt girmeye çalıştığımda database insert mode gibi hata veriyor.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

eger iki tabloyada kayıt gireceksen master-detail bağlantı yapmak zorundasın
dilim dondugunce anlatayım
bunun icinde master MUSTERIBIL de MUSTERINO primary index olacak(AUTOINC daha iyi olur)
MUSTERIURUN de MUSTERIURUNID diye AUTOINC bir alan olustur be primary index olsun ayrıca MUSTERINO alanını da Master-Detail baglantı icin kullanacagız onun icin Secondary index tanımla ama Unique olmasın

MUSTERIURUN tablosunun mastertable ına MASTERBIL i sec MasterFields ise
MUSTERINO lar olacak
bu sekilde iki DbGrid koydugun zaman bir musteri bilgisi olusturup onun altına urunlerini girebilirsin
URUNNO alanının URUN tablosuna lookup yapılması lazım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ayrıca tablolarının readonly olup olmadığını kontrol edebilirsin. çünkü genelde cd ye kayıt yapıp geri alındığında (eğer ziplenmemişse) tüm cd den kopyalanan dosyalar salt okunur olarak kalmış oluyor.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

gkimirti hocam ben pek bişi anlayamadım sizin bu ilşkilendirme örneği benim tablede kullandığım mastersource ile ilişkilendirmeye benziyo ben SQL kullanıyorum ve tablolarımı SQL ile bağlamak istiyorum. İyi çlışmalar
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

aynı olay queryler içinde gecerli olmalı
ama ben dataset ile (firebird) anlatacagım olayı gerceklemistim
sonucta ibdataset de bir query
tam bilmiyorum ama bir ornek yapmaya calısacagım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Konu epey uzamış ama malesef bir çare olmamaış galiba....
Sinan bey, aslında tam olarak meselenin nerede oldugunu da anlayabilmiş değilim yani. Bahsettiginiz hatayı veren Query nesnesinin icinde

Kod: Tümünü seç

SELECT * FROM MUSTERIBIL 
WHERE MUSTERIBIL.MUSTERINO=MUSTERINO 
bu kodlar mı yazıyor...
Eger oyleyse esitligin sagındaki MUSTERINO nedir? Eger bu degilse ki zaten 2 adet sql ve datasoruce kullanıyorum demişsiniz ben bunu 2 adet TQuery nesnesi kullandığınız olarak anlıyorum. O zaman digerinin icinde yani SQL ozelliginde ne yazıyor. Ve de hata hangisinde var...

Butun bunların dışında iki TQuery nesnesini birbiri ile master detay ilişkilendirmek için detay Query'nin datasource 'u olarak master'î secmeniz ve detay'daki SQL cümlesinin where kısmında

Kod: Tümünü seç

MUSTERI_NO=:MUSTERI_NO
gecmesi gerekir.

Eger detay TQuery'nin SQL cümlesi icinde join islemi varsa yani 2 tablodan bilgi cekiyorsanız zaten read only olmak zorunda onu ancak TUpdateSQL kullanarak güncelleyebilirsiniz....

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

abi ben de hemen bir uygulama yaptım
detail tabloya bir kayıt girince master in bagladıgım numarasını almıyor.
ben de detailin before post olayına

Kod: Tümünü seç

  with QuerySube do
   FieldByName('MUS_ID').AsInteger:= Params[0].AsInteger;
gibi bir kod eklemek zorunda kaldım

bunsuz olmuyor mu acaba?
ÜŞENME,ERTELEME,VAZGEÇME
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

gkimirti VE Fahrettin abi ben yaptığım örneği size mail ile bir göndersem incelermisiniz? bu konuyuda bende böylelikle çözebilirim herhalde
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

cok fazla ugrasma sansim yok. Fakat gondermissiniz zaten....
Tercih ettigim yontem burdan soylediklerimi yapıp ozellikle de sorduklarıma cevap vermeniz ve bu sekilde cozume gitmeniz seklindedir.

Koda baktım. ilk gordugum hata master tabloya giris yapılmasına read only oldugu icin izin vermiyor... Bunun sebebini de bir onceki mesajimda yazmistim..
Fahrettin yazdı:Eger detay TQuery'nin SQL cümlesi icinde join islemi varsa yani 2 tablodan bilgi cekiyorsanız zaten read only olmak zorunda onu ancak TUpdateSQL kullanarak güncelleyebilirsiniz....
Master tablo olan Query1 in SQL'i icinde urun tablosu ile join yapmak tamamen gereksiz.

Eger soruyu sorarken hatayı veren Query1 icindeki SQL cumlesini yazsaydınız ki bunu da sormustum. Bu kadar beklemeden cozume ulasirdik.... ;)
Fahrettin yazdı:Sinan bey, aslında tam olarak meselenin nerede oldugunu da anlayabilmiş değilim yani. Bahsettiginiz hatayı veren Query nesnesinin icinde

Kod: Tümünü seç

SELECT * FROM MUSTERIBIL 
WHERE MUSTERIBIL.MUSTERINO=MUSTERINO  
bu kodlar mı yazıyor... 
Sadece musteri tablosundan bir select yapmalısınız....

Kod: Tümünü seç

SELECT Musteri.MUS_NO, Musteri.ADI, Musteri.SOYADI
FROM "Musteri.db" Musteri
Tabi bu meseleyi asinca detay tablo konusunda muhtemelen takılacaksınız cunku orada da yine daha once belirttigim

Kod: Tümünü seç

where MUSNO=:MUS_NO 
eksik....

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

gkimirti abi maille gönderdiğin örnek çok işime yarsı sonunda SQL ile iki tabloyu ilişkilendirebildim. Fahrettin abi kodlarımda yanlışlık yok gkimirti
abinin before post olayına yazdığım komut ile bütün sorunum çözüldü hepinize çok teşekkür ederim. Kolay gelsin
Cevapla