AutoIncrement

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ı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

AutoIncrement

Mesaj gönderen mege »

selamlar paradoxdan interbase geçiş sancılarım devam ediyor :?

Kod: Tümünü seç

AlarmT.Post;
Alarm[Index].Key := AlarmT.FieldByName('KEYFIELD').AsInteger;
AlarmT.Close;
ilk önce kodu göstermek istedim.
EMD Interbase MAnager ile tablolarımı yaratttım. bunlardan keyfiedımı autoincrement yaptım ve normal bir prosedür olarak denediğimde çalışıyor.

benim programda bu keyfield alanını daha sonra diğer alanları güncellemek için alarm dizimde saklı tutuyorum. ama paradoxda yapabildiğim olayı burada yapamıyorum.
eğer keyfiledimi okumaya kalkarsam 'filed:keyfiled must have a value..' uyarısı alıyorum.
konuyla ilgili uyarılarınız nelerdir?
sistem: delphi7-bde-geminiODBCinterbasedriver-interbase6.5

teşekkürler
(NOT: yarın sahadayım perşembe görüşmek üzere :D )
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

koddan hareketle sizin problemin kaynagini tam anlayamadim ama bahsettiginiz hatayi bir table'daki bir alanin Required ozelligi true iken o alana deger atamadan post etmeye calisinca verir.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Olayı biraz daha açıklarsan yardımcı olabiliriz. Fahrettin beyin dediği gibi reguired bi alan tanımlamışsın. Fieldı tanımlarken not null olarak tanımlamış olabilirsin.
Sevgiler...
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

cevabınız için teşekkürler..
dediğiniz gibi Required alanını otomatik TRUE yapmış, onu false yapınca uyarı yapmayı kesti ve tabloya veri aktarmayı başardı.
ama problememim başka bir alanda devam ediyor.

yapmak istediğim tabloya bir veri satırı eklediğim zaman, osatır için yaratılacak olan(interbase tarafından) otomatik key fieldımdaki veriyi almak ve saklamak, böylece daha sonraki işlemlerinde o alanı güncellemek için sadece bu (tek ve benzersiz olan) keyfield üzerinden sorgu yaptırıp kaydımı bulmak.

şu an ki örnek kaydımı ekliyor, tablaya dışarıdan baktığımda veriyide,otomatik arttırılmışkeyfieldımıda görebiliyorum ancak, keyfieldımı o an postdan sonra okuyunca 0 okuyorum. buyüzden daha sonra bu veriyi bulamıyorum(hep 0 nolu veriyi güncelliyor)

Kod: Tümünü seç

ÖRNEK:
AlarmT.open;AlarmT.append;
AlarmT.FieldByName('alarmimparametresi1').AsInteger:=Alarm[alarmmım].param1;
AlarmT.FieldByName('alarmimparametresi2').AsInteger:=Alarm[alarmmım].param2;
AlarmT.FieldByName('alarmimparametresi4').AsInteger:=1;
AlarmT.FieldByName('alarmimparametresi5').AsInteger:=1;
AlarmT.Post; 
Alarm[alarmmım].Key := AlarmT.FieldByName('KEYFIELD').AsInteger; 
AlarmT.Close;
otomatik arttırma kodum triggerlarda BeforeInsert'den önce
acaba başka bir konumamı almam gerekir.
teşekkürler.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

arkadaşllar problemmimi çözdüm çok teşekkürler.

Kod: Tümünü seç

...
AlarmT.Post;
AlarmT.Refresh;
....
refreshden sonra problemim kalmadı, sanırım tampondan falan okuyordu driver.
Cevapla