Arkadaşlar ben Table1 de Button1 e bastığım zaman kaydın bir fazlasını yazdırıyordum ,fakat kayıtlardan herhangi birtanesini sildiğim zaman; mesela kayıt 350 ise 351 atıyordu kayıt silince 350 atıyor 350 de kayıt olsa bile.
Bunu nasıl engelleyebilirim son kayıt neyse bir fazlasını yazdırmalıyım.
Bu durumda RecordCountu kullanmamalısın. Her kaydın için bir otomatik artan sayı alanın vardır mutlaka. Her seferinde en son kaydın oto. Art. alanındaki değeri alıp bir artır.
Sanırım müşteri kodunu verirken bir arttırarark yeni kayıt açmak ve yeni girilen müşteriye kod vermek istiyorsun. Ben uygulamalarımda autoinc alan kullanmıyorsam müşteri kod alanın max yani en yüksek değerini buldurup sonra bir arttırıyorum edit içine atayıp yoluma devam ediyorum ve kaydediyorum.
dm1.adlisayiveribqry.close;
dm1.adlisayiveribqry.sql.clear;
dm1.adlisayiveribqry.sql.add('select max(ADLI_NO) as adlino from ADLI_SAYI');
dm1.adlisayiveribqry.SQL.Add('Where ADLI_YIL=:adli_yil');
dm1.adlisayiveribqry.parambyname('adli_yil').asinteger:=strtoint(copy(datetostr(date),7,10));
dm1.adlisayiveribqry.open;
dm1.adliSayiIBDSet.Append;
dbedit2.Text:=inttostr(dm1.adlisayiveribqry.fieldbyname('adlino').AsInteger+1);
dbedit1.Text:=inttostr(strtoint(copy(datetostr(date),7,10)));
DBEdit14.Text:=dm1.PrgGirisIBQry.fieldbyname('KULLANICI_ADI').AsString;
jvdbdateedit1.SetFocus;
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.
Kayıt için insert değilde append kullanıyosunuz, yani;
Yeni kayıt girdisi yaptırmadan hemen önce datadaki son kayda gider ve ilgili değeri aldırırsınız, daha sonra yeni kayıtta da bu değerin bir üstünü verirsiniz.
Arkadaşlar bir süre kayıt denettirdim yine aynı sorunum devam ediyor şöyleki;
Mesela 400 tane kaydım var ve aradan bir kayıt sildiğim zaman o kaydın bir fazlasını yazıyor , Table sonundaki kaydın bir fazlasını almıyor.
Table1 kullanmak zorundayım program.
Function ensonkayitnumarasiniver():integer;
Var
sorgu:tquery;
Begin
sorgu:=tquery.create(self);
try
sorgu.close;
sorgu.sql.clear;
sorgu.sql.add('select max(MUSKODU) as ensonno from tabloadı ');
sorgu.open;
result:=sorgu.FieldByName('ensonno ').asinteger;
Finally
sorgu.free;
end;
end;
İlk sorduğunu okudum da kayıt numarası bir birincil anahtar olarak kullanılamaz.. Farkında olduğun gibi kayıt silinince aynı numaralı kayıtlar yazma durumu hasıl olacaktır. O yüzden SISKOD dediğin alana eğer tabloda hiç kayıt yoksa bir aksi halde MAX ını alıp bir eklemelisin.
Bir de kullandığın VT yi yazmamışsın, sanırım Paradoks.. ve from dan sonraki kısmı tırnak içinde yazman gerekebilir
Hayır olmadı.Bu durum devam etmekle birlikte F2 tuşu ile bir DBGrid ekranı açıyorum ve orda ad soyad listeleme ile kayıt bulduruyorum alana aktarıyorum durum şu aktardığım kayıt mesela 245 ise ve Ekle button nunada basmış ise yine son kayıdı bir fazla almıyor.Table da ve paradox da kullanmak zorundayım query cevirme şansım yok alt yapısı bozulur tamamen yardım ederseniz çok sevinirim.