IBUpdateSQL

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

IBUpdateSQL

Mesaj gönderen Fatih! »

IBQuerynin Read only olmasından şikayetçiyseniz bu bileşeni kullanmalısınız.
formunuza ibtransection,ibdatabase,Datasource,dbgrid,dbnavigator ve ibquery ekleyip.Bağlantıları yaptıktan sonra ibquery'nin SQL Koduna meşhur müşteri tablomuzu listelemek için aşağıdaki kodu yazın.

Kod: Tümünü seç

select * from TBL_MUSTERI
görüntümüz aşağıdaki gibi olacak. çalışştırıp test ettiğinizde Tabloda herhangi bir işlem yapğamadığınızı göreceksiniz

Resim

Tabloda değişiklik yapabilmemiz için forma ek olarak IBUpdateSQL ekleyin. IBQuery'i seçip Object Inspector'dan

Kod: Tümünü seç

CachedUpdates > True
UpdateObject > Forma eklediğimiz IBUpdateSQL Bileşenini Seçin
Daha sonra IBUpdateSQL çift tıklayın.karşınıza aşağıdaki pencere gelecektir.

Resim

1 - Yukarıdaki Ayarları yaptıktan önce Buraya Tıklıyoruz. Bu tablo alanlarının listelenmesini sağlar.

2 - Varsayılanı seçer.Eğer IBQuery'e bir den fazla tabloyu listelemek için sorgu yazdıysanız. diğer tablonun alanlarınıda listeye ekler. her tabloya ve her IBQuery için ayrı IBUpdateSQL bileşenleri kullanmalısınız.

3 - Tablodaki Primary Key'e sahip alanı seçer.

4 - Bütün ayarları yaptıktan sonra Buraya tıklayarak Günceleme silme vb. işlemlerin yapılabilmesini sağlayacak SQL kodlarını oluşturuyoruz.

OK Deyip Projeyi çalıştırdıktan sonra IBDATASET gibi bütün işlemleri yapabildiğinizi göreceksiniz.

Gözünüze çarptımı bilmiyorum Programı kapatığınızda yeni kaıtların eklenmediğini sildiklerinizin yerinde olduğunu Hiç bir şeyin değişmediğini göreceksiniz :)

Evet Bu şekilde kullandığınzda değişiklikler Geçici bir yerde tutulur sizin verdiğiniz komutla Tabloya yazdırabilirsiniz. yada yazdırmayabilirsiniz..

Kaytları tabloya yazmak için >

Kod: Tümünü seç

 IBQuery1.ApplyUpdates;
Kaytları tabloya yazmaktan vazgeçmek için >

Kod: Tümünü seç

 IBQuery1.CancelUpdates;
Değişikliği anınnda tabloya yansıtmak için IBQuery'nin AfterPost ve AfterDelete Olaylarına

Kod: Tümünü seç

IBQuery1.ApplyUpdates;
yazıp Transectionu Commit Edin.

Bu Bileşeni aynı Şekilde IBTable bileşeni içinde kullanabilirsiniz.

Özellikleri
IBUpdateSQL1 Bileşeninin ürettiği SQL kodunun aynını veya aynı görevi yapan farklı kodları Runtime'de (çalışma Anı) siz oluşturup gerekli özelliklerine atayabilirsiniz..

Kod: Tümünü seç

 IBUpdateSQL1.ModifySQL.Add('kodunuz')
Resim
En son Fatih! tarafından 16 Eyl 2005 08:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

Mesaj gönderen gercek_16 »

Merhabalar
burda yanlışlık olmuş galiba

Kaytları tabloya yazmak için >Kod:

Kod: Tümünü seç

 IBQuery1.ApplyUpdates; 
Kaytları tabloya yazmaktan vazgeçmek için >Kod:

Kod: Tümünü seç

 IBQuery1.ApplyUpdates; 
birde

Kod: Tümünü seç

IBQuery1.ApplyUpdates;
ile

Kod: Tümünü seç

IBQuery1.Post;
arasında bir fark varmıdır?
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Butun DBMS lerde butun islemler bir transaction da gerceklesir.

Burada kaydı post ederken bellege yazmıs oluyoruz ve gecici olmus oluyor.
ApplyUpDates te ise bu gecici yazılan bilgileri veritabanı tarafına kayıt etmis
oluyoruz yani diger bir deyisle Commit etmis oluyoruz.

Eger kaydı post ettik ve temelli olarak veritabanı tarafına kayıt (commit) etmek
istemiyorsak, bu durumda kaydı iptal etmek icin yani bellekten silmek icin
CancelUpdates islemini yapıyoruz yani RollBack yapmıs oluyoruz.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Acizane bir oneri:
Eger kodların İngilizce anlamlarına bakarsak daha rahat mantık yurutebiliriz.
Boylece ezbercilikten biraz da olsa kurtulmus oluruz.

Burda ki ornekte

ApplyUpDates = Guncellemeyi_Onayla
Commit = İşle
CancelUpdates = Guncellemeyi_İptal_Et
RollBack = Geri_Al

oldugu gibi...
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

kusura bakmayın yanlışlık olmuş :oops:
@oguzozturk74
Açıklaman için Teşekkürler :)
lavi34
Üye
Mesajlar: 78
Kayıt: 16 Tem 2008 01:14

Re: IBUpdateSQL

Mesaj gönderen lavi34 »

Hocam selam,
bu konuda anlattıklarınızın hepsini aynen uyguladım ama maalesef gride veri girince update olmuyor.bu konuyu bana acil çözmem lazım..yardımmm.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: IBUpdateSQL

Mesaj gönderen rsimsek »

POST tan sonra ;

Kod: Tümünü seç

IBUpdateSQL1.Transaction.CommitRetaining;
dediğinizden emin misiniz :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla