Son kayıdı görmüyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Son kayıdı görmüyor

Mesaj gönderen CinAnka »

Merhaba;

Ado kullanıyorum, alanlarım

ID
ADI
SOYADI
REFERANS

burada referans sayı içeriyor, fakat ben onu metin olarak tanımladım (öyle olması lazımdı). şimdi, amacım, bir butona basılınca, en son kayda gidip referans numarasını okuması ve onu bir arttırarak yeni bir kayıt eklemesi...

şimdi buraya kadar herşey normal, yani tüm bu işlemleri yapıyor ama hayretle iştigal ki, programı her yeni çalıştırdığımda, son kayıt olmamasına rağmen referans numarası 21 olanı okuyor...
Neden?????

Kod: Tümünü seç


//Referans numarasını veren fonksiyon
function ReferansNo:String;
var
        referans:string;
        sayi:integer;
begin
        if DAtaModuleCommon.TBL_GIDENSMS.RecordCount=0 then
        begin
                referans:='1';
                result:='1';
        end
        else begin
                DAtaModuleCommon.TBL_GIDENSMS.Last;
                referans:=DAtaModuleCommon.TBL_GIDENSMSREFERANS.AsString;
                sayi:=strtoint(referans);
                sayi:=sayi+1;
                referans:=inttostr(sayi);
                result:=referans;
        end;
end;

Teşekkür ederim
Güçlü olan haklı değil, haklı olan güçlüdür!
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Son kayıt yerine en büyük kayıdı bulmak daha sağlıklı olmaz mı?
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

en son kayit her zaman en buyuk kayit oluyor zaten. benim kodum neden çalışmıyor, o kısmı anlamadım...
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

en son kayit her zaman en buyuk kayit oluyor zaten. benim kodum neden çalışmıyor, o kısmı anlamadım...
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

tabloda son kaydın ne olacağını bilemezsin, bu nedenle sen en büyük kayıt numarasını bul.
böyle diyorum çünkü veritabanlarında insert ve append komutları farklı işlem yapıyorlar.
bir tabloya 2 kayıt ekler ve 1.kayda konumlanıp insert ile veri kaydedersen her zaman araya kaydeder. haliyle son kayıt hiç değişmez.
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Mesaj gönderen comfort »

Referans alanına index tanımla ASC (artan sırada). O zaman son kayıt en büyük kayıt olur.Senin tablonda id muhtemelen PK dir. 21 nolu kayıt id alanının en büyük değeridir büyük ihtimalle. Referans için secondary index tanımla bi daha dene.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

CinAnka yazdı:en son kayit her zaman en buyuk kayit oluyor zaten. benim kodum neden çalışmıyor, o kısmı anlamadım...
Sağlıklı'dan kastım buydu işte.
Nitrokonat'ın da dediği gibi, son kayıt en büyük kayıt olmayabilir.
Bu nedenler en büyük kayıdı arayın, son kayıdı değil.
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Merhabalar;

Kullandığınız yöntem çok sağlıklı bir yöntem değil.
Böyle durumlarda en sağlıklı yöntem ya autoincrement alan tanımlamak ya da refenrans numaranızı başka bir tabloda tutup sürekli oradan takip etmek olacaktır.

Kolay gelsin..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Cevapla