Firebird kullanım
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Firebird kullanım
Merhaba arkadaşlar
Bir projede Firebird kullanmak istedim ama bazı sıkıntılar oldu.
1. Beleş bir ado driver bulmuştum tarih alanları pürüzlü çıktı
2. Bu firebird i raporlama anları hariç qry1.appen ve qry.post gibi kullanma imkanı yokmudur ? Raporlarımı gene sql ile oluştururum.
3. Firebird konusunda VT ye erişim için iyi bir komponent seti önerirmisiniz yoksa ibx mi kullanalım
Saygılar
Bir projede Firebird kullanmak istedim ama bazı sıkıntılar oldu.
1. Beleş bir ado driver bulmuştum tarih alanları pürüzlü çıktı
2. Bu firebird i raporlama anları hariç qry1.appen ve qry.post gibi kullanma imkanı yokmudur ? Raporlarımı gene sql ile oluştururum.
3. Firebird konusunda VT ye erişim için iyi bir komponent seti önerirmisiniz yoksa ibx mi kullanalım
Saygılar
Forumda daha tecrübeli çok üye var onlar mutlaka birşeyler söyleyeceklerdir.Hangi component setinin daha iyi olduğu konusunda ama ben IBX bileşenlerinden IBDataset bileşenini kullanıyorum ve dediğiniz gibi raporlama işlemleri hariç kayıt girme vb işlemlerini
kodları ile yapıyorum.Tabi istersen ExecSQl de çalıştırabilirsin ama zaten Ibdataset'in SQL lerini sen oluşturduğundan zaten oda o işlemi yapıyor.
İlla ücretsiz olsun diyorsan sanırım Zeos ve IBX kullanman gerekecek.
Zeosmu IBX mi dersen heralde IBX daha iyi.Bir ara zeos denemiştim ama tuhaf hataları vardı.
Ücretliler olarak da Fibplus ve IBO bileşenleri var.FibOlus denemedim ama IBO bileşenlerini denemiştim.Aynı şartlarda aynı sorguları IBX ve Zeos bileşenlerine göre(defalarca denedim hepsinde de aynı sonucu vermişti.) 20-25 kat daha hızlı getiriyordu.Mesela IBX bileşenlerinin 1 dakikada getirdiği bir sorguyu Zeos 2 dakikada IBO ise 5-6 saniyede getiriyordu.
Ama dediğim gibi bunlar tamamen benim tespitlerim.Mutlaka daha kapsamlı daha somut bilgileri olanlarda vardır ve sana yardımcı olacaklardır.
Kolay Gelsin.
Kod: Tümünü seç
IbDataset1.Append;
IbDataset1.Post;
IbDataset1.Insert;
IbDataset1.Delete;
IbDataset1.Next;
IbDataset1.Prior;
IbDataset1.First;
IbDataset1.Last;
İlla ücretsiz olsun diyorsan sanırım Zeos ve IBX kullanman gerekecek.
Zeosmu IBX mi dersen heralde IBX daha iyi.Bir ara zeos denemiştim ama tuhaf hataları vardı.
Ücretliler olarak da Fibplus ve IBO bileşenleri var.FibOlus denemedim ama IBO bileşenlerini denemiştim.Aynı şartlarda aynı sorguları IBX ve Zeos bileşenlerine göre(defalarca denedim hepsinde de aynı sonucu vermişti.) 20-25 kat daha hızlı getiriyordu.Mesela IBX bileşenlerinin 1 dakikada getirdiği bir sorguyu Zeos 2 dakikada IBO ise 5-6 saniyede getiriyordu.
Ama dediğim gibi bunlar tamamen benim tespitlerim.Mutlaka daha kapsamlı daha somut bilgileri olanlarda vardır ve sana yardımcı olacaklardır.
Kolay Gelsin.
merhaba
Bende diğerlerinin cevaplarınıda bekliyorum ustad. özellikle terminator ne diyecek bakalım. gerçi sanırım pek yazmıyormuş buraya eski bir topiğine baktımda bugun.
Peki ben autoinc kullanmak istemiyorum generatotrde kullanmak istemiyorum. bir iteger alana kendim deger vermek istemiyorum (bence en saglıklı yontem bu çunku)... Yalnız örneği query bağlamışım sql tamam transaction ve update objectte tamam ama habire invalid token diyor. sonra readonly dataset diyor. şu işi anlatan iyi bir makale yokmudur ?
baktıklarım çok yüzeysel gibide..
Saygılar
Peki ben autoinc kullanmak istemiyorum generatotrde kullanmak istemiyorum. bir iteger alana kendim deger vermek istemiyorum (bence en saglıklı yontem bu çunku)... Yalnız örneği query bağlamışım sql tamam transaction ve update objectte tamam ama habire invalid token diyor. sonra readonly dataset diyor. şu işi anlatan iyi bir makale yokmudur ?
baktıklarım çok yüzeysel gibide..
Saygılar
Firebird için;"EMS InterBase & FireBird Manager 3" veya IBexpert Kullan.Bileşenler içinde en ideali IBX Bileşenleridir....Kullanımı ise Sitemizde aratırsan VT'ye Erişimle ile ilgili,doyurucu bilgileri bulursun!.
Tavsiyem "IBX ve EMS InterBase & FireBird Manager 3" dir.Field'leri VT'ye direk olarak atar (Yazdığın anda "Compile" eder),Hata varsa aynı anda verir,Sağlıklı VT'için,geri dönme şansın olur.
Tavsiyem "IBX ve EMS InterBase & FireBird Manager 3" dir.Field'leri VT'ye direk olarak atar (Yazdığın anda "Compile" eder),Hata varsa aynı anda verir,Sağlıklı VT'için,geri dönme şansın olur.
Ya 15 gündür adam gibi bir yöntem bulmadığımdan akşam MSDE ile başladım. uygun bir set bulunca dönücem FB ye. İbo kurdum stadndart dbaware ile çalışmıyor. fibplus gene aynı şekilde. ibxquery nin de appen post vs yok. ille sql yazacaksın. ben formları her seferinde tek tek dizayn etmek istemediğimden inheritance ile yapıyorum çoğu şeyi. iş biraz orada batıyor. ibdataset vs de standart table gibi bileşenler.Ottoman yazdı:Firebird için;"EMS InterBase & FireBird Manager 3" veya IBexpert Kullan.Bileşenler içinde en ideali IBX Bileşenleridir....Kullanımı ise Sitemizde aratırsan VT'ye Erişimle ile ilgili,doyurucu bilgileri bulursun!.
Tavsiyem "IBX ve EMS InterBase & FireBird Manager 3" dir.Field'leri VT'ye direk olarak atar (Yazdığın anda "Compile" eder),Hata varsa aynı anda verir,Sağlıklı VT'için,geri dönme şansın olur.
ben hem sql avantajlarından yararlanmak hem az kod yazmak istiyorum. mesela adoqueryde hiç bir appen diyorum kayıt ekliyor sql olsada... bide zeos mu denesem.
saygılar
Merhaba;NewMember yazdı:...kodları ile yapıyorum...Kod: Tümünü seç
IbDataset1.Append; IbDataset1.Post; IbDataset1.Insert; IbDataset1.Delete; IbDataset1.Next; IbDataset1.Prior; IbDataset1.First; IbDataset1.Last;
Bu işlemi yapabilmeniz için Query Tüm kayıtlarıyla active yapmalısınız !
Örn 100.000 üstünde kayıtta bu active işlemi ağda çok gereksiz ve zaman kaybına yok açacaktır.
Buda daha koplike bir yapının kurulması için sanırım önemli bir sorunun çözümü olabilir.
Ben kullanımda tek kayıt getiriyorum sonrada bir sonraki veya önceki işlemlerinde sql ile ilgili kaydın değerini alıp bir sonraki kayıt için sql üretirim. 1 milyon kayıtta bu yönten iyi işliyor sayılabilr fakat sanırım bundan daha koplike birşeylwrde olmalı.
Saygılarımla
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
hocam maşallah hiçbir şey bırakmadınız.. ibx den girdiniz fibplus tan çıktınız. ne istediğinizide anlamış değilim. bu kadar geniş bir camia bu saydığınız bileşenleri kullanıyor. bence sorun bileşenlerde değil. ADOQuery den bahsetmişsin. Fb için ODBC driveri mevcut indirin ODBC ile bağlanın. ve ADO ile yola devam edin. ya da siz bi kaçtane bileşen yazın...@ikut
Ya 15 gündür adam gibi bir yöntem bulmadığımdan akşam MSDE ile başladım. uygun bir set bulunca dönücem FB ye. İbo kurdum stadndart dbaware ile çalışmıyor. fibplus gene aynı şekilde. ibxquery nin de appen post vs yok. ille sql yazacaksın. ben formları her seferinde tek tek dizayn etmek istemediğimden inheritance ile yapıyorum çoğu şeyi. iş biraz orada batıyor. ibdataset vs de standart table gibi bileşenler.
ben hem sql avantajlarından yararlanmak hem az kod yazmak istiyorum. mesela adoqueryde hiç bir appen diyorum kayıt ekliyor sql olsada... bide zeos mu denesem.
saygılar
ne demek istediğiniz tam anlayamadım ama ben bu işlemleri ibquery ile değil IBDataset ile yapıyorum.Ayrıca eğer kastettiğiniz veritabanından sadece bir kayıt çekmek ise;pro_imaj yazdı:Merhaba;NewMember yazdı:...kodları ile yapıyorum...Kod: Tümünü seç
IbDataset1.Append; IbDataset1.Post; IbDataset1.Insert; IbDataset1.Delete; IbDataset1.Next; IbDataset1.Prior; IbDataset1.First; IbDataset1.Last;
Bu işlemi yapabilmeniz için Query Tüm kayıtlarıyla active yapmalısınız !
Örn 100.000 üstünde kayıtta bu active işlemi ağda çok gereksiz ve zaman kaybına yok açacaktır.
Buda daha koplike bir yapının kurulması için sanırım önemli bir sorunun çözümü olabilir.
Ben kullanımda tek kayıt getiriyorum sonrada bir sonraki veya önceki işlemlerinde sql ile ilgili kaydın değerini alıp bir sonraki kayıt için sql üretirim. 1 milyon kayıtta bu yönten iyi işliyor sayılabilr fakat sanırım bundan daha koplike birşeylwrde olmalı.
Saygılarımla
Kolay gelsin.
IbDataset nesnesi zaten veritabanından aksini belirtmediğiniz sürece 1 kayıt çeker.Eğer dbgrid nesnesi bağladıysanız satır sayısı kadar kayıt çeker.Dolayısıyla bunun için ek bir kontrol yapmanın gereği yoktur.
Kayıtları SQL ile girmek konusunda ise zaten siz append ya da post dediğinizde o arka planda oluşturduğunuz SQL kodlarını çalıştırıyor.Bu post,delete vb komutların geçmişteki klasik table componentlerine uyumluluk sağlamaktan başka bir benzerliği olmadığını düşünüyorum.
Kolay Gelsin.
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
siz dataset.append dediğinizde
sql kodları çalışacaktır. values değerleri sürekli parametre yöntemiyle çalışır.
burda da
:alan1 := dbedit1;
:alan2 := dbedit2;
:alan3 := dbedit3;
şeklinde ilgili alanlara değereler parametre yöntemiyle aktarılacaktır.
veya siz
şeklinde values e değerleri direkt de verebilirsiniz.
veya hiç append demeyip. direkt sql ile yaptığınızda
kısaca append, insert, delete, update gibi komutlar yine sql işletirler.
Kod: Tümünü seç
insert into table
(alan1, alan2, alan3)
values
(:alan1, :alan2, :alan3)
burda da
:alan1 := dbedit1;
:alan2 := dbedit2;
:alan3 := dbedit3;
şeklinde ilgili alanlara değereler parametre yöntemiyle aktarılacaktır.
veya siz
Kod: Tümünü seç
insert into table
(id, adi, soyadi)
values
(1, 'kadir', 'kurtoglu')
veya hiç append demeyip. direkt sql ile yaptığınızda
Kod: Tümünü seç
insert into musteri
(id ,adi, soyadi)
values
(:id, adi, soyadi)
parambyname('id').asinteger := 1;
parambyname('adi').asstring := 'kadir';
parambyname('soyadi').asstring := 'kurtoglu';
execsql;
transaction.commit;
Bu söylemiş olduğunuz klasik queryler için geçerli.IBDataset nesnesi veri tabanında değil 1 10 milyon kayıtt olsa 1 kayıt çeker.Aksini belirtmedikten sonra(yaniikut yazdı:Merhaba
bir form düşünün query kapalı sorgu cekilmil 10 kayıt geliyor. bu qery e appen dersem tum kayıtlarmı çeklecek serverdan?
saygılar
Kod: Tümünü seç
FetchAll
Ben eğer Free düşünüyorsan IbDataset, yok eğer ücretli de olsa olur diyorsan IBObjects bileşenlerini iyi incelemeni tavsiye ederim.
Kolay Gelsin.
En son NewMember tarafından 26 Kas 2006 08:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Merhabakadirkurtoglu yazdı:hocam maşallah hiçbir şey bırakmadınız.. ibx den girdiniz fibplus tan çıktınız. ne istediğinizide anlamış değilim. bu kadar geniş bir camia bu saydığınız bileşenleri kullanıyor. bence sorun bileşenlerde değil. ADOQuery den bahsetmişsin. Fb için ODBC driveri mevcut indirin ODBC ile bağlanın. ve ADO ile yola devam edin. ya da siz bi kaçtane bileşen yazın...@ikut
Ya 15 gündür adam gibi bir yöntem bulmadığımdan akşam MSDE ile başladım. uygun bir set bulunca dönücem FB ye. İbo kurdum stadndart dbaware ile çalışmıyor. fibplus gene aynı şekilde. ibxquery nin de appen post vs yok. ille sql yazacaksın. ben formları her seferinde tek tek dizayn etmek istemediğimden inheritance ile yapıyorum çoğu şeyi. iş biraz orada batıyor. ibdataset vs de standart table gibi bileşenler.
ben hem sql avantajlarından yararlanmak hem az kod yazmak istiyorum. mesela adoqueryde hiç bir appen diyorum kayıt ekliyor sql olsada... bide zeos mu denesem.
saygılar
Benim durumum şu;
Bende 2 ata form var
Birisi katıları listeliyor arama işlemlerini exportu vs hallediyor. ayrıca kayıt ekleyen silen değiştir komutunu çaıran düğmelerde bunda. Ben sadece bunu inherit edip bir datasource bağlıyorum iş bitiyor.
Record olayına gellince foormu değişkenlere göre dizayn etmem gerek .
Yalnız burada sql kodları ile çalışmıyorum ben . bunlar hep edit.delete apen vs diye çalışmakta.
o yüzden adoquery yada table kullanmam gerek.
hızlı kod yazmak için böyle bir şey düşünmüştük o zaman. olduça yararlı ama FB için maalesef ado sürücü yok. ODBC de cidden yavaş yani.
Fibplus ve ibo ise standart dbware ile uyumlu değil.
El kol bağlandı gibi.
Neyse ya
ilerde una bir çözüm buluruz. düşünüyorumda 2 yeni ata form tanımlasam ve ADODB DB yerine IBX unitine bağlasam, appen yerine ibxquery1.exec sql ile ilgili sql leri çağırsam olur sanırım. zaten her tabloda ref dediğim bir alanım var uniq. buna değeride elle ben atıyorum autoinc kullanmıyorum.
Sence olurmu bu uygunmu
Farklı bir tavsiye olacak ama bu benden daha ziyade bizzat Borland'ın tavsiyesi olduğu için (tabi ben de aynen katılıyorum) belirtmemde fayda var.
Component seti olarak dbExpress kullan. Tablo (DataSet) olarak da TSimpleDataSet kullan.
Tabi bir de buna QuantumGrid'i ilave ettin mi herşey çok güzel yürüyecektir.
İyi çalışmalar.
Component seti olarak dbExpress kullan. Tablo (DataSet) olarak da TSimpleDataSet kullan.
Tabi bir de buna QuantumGrid'i ilave ettin mi herşey çok güzel yürüyecektir.
İyi çalışmalar.
@ikut söylediğin gibi formlarımı inheritance olarak kullanıyorum.Ve son türettiğim database arama,ekleme,silme, Export,kayıt kilitleme,düzenleme vs işlemlerini yaptığım formda tek bir kod yazmadan bu işlemleri (arama hariç tabii) yaptırıyorum.IBX bileşenlerini kulanıyorum.Bu işlemleri de post, delete vb.komutlarla yaptırıyorum.Ata formlarda SQL ifadelerini ve Dataset bileşenlerini değişken olarak tanımlayıp bütün olasılıkları vede hata kontrollerini de hesaplayarak kodlarımı yazıyorum.Child formdada sadece ata formda değişken olarak tanımlamış olduğum bileşenleri fiziksel olarak gerçekte var olan(Datamodul üzerindekilerle yani) eşleştiriyorum.
Mesela Ata formda MyDataset,MyTransaction,MyDatasource, MySelectSQL,MyOrderSQL,...........vb değişkenler tanımlıyorum.Sonrada bunlarla genel kodlar yazıyorum.Mesela
Kayıt Ekleme butonuna
Kaydet butonuna
yazıyorum.Child formda ise create edilirken aşağıdaki gibi atamalarımı yapıyorum.
Hiç bir sorun olmadan da çalışıyor.Bu yapıyı tavsiye edebilirim.
Kolay Gelsin.
Mesela Ata formda MyDataset,MyTransaction,MyDatasource, MySelectSQL,MyOrderSQL,...........vb değişkenler tanımlıyorum.Sonrada bunlarla genel kodlar yazıyorum.Mesela
Kayıt Ekleme butonuna
Kod: Tümünü seç
MyDataset.Append;//Tabi sadece bu kadar değil
Kod: Tümünü seç
MyDataset.Post;;//Tabi sadece bu kadar değil
Kod: Tümünü seç
MyDataset:=Dm.MusteriDataset;
MyTransaction:=Dm.MusteriTransaction;
myDatasource:=dm.msuteriDatasource;
MySelectSQL:='Select .........................';
myOrderSQL:='Order By........';
.........
............
................
Hiç bir sorun olmadan da çalışıyor.Bu yapıyı tavsiye edebilirim.
Kolay Gelsin.
Valla bende ne yapmak istediğinizi anlayamadım!!??.IBX Bileşenleri çok kullanışlıdır.IBTable yerine,IBDataSet kullanman daha elverişli olur, tabloya fazla kayıt çekmek istemiyorsanız ozaman;
bunu kullan Formunuza ,Listelediğiniz kadar kayıtı çeker!.
Ben IBX Bileşenlerinde hiç problem yaşamadım.! vede zevkle kullanıyorum.
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
IBDataSet1.FetchAll;
end;
Ben IBX Bileşenlerinde hiç problem yaşamadım.! vede zevkle kullanıyorum.