firebird bikaç soru (başlangış seviyesi)

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
Kullanıcı avatarı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

firebird bikaç soru (başlangış seviyesi)

Mesaj gönderen interboy »

s.a arkadaşlar.
ben delphi yi yeni yeni öğreniyorum. kitaplardan ve internetten faydalanıyorum. kitaplarda firebird interbase anlatılmadıı için fazla hep paradox kullanıyordum programlarımda. ama paradox hakkındaki dedikoduların arttığını görünce firebird/interbase öğrenmeye karar werdim. forumu araştırdım biraz öğrendim bide sql i de yeni öğrendim.
ama kafama takılan bikaç soru war bunların çözümünü bulamadım forumda.belki yeterince werimli arama yapamadım belkide basit şeyler olduğu için kimse sormamıştır bugüne kadar.

1- ibdatabase,ibquery,ibdataset ve datasource yi datamodule koyunca formdaki dbgrid in datasource özelliğindeki listede datasource1 görünmüyor. ve atayamıyorum. fakat hepsini forma kopyunca sorunsuz çalışıyor. bunu nasıl aşarım.

2- mesela bi dbtext im war. personel tablomdan en yuksek maas alan personelin maasını ibquery ile alıp bu dbtext e yazdırmak istiyorum. fakat dbtext in field özelliğinde sadece tablomda olan alanların adı yazıyor. ben sql sorgumda select max(maas) as maas from personel gibi tabloda olan bi fieldname şeklinde ad wermem gerekiyor. bunun başka yolu yokmu?

3- paradox ta datacontrols tabındaki nesneler i db ye bağlayarak table1.post table1.update gibi kayıt girebiliyodum. ibx bileşenleriyle bunu nasıl yaparım. bunu beceremediğim için sql komutlarıyla yapıyorum şimdilik ve bu çok sıkıcı :( (muhtemelen bu dataset kullanarak yapılıyordur. ben onu kullanmayı anlamadığım için yapamıyorum herhalde. )

4- mesela formumda ufak bi istatistik weriliyor. toplam aylık gider,toplam aylık gelir, en çok maaş ödenen personel, vb gibi biçok istatistik war. ve bunlar dbtext lere yazılıyor. bunların herbiri ayrı bir sql sorgusunun sonucu. her bir dbtext için forma ayrı bir ibquery mi koymak zorundayım. yada başka türlü bunu nasıl yaparım. bu konuda bi fikir verebilirmisiniz.(yada tablo değilde max(maas) gibi tekil sonuç döndüren query lerin döndürdüğü değeri nasıl yakalayıp da bir label e atarım şeklindede sorsam olur bu soruyu :) )

bu konularda yardım ederseniz sewinirim.

selametle..
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Seminer 7'yi izlemeni tavisye ederim. Orada bu sorularının tümüne cevap bulabilirsin.
Kullanıcı avatarı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

Mesaj gönderen interboy »

hocam izledim onu da orda bileşenlerin ne işe yaradığından bahsedilmiş. nasıl kullanıldığına girilmemiş. örnek uygulamayı da fazla incelelememiş anlkatan hocam. o uygulamayı nerden indirebilirim. siteye koyulacağı yazıyodu. yardım ederseniz sewinirim.
firebird e yeni başladım elim alışması için bileşenlerin nasıl kullandığını öğrenmek istiyorum.

selametle..
Kullanıcı avatarı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

Mesaj gönderen interboy »

lütfen biri yardım etsin. artık bende firebird e geçmek istiyorum. sem,iner 6 daki adres defteri uygulaması veya daha basit bir uygulama örneği olan warsa elinde paylaşsın lütfen. ibx setinin kullanımını öğrenmek istiyorum. bağlantıyı kuruyorum weritabanıyla ama yukarıda sorduum konularda çözüme ihtiyacım war.


selametle..
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Ben 4 yıllık bir MySQL kullanıcısıyım. Daha önce firebird ile uğraşmıştım ama şimdi ciddi ciddi inceliyorum. MySQL'deki lisans olayları karışmaya başlayınca gemiyi terk etme zamanının geldiğini düşündüm (gemiyi önce fareler terk edermiş yani bedavacılar :) )

Senin sormuş olduğun soruların tamamının cevabı bu forumda var. Neyi aradığını bilirsen bulabileceğine eminim.

Semineri seyrettiğini söylüyorsun, fakat seminerde IBX kullanmanın sakıncalı olacağından bahsediyor. Nedenide var seminerde. Ben ücretsiz bir companent olan UIB2 üzerinde duruyorum (jedi'nin içinde de var UIB ama eski versiyonu).
ibdataset ile ibquery arasındaki fark; ibdataset daha fazla kontrol içeriyor.. ibquery ise kontrolleri yok. Bu nedenle ibquery'i daha çok sonuçsuz SQL komutları için tercih et. Eğer insert, edit yapacaksan gelen kayıtlara ibdataset kullan. Dbgridde gözükmüyorsa normal datasource nesnesini kullan (standart gelen delphi nesnesi)
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

mesela bi dbtext im war. personel tablomdan en yuksek maas alan personelin maasını ibquery ile alıp bu dbtext e yazdırmak istiyorum. fakat dbtext in field özelliğinde sadece tablomda olan alanların adı yazıyor. ben sql sorgumda select max(maas) as maas from personel gibi tabloda olan bi fieldname şeklinde ad wermem gerekiyor. bunun başka yolu yokmu?
sql sorgusunu yazdıktan sonra tablonun fieldlist'îni açıp "get fields" demelisin.

Kod: Tümünü seç

paradox ta datacontrols tabındaki nesneler i db ye bağlayarak table1.post table1.update gibi kayıt girebiliyodum. ibx bileşenleriyle bunu nasıl yaparım. bunu beceremediğim için sql komutlarıyla yapıyorum şimdilik ve bu çok sıkıcı  (muhtemelen bu dataset kullanarak yapılıyordur. ben onu kullanmayı anlamadığım için yapamıyorum herhalde. ) 
ibdataset ile yapabilirsin. unutmaman gerekn bu iş için transaction açmalısın yada auto yapmalısın. birde nesnenin request live özelliği true yapmazsan table readonly gibi davranır.

http://www.ceviz.net/index.php?case=art ... 1&catid=27

Bu linkteki 33 ayfalık metni dikkatlice oku. Seminer videosu gibi atlayarak gitme.
mesela formumda ufak bi istatistik weriliyor. toplam aylık gider,toplam aylık gelir, en çok maaş ödenen personel, vb gibi biçok istatistik war. ve bunlar dbtext lere yazılıyor. bunların herbiri ayrı bir sql sorgusunun sonucu. her bir dbtext için forma ayrı bir ibquery mi koymak zorundayım. yada başka türlü bunu nasıl yaparım. bu konuda bi fikir verebilirmisiniz.(yada tablo değilde max(maas) gibi tekil sonuç döndüren query lerin döndürdüğü değeri nasıl yakalayıp da bir label e atarım şeklindede sorsam olur bu soruyu )
bir tane ibquery ekleyip sql komutu değiştirekerek kullanabilirsin. örneğin.

Kod: Tümünü seç

ibq_genel.close;
ibq_genel.sql.clear;
ibq_genel.sql.add('select max(maas) as enyuksek from personel');
ibq_genel.open;
lb_enyuksek.capiton:=ibq_genel.fieldbyname('enyuksek').text; //dbtext kullanamazsın çünkü nesneyi kapatıp başka sorgu çalıştıracağız.
ibq_genel.close;
ibq_genel.sql.clear;
ibq_genel.sql.add('select min(maas) as endusuk from personel');
ibq_genel.open;
lb_endusuk.capiton:=ibq_genel.fieldbyname('endusuk').text;
....
eğer dbedit kullanmak istorsan tüm sorguları birleştirebilirsin.

Kod: Tümünü seç

ibq_genel.close;
ibq_genel.sql.clear;
ibq_genel.sql.add('select max(maas) as enyuksek,min(maas) as endusuk,(select sum(islem_no) from muhasebe where muhasebe.personel_no=personel.personel_no group by personel_no) as islemsay from personel');
ibq_genel.open;
....
burada oluşan fieldları nesnelere atayabilirsin.

Kolay gelsin.
Kullanıcı avatarı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

Mesaj gönderen interboy »

hocam çok saolun walla. ne kadar teşekküğr etsem azdır. bu basit şeyleri üşenmeden anlatmışsınız.büyük sewaba girdiniz hocam. bir harf öğretenin kölesi olurum.

selametle..
Cevapla