Çalışma anında IBDateset oluşturma ve kullanma? [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Çalışma anında IBDateset oluşturma ve kullanma? [Çözüldü]

Mesaj gönderen xozcanx »

Merhaba;
Çalışma anında sorgu sorgu yapmak istediğimde Query oluşturarak sorgulamarı yapıyorum ve işlem sonunda Free ederek Query sonlandırıyorum. Bu işlemi insert update yada delete için nasıl yapabiliriz bir deneme yapmak istedim fakat sonuç alamadım.

Kod: Tümünü seç

VAR
  TestDB:TIBDataSet;
Begin
  TestDB:=TIBDataSet.Create(nil);
  with TestDB do
  try
    Database  :=IBDatabase1; 
    GeneratorField.Generator:='GEN_TEST_ID';
    GeneratorField.Field:='ID';
    GeneratorField.IncrementBy:=1;
    Transaction:=IBTransaction1;
    InsertSQL.Add('insert into TABLO (ADI, ID, WINNER) values (:ADI, :ID, :WINNER)');
    try
      Open;
      insert;
        FieldByName('ADI').AsString:='Test';
      Post;
      Transaction.CommitRetaining;
    finally
      Free;
    end;
  except on E: Exception do
    begin
      ShowMessage(PChar(E.Message));
      Transaction.RollbackRetaining;
    end;
  end;
End;
En son xozcanx tarafından 30 Nis 2015 09:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen csunguray »

GeneratorField in tipi nedir? Sonuç alamadım derken derleme mi yapamıyorsunuz yoksa çalışırken mi hata veriyor? Aldığınız hata mesajını yazarsanız sevinirim.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen xozcanx »

csunguray yazdı:GeneratorField in tipi nedir? Sonuç alamadım derken derleme mi yapamıyorsunuz yoksa çalışırken mi hata veriyor? Aldığınız hata mesajını yazarsanız sevinirim.
Merhaba;
Hocam Kusura bakmayın Eksik bilgi verdiğim için.
GeneratorField in tipi integer.
Derleme sırasında değil çalışma anında hata alıyorum Hata ise "Empty query" Tercümesine baktığımda sonuç "Boş Sorgu"
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen varyemez »

InsertSQL kısmını yazmışsın güzel de , hani bunun ana sql cümlesi.. yani select ...... from gibisinden bir dataset oluşturacak komutun olması lazım. empty dediği o işte..
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen warder »

insert işleminde (bu haliyle, temel, basit haliyle) select, from sözcükleri kullanılmıyor.
Sorguda sorun yok..
Sorguda parametre tanımlanıp atamanın FieldByName olarak yapmak istenmesi problem olabilir....
FieldByName('ADI').AsString:='Test';
yerine..
ParamByName('ADI').AsString:='Test';
olmalı sanırım..
Yani yapılan atama hatalı ve diğer parametrelere de harhangi bir atama yapılmamış..
Bu durumda boş sorgu demesinde bir sakınca kalmıyor.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen xozcanx »

warder yazdı:insert işleminde (bu haliyle, temel, basit haliyle) select, from sözcükleri kullanılmıyor.
Sorguda sorun yok..
Sorguda parametre tanımlanıp atamanın FieldByName olarak yapmak istenmesi problem olabilir....
FieldByName('ADI').AsString:='Test';
yerine..
ParamByName('ADI').AsString:='Test';
olmalı sanırım..
Yani yapılan atama hatalı ve diğer parametrelere de harhangi bir atama yapılmamış..
Bu durumda boş sorgu demesinde bir sakınca kalmıyor
varyemez yazdı:InsertSQL kısmını yazmışsın güzel de , hani bunun ana sql cümlesi.. yani select ...... from gibisinden bir dataset oluşturacak komutun olması lazım. empty dediği o işte..
@varyemez ver @warder cevaplar için teşekkürler 1. Hatamın Select ifadesini yazmamış olmam. 2. hata ise Dataseti Active etmemem buda bana gelsin :alsana: :)

Olması gereken

Kod: Tümünü seç

VAR
  TestDB:TIBDataSet;
Begin
  TestDB:=TIBDataSet.Create(nil);
  with TestDB do
  try
    Database  :=IBDatabase1;
    GeneratorField.Generator:='GEN_TEST_ID';
    GeneratorField.Field:='ID';
    GeneratorField.IncrementBy:=1;
    Transaction:=IBTransaction1;
    SelectSQL.Add('Select * From TABLO');
    InsertSQL.Add('insert into TABLO (ADI, ID, WINNER) values (:ADI, :ID, :WINNER)');
    Active:=True;
    try
      Open;
      insert;
        FieldByName('ADI').AsString:='Test';
      Post;
      Transaction.CommitRetaining;
    finally
      Free;
    end;
  except on E: Exception do
    begin
      ShowMessage(PChar(E.Message));
      Transaction.RollbackRetaining;
    end;
  end;
End;
Teşekkürler.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen xozcanx »

Merhaba;
Konu ile ilgili olduğu için Tekrar başlık açmak istemedim.
IBDataset nesnesinin Dataset Editör kısmındaki Generate SQL butonu ile update,insert,delete text leri otamatik oluşuyor.
bu işlemi Çalışma anında da oluşturduğumuz Dataset nesnesine uygulama şansımız varmı yoksa buradaki Textleri Tekrar belirtmek zorundamıyız yukarıda yazmış olduğum gibi?
Teşekkürler.

Resim
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen varyemez »

Bu wizardın yaptığı iş update , insert , delete sql lerini oluşturmak. sen zaten yukarıda yaptığın gibi ele yazarak halletmişsin.. Bir de şuna dikkat et select * yerine alan isimlerini tek tek yaz. daha sağlam gidersin.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Çalışma anında IBDateset oluşturma ve kullanma?

Mesaj gönderen xozcanx »

varyemez yazdı:Bu wizardın yaptığı iş update , insert , delete sql lerini oluşturmak. sen zaten yukarıda yaptığın gibi ele yazarak halletmişsin.. Bir de şuna dikkat et select * yerine alan isimlerini tek tek yaz. daha sağlam gidersin.
Hocam Cevap için Teşekkürer.
Select ifadesinde o an işim olan alanları seçiyorum. Tablonun tamamını seçmiyorum. ;)
Datamoduller üzerinde bileşenleri toparlasamda bazen hangisi nerede bulmak zorlaşıyor :( Bende zaten yolun başındayım altyapıda sağlam olsun diye kodlarla bileşenleri oluşturup işim bittiğindede hafızadan atayım diyorum. Fakat bazı tablolardaki alan sayıları çok fazla hepsini eklemekte kısıtlı zamanlarda zor olacak, varsa kısa bir yöntemi zor zamanlar için kıyıda köşede bu bilgi bulunsun istedim :wink:
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla