Firebird kullanım

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ikut

Firebird kullanım

Mesaj gönderen ikut »

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
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

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

Kod: Tümünü seç

IbDataset1.Append;
IbDataset1.Post;
IbDataset1.Insert;
IbDataset1.Delete;
IbDataset1.Next;
IbDataset1.Prior;
IbDataset1.First;
IbDataset1.Last;
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.
ikut

merhaba

Mesaj gönderen ikut »

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
Ottoman

Mesaj gönderen Ottoman »

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.
ikut

Mesaj gönderen ikut »

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.
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
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

NewMember yazdı:

Kod: Tümünü seç

IbDataset1.Append;
IbDataset1.Post;
IbDataset1.Insert;
IbDataset1.Delete;
IbDataset1.Next;
IbDataset1.Prior;
IbDataset1.First;
IbDataset1.Last;
...kodları ile yapıyorum...
Merhaba;
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]
_________________
ikut

Mesaj gönderen ikut »

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
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

@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
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...
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

pro_imaj yazdı:
NewMember yazdı:

Kod: Tümünü seç

IbDataset1.Append;
IbDataset1.Post;
IbDataset1.Insert;
IbDataset1.Delete;
IbDataset1.Next;
IbDataset1.Prior;
IbDataset1.First;
IbDataset1.Last;
...kodları ile yapıyorum...
Merhaba;
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.
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;
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.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

siz dataset.append dediğinizde

Kod: Tümünü seç

insert into table
(alan1, alan2, alan3)
values
(:alan1, :alan2, :alan3)
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

Kod: Tümünü seç

insert into table
(id, adi, soyadi)
values
(1, 'kadir', 'kurtoglu')
şeklinde values e değerleri direkt de verebilirsiniz.

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;
kısaca append, insert, delete, update gibi komutlar yine sql işletirler.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

ikut 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
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(yani

Kod: Tümünü seç

FetchAll 
demedikten sonra).mesela ben Adoquery kullanarak MDB kütüğüne bağlanmıştım.Bu söylediğiniz oluyordu.Ama belki bunu da engelleyen bir ince ayar vardı ama biz yapamıyorduk bilemiyorum.

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.
ikut

Mesaj gönderen ikut »

kadirkurtoglu yazdı:
@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
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...
Merhaba

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
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

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.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

@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

Kod: Tümünü seç

MyDataset.Append;//Tabi sadece bu kadar değil
Kaydet butonuna

Kod: Tümünü seç

MyDataset.Post;;//Tabi sadece bu kadar değil
yazıyorum.Child formda ise create edilirken aşağıdaki gibi atamalarımı yapıyorum.

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.
Ottoman

Mesaj gönderen Ottoman »

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;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
 IBDataSet1.FetchAll;
end;
bunu kullan Formunuza ,Listelediğiniz kadar kayıtı çeker!.

Ben IBX Bileşenlerinde hiç problem yaşamadım.! vede zevkle kullanıyorum.
Cevapla