s.a Kolay gelsin arkadaslar.
Dah önceden sql server kullanıyordum. sql server enterprise manager ile de tüm istediklerimi yapıyordum.
En sonunda firebirde geçmeye karar verdim korkaraktan. ve ilk dakika da korktuğum bşıma geldi.
başlangıç sorularımı sormaya başlıyorum . Yardımcı olabilecek arkadaslara da şimdididen çok tşkler.
firebirdün de sql gibi kullanılması geçiş için bir kolaylık. Forumda yaptığım aramada bir arkadasımıda benimle aynı sorunu yaşamış fakat çözüm üretilememiş.Tekrar arayıp linki bulabilirsem eklerim
sql serverde ki gibi ;
datamodule ibdatabase ve ib transaction koyuyorum. ki sqlserva transaction a gerek yoktu.
gerekli bağlantıları yapıyorum. ibexpert ( ki 15 günü kaldı. ondan sonra ne olacak bilemiyorum ) ile database oluşturdum
forma bir adet button koydum.
bir adetde dbrid
onclick i database e bir kayıt eklemek.
buraya kadar her şey normal çalışıyor. ilginç olanı ise
buttona her tıkladığımda sadece son kayıdı gösteriyor. ya da bir önceki.
artı
ib expert te tabloyu incelemek istediğimde tablonun boş oldugunu görüyorum sorunun transaction da bir yerde olduğunu tahmin ediyorum . ama bilmiyorum. Bu sorunu nasıl çözebilirm.
( Daha önce hiç trans action kullanmadım ) .
teşekkürler ii çalışmalar.
firebird kayıt problemi
formun üzerine bir ibdatabase, bir ibtransaction, bir ibdataset ve bir de datasource ekleyin.
ibdatabase
propertiesinde default transaction kısmına ibtransaction1 i seçin,
sonra ibdatabase'in üzerine sag tıklayıp database editor kısmından da ibexpert (yada benzer programlara) olustrudugunuz database baglantınızı yapın. yine bu ekranda en alt kısımdaki login promt taki check işaretini kaldırın.
propertiesinde connected kısmını true yapın.
ibtransaction
propertiesinde default database kısmına ibdatabase1 i seçin ve aktive kısmını true yapın.
ibtadaset
propertiesinde database kısmına ibdatabase1 iseçin, selectsql kısmını tıklayın (acılan pencerede tablolarınızı görebilmeniz lazım) buradan baglanmak istediğiniz tablonuzu seçin ve oluşan sql cumleciğinin dogrulugunu kontrol edin. (select * from TABLO_ADI). active kısmını true yapın.
datasource
propertiesinden dataset kısmına ibdataset1 i seçin
foruma datacontrol sekmesinden bir dbgrid ve bir navigator ekleyelim. ve her ikisininde datasource kısmını datasource1 yapalım.
simdi tablodaki bilgilerinizi gridde görebilirsiniz ancak navigatörün + butonu pasiftir. yani kayıt yapamazsınız.
burası önemli
kayıt yapabilmek için anahtar alanların ayarlanması gerekmektedir. bunun için ibdataset1 in üzerine sağ tıklanır oradan dataset editor secilir. gettable fields tusuna basılır ve gorulen her iki ekrandaki kayıtlarda seçili duruma gelir key fields alanında adındanda anlaşılacagı gibi tablomuzdaki anahtar alanlar seçilir. update field alanının ise tamamı seçili olmalıdır. generete sql butonuna basılır. ok denir çıkılır dataset tekrar aktif true yapılır. artık kayıt yapabiliriz.
transaction
kayıt işlemini yaptıktan sonra kaydın aktif olması için transaction nın commit edilmesi gerekmektedir. bu işlemi ise ibdataset1 in afterpost olayına
yazdıgımızda yaptıgımız kayıt veritabanına işlenmiştir. ibexpert benzeri programlarla kayıtlarımızı görebiliriz.
daha detaylı bilgi için
ibdatabase
propertiesinde default transaction kısmına ibtransaction1 i seçin,
sonra ibdatabase'in üzerine sag tıklayıp database editor kısmından da ibexpert (yada benzer programlara) olustrudugunuz database baglantınızı yapın. yine bu ekranda en alt kısımdaki login promt taki check işaretini kaldırın.
propertiesinde connected kısmını true yapın.
ibtransaction
propertiesinde default database kısmına ibdatabase1 i seçin ve aktive kısmını true yapın.
ibtadaset
propertiesinde database kısmına ibdatabase1 iseçin, selectsql kısmını tıklayın (acılan pencerede tablolarınızı görebilmeniz lazım) buradan baglanmak istediğiniz tablonuzu seçin ve oluşan sql cumleciğinin dogrulugunu kontrol edin. (select * from TABLO_ADI). active kısmını true yapın.
datasource
propertiesinden dataset kısmına ibdataset1 i seçin
foruma datacontrol sekmesinden bir dbgrid ve bir navigator ekleyelim. ve her ikisininde datasource kısmını datasource1 yapalım.
simdi tablodaki bilgilerinizi gridde görebilirsiniz ancak navigatörün + butonu pasiftir. yani kayıt yapamazsınız.
burası önemli
kayıt yapabilmek için anahtar alanların ayarlanması gerekmektedir. bunun için ibdataset1 in üzerine sağ tıklanır oradan dataset editor secilir. gettable fields tusuna basılır ve gorulen her iki ekrandaki kayıtlarda seçili duruma gelir key fields alanında adındanda anlaşılacagı gibi tablomuzdaki anahtar alanlar seçilir. update field alanının ise tamamı seçili olmalıdır. generete sql butonuna basılır. ok denir çıkılır dataset tekrar aktif true yapılır. artık kayıt yapabiliriz.
transaction
kayıt işlemini yaptıktan sonra kaydın aktif olması için transaction nın commit edilmesi gerekmektedir. bu işlemi ise ibdataset1 in afterpost olayına
Kod: Tümünü seç
ibdataset1.transaction.commit;
ibdataset.open ;
yazdıgımızda yaptıgımız kayıt veritabanına işlenmiştir. ibexpert benzeri programlarla kayıtlarımızı görebiliriz.
daha detaylı bilgi için
Kod: Tümünü seç
http://www.delphiturkiye.com/index.php?page=ibxgiris.htm
http://www.delphiturkiye.com/forum/viewtopic.php?t=5800
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
KAYIT SORUNLARI HALA HALLOLMADI
Arkadaşlar ustalarım selam ve saygılar....
Hala kayıt sorununu gideremedim. Şöyleki oluşturulan tablolarda artan sayı olacak id alanı pk kısmı işaretli değilse ne yaparsam yapayım kayıt gitmiyor ve program kapatılıp açlılınca kayıtlar kaboluyor. ama pk alanı id fieldi oluşturulurken işaretlenmişse kaytta sıkıntı olmuyor. Ama bir sürü tablo yaptım Id alanları pk kısmlar işartli değil. nasıl yapabliirm? kayıtın bu pk alanı ile ilişkisi nedir? benim tablo yapışım da mı bir hata var?
Hala kayıt sorununu gideremedim. Şöyleki oluşturulan tablolarda artan sayı olacak id alanı pk kısmı işaretli değilse ne yaparsam yapayım kayıt gitmiyor ve program kapatılıp açlılınca kayıtlar kaboluyor. ama pk alanı id fieldi oluşturulurken işaretlenmişse kaytta sıkıntı olmuyor. Ama bir sürü tablo yaptım Id alanları pk kısmlar işartli değil. nasıl yapabliirm? kayıtın bu pk alanı ile ilişkisi nedir? benim tablo yapışım da mı bir hata var?
yanlıs hatırlamıyorsam datasetin sql ayarlarında pk belitrmedigin için database defaults yapınca hiç birini seçmiyor.
bütün fieldleri kaldırıp tekrar ekledikten sonra datasetin sql ayarlarında pk olarak kullanmak istediğin fieldi seçip generate swl yaptığım zaman çözdüm diye hatırlıyorum. ama sadece hatırlıyorum. çünkü daha firebirdden vazgeçeli çok oldu. umarım doğru hatırlamışımdır
bütün fieldleri kaldırıp tekrar ekledikten sonra datasetin sql ayarlarında pk olarak kullanmak istediğin fieldi seçip generate swl yaptığım zaman çözdüm diye hatırlıyorum. ama sadece hatırlıyorum. çünkü daha firebirdden vazgeçeli çok oldu. umarım doğru hatırlamışımdır
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
olmadı
ozsal arkadaşım dediğini yaptım yine olmadı. anlamadım gitti ya.... siz neden vazgeçtiniz firibirdden.
Tahminim otomatik sayı üretme problemi var.Eğer öyle ise ;
Ibexbert kullanıyorsan
iyelimki tablede Sıra_No alanın PK olarak belirlensin bu alan otomatik sayı üreteceği için buna bir Genarators atayacaksın Genarators sekmesine gelip sağa tıklayarak new genarators deyin
Name : örneğin GEN_SIRA olsun
Value : 0 olarak kalsın
commit edin veritabanındaki isimiz bitmiş olacak Ibexbert i kapatabilirsiniz
delphiyi açın
IBDataSet kullanıyorsanız ve gerekli sql ve bağlantılarınız tamam ise Genaratorfieldı seçtiğinizde Genarotor bölümünde GEN_SIRA yı göreceksiniz(combada),Fields bölümüde hangi alanımız PK olarak ayarlanmış ise ki ben burda Sıra_No olarak belirlemiştim onu seçiyorsunuz.On new rekord ayrı seçili kalsın tamam deyin artık yeni kayıt eklemelerinde otomatik sayınız üretilecektir
kaydetmek için şeklinde kullanabilirsiniz.
Ibexbert kullanıyorsan

Name : örneğin GEN_SIRA olsun
Value : 0 olarak kalsın
commit edin veritabanındaki isimiz bitmiş olacak Ibexbert i kapatabilirsiniz
delphiyi açın
IBDataSet kullanıyorsanız ve gerekli sql ve bağlantılarınız tamam ise Genaratorfieldı seçtiğinizde Genarotor bölümünde GEN_SIRA yı göreceksiniz(combada),Fields bölümüde hangi alanımız PK olarak ayarlanmış ise ki ben burda Sıra_No olarak belirlemiştim onu seçiyorsunuz.On new rekord ayrı seçili kalsın tamam deyin artık yeni kayıt eklemelerinde otomatik sayınız üretilecektir
kaydetmek için
Kod: Tümünü seç
IBDataSet1.post;
IBTransaction1.CommitRetaining;