herşeyi yaptım ama alan otomatik artmıyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

herşeyi yaptım ama alan otomatik artmıyor

Mesaj gönderen techmaster »

s.a.
FAOsoft hocamın otomatik artan alan oluşturma makalesinde anlatılanları yaptım...generator oluşturdum...sp oluşturdum...formumdaki bi tane datasetin beforepost olayını aşağıdaki kodları yazdım...

Kod: Tümünü seç

 if (GRUP.State=dsInsert) AND (GRUP_ID.IsNull) then
  begin
   GRUP_ID.AsInteger:=0;
   IbStoredProc1.Prepare;
   IbStoredProc1.ExecProc;
   GRUP_ID.AsInteger:=IbStoredProc1.ParamByName('ID').As Integer;
  end;
 if (ALBUM.State=dsInsert) AND (ALBUM_ID.IsNull) then
  begin
   ALBUM_ID.AsInteger:=0;
   IbStoredProc2.Prepare;
   IbStoredProc2.ExecProc;
   ALBUM_ID.AsInteger:=IbStoredProc2.ParamByName('ID').As Integer;
  end;

iki tane tablom var..GRUP ve ALBUM adında..ama ekle dediğim zaman diğer alanları doldurmasına rağmen otomatik alan null görünüyor...
ayrıca iki tabloda işlem için tek dataset kullanıyorum...
birde tabloda güncelleme yapıp ibexpertte verileri güncellenmiş halde görmeme rağmen programımda göremiyorum bunu...programı açıp kapamama rağmen görünmüyor yeni veriler...forumda commit gibi şeylerden bahsediliyordu, denedim ama olmadı maalesef...
son olarak bu interbase nesnelerini tam olarak kavrayabileceğim bir döküman söyleyebilirmisiniz...türkçe-ingilizce farketmez...yeterki anlamamı sağlasın...interbase express referance'a baktım ama o kadar iyi değildi...

herkese iyi çalışmalar....
master of technology

http://www.cuemot.org
assoft

Mesaj gönderen assoft »

Bu iş için trigger kullansan bence daha iyi olur.
Tablonun Before insert event'ne bir trigger oluştur :

Kod: Tümünü seç

Create Trigger OTO_SAY for TabloAdi Active
Before Insert Position 0
As
Begin
New.ID = Gen_ID(GeneratorAdi,1);
end
Fazla uğraşmana gerek kalmaz.
Kolay gelsin.
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

teşekkür ederim trigger kullanarak daha kolay yaptım...
peki bu eklediğim verilerin hemen görünmesi için ne yapmam gerekiyor??
master of technology

http://www.cuemot.org
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

assoft

Mesaj gönderen assoft »

Commit edeceksin

Kod: Tümünü seç

tabloadi.transaction.commitretaining;
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

@FAOsoft
hocam inanırmısınız o makaleyi en az 10-15 defa okudum ama sp ile yapamadım, trigger ile daha kolaymış...

@assoft
çok özür dilerim zamanınınızı alıyorum ama bu ifadeyi nereye yazmam gerekiyor...

Kod: Tümünü seç

tabloadi.transaction.commitretaining; 
master of technology

http://www.cuemot.org
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

tabloyu post ettikten sonra

Kod: Tümünü seç

tablo1.post;
tablo1.transaction.commitretaining;
şeklinde
type
Tform1 = class(Tform)
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

aşağıdaki kodu çalıştırdığım zaman 'dataset not in edit or insert mode' diye bir hata veriyor....

Kod: Tümünü seç

 frm_ana.IBDataSet1.Close;
 frm_ana.IBDataSet1.SelectSQL.Clear;
 frm_ana.IBDataSet1.SelectSQL.Add('insert into GRUP (GRUP_ADI,GRUP_YILI)');
 frm_ana.IBDataSet1.SelectSQL.Add('VALUES ('''+edit1.Text+''','''+edit6.Text+''')');
 frm_ana.IBDataSet1.execsql;
 frm_ana.IBDataSet1.Post;
 frm_ana.IBDataSet1.Transaction.CommitRetaining;
master of technology

http://www.cuemot.org
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

techmaster yazdı:aşağıdaki kodu çalıştırdığım zaman 'dataset not in edit or insert mode' diye bir hata veriyor....

Kod: Tümünü seç

 frm_ana.IBDataSet1.Close;
 frm_ana.IBDataSet1.SelectSQL.Clear;
 frm_ana.IBDataSet1.SelectSQL.Add('insert into GRUP (GRUP_ADI,GRUP_YILI)');
 frm_ana.IBDataSet1.SelectSQL.Add('VALUES ('''+edit1.Text+''','''+edit6.Text+''')');
 frm_ana.IBDataSet1.execsql;
 frm_ana.IBDataSet1.Post;
 frm_ana.IBDataSet1.Transaction.CommitRetaining;
Bak şimdi burda kodun en sonuna yazmışsın ama neye dayanarak acaba.post komutunu edit ve insert moduna sokmadan çalışmaz.post fazladan orda......
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

vedatkaba, firebird ve delphiyi çok iyi bilmiyorum..tam öğrenebilmek için kendime veritabanı kullanan bi program yapıyorum...ama dediğim gibi tam bilmediğim için hatalarda oluyor :(
true_false post et dediği için öyle denedim ama olmadı...
ne yapmam gerekiyor tam olarak???
master of technology

http://www.cuemot.org
Cevapla