fbird hakkındaki sorularım,

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ı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

fbird hakkındaki sorularım,

Mesaj gönderen esistem »

evet sonunda uzun bir bekleyişten sonra foruma üye oldum,

beklerken firebird hakkındaki yazıların, yorumların hemen hemen hepsini okudum, ilk okuduğumda meraklı bir vt programcısı olarak hep duyduğum şu firebird de bi proje yapayım dedim ( aslında var olan bir projeyi firebird e geçirmeyi denedim).
Proje; basit usul muhasebe programı idi, bde ve paradox olarak zaten 3 yıldır sorunsuz kullanılıyodu, tek problem bazen vt bozulması yaşamam dı fakat onuda tutil ile hallediyordum 1-2 dakikada.
Neyse projeye başladım, ibexpert programını indirdim, baktım harika bir program yazmış adamlar oluşturdum vt lerimi, gerekli ağlantıları gerekli ayarları yaptım oturdum tasarıma geçtim. (Delphi6 prof. kullanıyorum bu arada) ordaki interbase bileşenleri ile yazıyorum projemi tabiki, neyse kayıt girişleri stored proc. lar view lar felan derken 1-2 günde bitti yazma işi doğal olarak çünkü satır satır talo aç editle, appende yap after edite kod yaz before delete şunu yaz gibi uğraşmıyorum çünki firebird vt de zaten yazılı sadece gridler editleri koymam yetiyo formlara, e rapor alcaksan zaten güçlü kuvvetli sql elimizin altında. Neyse proje bitti 1-2 günde. Dedim test ediyim (he bide en az 3 makina veri giricek) onuda broadcast ip ile otomatik vt uldurup clientleri de yazdım çok ta cix olduydu.
Neyse geçtim test aşamasına baktım clientler (ben 3 denedim) sorunsuz bağlanıyo veri girişleri mükemmel hızlı ağ yorulmuyo vs.vs bir sürü artısı var ama oda ne kayıt siliyorum sorun çıktı ??? kaydın üstüne gelip sil diyorum pat siliyo fakat close open yapıyorum haliyle içerde ama hep 1. kayda konumlanıyo dbgrid, öyle denedim yok öyle denedim yok ir türlü pradox taki gibi sildiği kaydın altında yada üstündeki kayda konumlanmıyo. Dedim hadi büyük bi sorun değil, her zaman denediğim gibi şöyle bi 1000 kayıt girim hemen kodu yazdım girdim. Dedim birini de sileyim, e sil dedim bekliyorum!!! 1,2,3,4,5,6.... saniye e daha silemedi ????? haydaaa ne oldu şimdi buna ??? 1-2 gün neden böyle diye kastım, sonunda buldum ve bulduğum şey hiç hoşuma gitmedi.
Sebep ;
Projemde üyeler bunlara ait gelirler ve giderler, aidat kayıtları, ödemeleri, tahsilatları var yani bir sürü master source ile bağlı alan, bir üye siliceksem üyeyi sil diyorum close open yapıyorum ama yanında gelir , gider, aidat,ödeme leride close open yapmam gerekiyor, e ama öyle yapıncada en az 1 dakka (abartı belki ama az bile bence) silmesi sürüyo kayıt eklemede aynı şekil tabi.
Sözün özü bıraktım firebird ü, bunları sormak içinde bu zamana kadar bekledim üye olmak için.
Evet firebird'e veye benzeri bir rdbms'e geçmem lazım ama ııh sevmedim bunu ben. İstediğim kayda konumlanmıyor, alışılagelmişin ötesinde kodlarla uğraşmam gerekiyor ve çok ama çok çok yavaş çalışıyor.
Tabi bunların birer çözümü varsa bilemiyorum, iş yoğunluğundan dolayı daha da fazla araştıramadım maalesef :(
Yorum ve düşüncelerinizi bekliyorum arkadaşlar.

Saygılarımla...

E-Sistem Yazılım
En son esistem tarafından 29 Ağu 2017 09:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
Öncelikle hoş geldiniz diyorum..
sonra sorununuza gelelim...
1.Delphi 6 nin ibx güncellemeleri var. Onları yapın.
2.ibx setini kullandım dediniz. Sanırım ibtable kullandınız. onun yerine ibdataset kullansanız bu dediğiniz sorunların büyük ihtimalle yaşamayacaktınız.
3.Kaydı silmek için close open yapmanızın sebebini anlayamadım. Velevki close open yapacaksanız bookmark kullanarak close dan önce hangi kayıtta konumlu ise okaydı tekrar seçtirebilirsiniz.
4.Silme işlemi için o kadar uzun beklemesi normal değil. Ve kayıt sildikten sonra tabloların hepsini niye close open yapıyorsunuz onuda anlamış değilim.

belki biraz abartı olacak ama ferrari ile toprak yolda gitmeye çalışmışsınız sanırım.
Eğer kodlarınız hala duruyorsa üzerinde çalışılabilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

@aslangeri ye katılıyorum. Firebird kullananların bildiği gibi gayet başarılı bir vt dir. Kodlarınızda bazı mantık yada kodlama hataları olabilir. Sorun veren yavaş çalıştığını düşündüğünüz kodları buraya yazın yardım edecek birçok bilgili üyemiz mevcuttur. Üyeliğinizde hayırlı uğurlu olsun. :wink:
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

master-detail olarak bağlı olan tabloların verileri gridler üzerinde gözüküyorsa, ve quamtum grid kullanıyorsanız bir kaydı sildiğinizde silme işlemi uzun sürecektir. Aslında yavaşlık vt 'den değil girdden kaynaklanıyor. Silme işleminden önce detail olan tablolara ait datasourceları kapatırsanız daha hızlı silecektir.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Mesaj gönderen esistem »

cevap vereyim arkadaşlar;
ibx güncellemelerini yapmadım fakat bunun o kadar büyük sorun yaratacağını zannetmiyorum,
ibtable kullanmadım ibquery,stored proc. kullandım sürekli (zaten amaç table lardan kaçmaktı),
kaydı sildiğim zaman ibquery de mecbur close-open yapmam gerekli değilmi ?
(silindiğini göreilmek için), bookmark kullansamda kullanmasamda hep ilk kayda konumlanıyor
(ordaki hata sanırım bendeydi), kodlarda mantık hataları belki olabilir diye düşündüm bende
ama dediğim gibi iş yoğunluğundan o kadarda detaylı incelemedim ama hatırı sayılır bi
zaman da harcamadım değil, kodları buraya yazmak isterdim ama sildim olmayınca maalesef,
quantum grid kulanmıyorum hatta delphi6 prof. orjinal componentleri haricinde sadece 1 adet
bileşen kulanıyorum diyebilirim oda para değeri girmek için gerekli bi komponent.
Detail talolarıda şöyle kapatıyorum ki mecburum buna, üye kaydım var altında gelir tablom var,
üyeyi sildiğim zaman aşağıdaki source de o üyeye ait kayıtlar hala görünmekte, ama olması gereken;
üye silinir, başka bir üye kaydına konumlanır ve ona ait gelirler,giderler vs. gelir değilmi?
1000 adet üye varsa, her üyeye ait de yüzlerce gelir-gider vs. kaydınız varsa inanın silmesi ölüm
oluyor programın,
silme işleminide şöyle yapıyorum;
bir adet stored proc. yazıp, 3 nolu kaydı sil diye sadece üye kodunu yolluyorum,
stored proc ta bakıyor x no lu üye kaydı silinecek, bundan önce gidip bu kod altındaki
(detail talolardaki) gelir-gider-ödeme vs. kayıtlarını siliyor (before delete olayı felan),
ve sonra tabloları close open yapıyorum. Yani olması gereken bu değilmi ?

(Bu arada bilgisayarım değiştirdim dolayısıyle klavyemide değiştirdim ama bazı tuşları sert çıktı
meretin, harfleri eksik basıyorum, kusura bakmayın)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
anladığım kadarı ile queryleri table gibi kullanıyorsunuz.
bunun yerine ibdataset kullanın(onuda daha verimli kullanmak için ibxgüncellemelerini yapın).
ibdataset in kullanımı ile ilgili forumdan faydalanabilirsiniz.
kaydı sildikten sonra query i close open yapmanıza gerek kalmaz.
üye ye bağlı kayıtları silme işine gelince....
genelde master detail kayıtlarda detailde kayıt varsa master tablodaki kayıtlar sildirilmez. ama silinsin diyorsanız fk tanımlarında delete sırasında noaction yerine cascade i seçerseniz detay kayıtlar otomatik olarak silinir.
birde üye kaydını sildiğiniz zaman detay tablolarıda close/open yapıyorsanız/yapmanız gerekiyorsa projenin tasarımını tekrar gözden geçirin derim.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla