C# Garip Bir Hata Alıyorum

Bu konuyu okuyanlar

Caglayan45

Öğrenci
Katılım
20 Nisan 2015
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Kod:
void veriler()
         {
             con.Open();
             da = new OleDbDataAdapter("select tb1.id,p_sicil_no,adi,soyadi,anne_adi,baba_adi,giris_tarihi,adresi from tb1 left outer join tb2 on tb1.id = tb2.id left outer join tb3 on tb2.id = tb3.id left outer join tb4 on tb3.id = tb4.id", con);
             cb = new OleDbCommandBuilder(da); 
             da.Fill(dt);        /* herşey doğru sıkıntı yok ama select cümlesinde hata veriyor*/
             bs.DataSource = dt;
             dataGridView1.DataSource = bs;
             textBox1.DataBindings.Add("text", bs, "p_sicil_no");
             textBox2.DataBindings.Add("text", bs, "adi");
             textBox3.DataBindings.Add("text", bs, "soyadi");
             textBox4.DataBindings.Add("text", bs, "anne_adi");
             textBox5.DataBindings.Add("text", bs, "baba_adi");
             dateTimePicker1.DataBindings.Add("text", bs, "giris_tarihi");
             textBox6.DataBindings.Add("text", bs, "adresi");
             con.Close();
         }

1.png


Aldığım hata bu bir türlü çözümü bulamıyorum select cümlesindeki tb3 ve tb4 ü kaldırdığımda tb1 ve tb2 tablolarındaki veriler hatasız bi şekilde görüntüleniyor.

2.jpg


Veritabanıda bu şekilde, yardımcı olursanız çok sevinirim. Bu arada aynı select cümlesini sql serverda aynı tabloları oluşturup denedim gayet sorunsuz verileri görüntüleyebildim.[:)]
 

YNY

Asistan
Katılım
27 Kasım 2016
Mesajlar
121
Reaksiyon puanı
44
Puanları
28
sorun olmazsa access dosyasını eklermisin, onu dene bunu dene demek yerine kesin birşeyler söyleyelim.
 

errno

Doçent
Katılım
17 Temmuz 2016
Mesajlar
694
Reaksiyon puanı
567
Puanları
93
Merhaba,

bende diğer arkadaşıma katılıyorum, lütfen en azından verilerinizin bulunduğu resimleri ekleyin fikir sahibi olalım ve yardımcı olmaya çalışalım. Diğer yandan, programınız bağlantı kurarken Access tablolarınız umarım açık değildir.

Ayrıca dikkatimi çekti; neden left outer join ? Zaten id ile iki tabloyu bağlamaya çalışıyorsunuz ve ardından sol tarafındaki tüm kayıtları getirtiyorsunuz, uyan sağ kayıtları da ekstra getirtiyorsunuz. Burada sizi kritize etmek değil maksadım sadece anlamaya çalışıyordum.

Saygılarımla
 

Caglayan45

Öğrenci
Katılım
20 Nisan 2015
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
sorun olmazsa access dosyasını eklermisin, onu dene bunu dene demek yerine kesin birşeyler söyleyelim.

Merhaba,

bende diğer arkadaşıma katılıyorum, lütfen en azından verilerinizin bulunduğu resimleri ekleyin fikir sahibi olalım ve yardımcı olmaya çalışalım. Diğer yandan, programınız bağlantı kurarken Access tablolarınız umarım açık değildir.

Ayrıca dikkatimi çekti; neden left outer join ? Zaten id ile iki tabloyu bağlamaya çalışıyorsunuz ve ardından sol tarafındaki tüm kayıtları getirtiyorsunuz, uyan sağ kayıtları da ekstra getirtiyorsunuz. Burada sizi kritize etmek değil maksadım sadece anlamaya çalışıyordum.

Saygılarımla


Buyrun veritabanım, neden left outer join = 4 tabloyu 1 datagridview da görüntülemem gerek benim aklıma bu geldi bende böyle yaptım eğer fikirleriniz varsa başka alabilirim.İsterseniz daha aktif konuşabileceğimiz platformlardan da konuşabiliriz bu sorunu çözmem gerek. :)

Bu arada tablolarım açık değil bağlantı sırasında :)
 

YNY

Asistan
Katılım
27 Kasım 2016
Mesajlar
121
Reaksiyon puanı
44
Puanları
28
Sorunun Çözümü:

Kod:
select tb1.id,p_sicil_no,adi,soyadi,anne_adi,baba_adi,giris_tarihi,adresi from((tb1 left outer join tb2 on tb1.id = tb2.id) left outer join tb3 on tb2.id = tb3.id) left outer join tb4 on tb3.id = tb4.id

Sorunun Açıklaması:

Olebd birden fazla join kullanıma sadece parantez kullanırsan izin veriyor. Açık şekilde kullanmaya izin vermiyor.

Örnek Kullanımı:

select
*
from ( ( tb1
inner join tb2 on tb1.sutunadi= tb2.sutunadi
)
inner join tb3 on tb2.sutunadi= tb3.sutunadi )
inner join tb4 on tb3.sutunadi= tb4.sutunadi

Sonuç: Test edildi çalışıyor.

sonuc.jpg
 

Caglayan45

Öğrenci
Katılım
20 Nisan 2015
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Sorunun Çözümü:

Kod:
select tb1.id,p_sicil_no,adi,soyadi,anne_adi,baba_adi,giris_tarihi,adresi from((tb1 left outer join tb2 on tb1.id = tb2.id) left outer join tb3 on tb2.id = tb3.id) left outer join tb4 on tb3.id = tb4.id

Sorunun Açıklaması:

Olebd birden fazla join kullanıma sadece parantez kullanırsan izin veriyor. Açık şekilde kullanmaya izin vermiyor.

Örnek Kullanımı:

select
*
from ( ( tb1
inner join tb2 on tb1.sutunadi= tb2.sutunadi
)
inner join tb3 on tb2.sutunadi= tb3.sutunadi )
inner join tb4 on tb3.sutunadi= tb4.sutunadi

Sonuç: Test edildi çalışıyor.

Ekli dosyayı görüntüle 28591

Hocam Allah senden Razı olsun çok teşekkür ederim. :):)
 
Üst