Veri Kaybı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
acinar
Üye
Mesajlar: 2
Kayıt: 16 Ara 2011 11:41

Veri Kaybı

Mesaj gönderen acinar »

Merhaba arkadaşlar.
Kendim barkod ile bir kırtasiye satış programı yaptım. Veri tabanı olarak Paradox kullanıyorum. Veri tabanı dosyamın adı Toplu. Bunu değişik Table ve Query bağlantıları ile okutup bilgi yazdırıyorum. Programı sonlandırıyorum 'Application.Terminate' tekrar çalıştırıyorum, sorun yok. Ancak bilgisayarı açıp kapattığımda programı tekrar çalıştırdığımda "Key Volition" sorunu veriyor. Veri tabanı dosyasını DBD32 ile açıyorum. Bilgisayarı kapatmadan önceki kayıtlar görünüyor, sonrakiler kayıp olmuş.
Kodlar şu şekilde;

procedure TSTB.Button1Click(Sender: TObject);
var
soru:Integer;
Label
devam;
begin
.
.
if not TabloyaYaz.InTransaction Then
begin
TabloyaYaz.StartTransaction;
STB.Caption:='TABLO AÇIK';
end;
Toplu.SQL.Clear;
Toplu.SQL.Add('Select *From Toplu.db');
Toplu.Active:=True;
Toplu.Open;
Toplu.Last;
Toplu.Insert;
TopluMNO.Text:=MNo.Text;
.
.
.
Toplu.Post;
Toplu.Append;
TabloyaYaz.Commit;
Toplu.UpdateRecord;
Toplu.Active:=False;
Toplu.Close;
Application.MessageBox('ÖDEME KAYDI BAŞARIYLA YAPILDI.','İŞLEM TAMAM',MB_OK);
exit;
end;
end;

.
.
.
Toplu.SQL.Clear;
Toplu.SQL.Add('Select *From Toplu.db');
Toplu.Open;//20.09.2014
Table3.DefaultIndex:=True;
TabloyaYaz.TransIsolation:=tiDirtyRead;//20.09.2014 ağ ya da local makine ayarı
TabloyaYaz.DatabaseName:='Kayit';//20.09.2014
TabloyaYaz.Connected:=True;//20.09.2014

if not TabloyaYaz.InTransaction Then
begin
TabloyaYaz.StartTransaction;
STB.Caption:='TABLO AÇIK';
end;
Kaydet;
TabloyaYaz.Commit;
Toplu.UpdateRecord;
STB.Caption:='SATIŞ/TAHSİLAT/BORÇ SORGULA';
ComboBox1.Text:='';
Toplu.SQL.Clear;
end;
end;


procedure TSTB.Kaydet;
var
i:Integer;
yil,ay,gun:Word;
begin
Table1.Active:=True;
Table2.Active:=True;
Toplu.Active:=True;
Toplu.Open;
Table5.Active:=True;
Table3.Active:=True;

if (Table1.RecordCount>0) then
begin
Toplu.Last;
if (Table2ACIKLAMA.Text <> Memo1.Text) then
begin
Table1.Edit;
Table1ACIKLAMA.Text:=Memo1.Text;
Table1.Post;
end;
if Table1.RecordCount=1 then
begin
Table1.Edit;
Table1No.Text:=Table1IslemNo.Text;
Table1.Post;
end;
DecodeDate(Now,yil,ay,gun);
Table1.First;
for i:=1 to Table1.RecordCount do
begin
Toplu.Insert;
TopluNo.Text:=Fatnotext.Text;
.
.
.
Toplu.Post;
Toplu.Append;
Toplu.UpdateRecord;
.
.
.

if ay=12 then
Table3ARALIK.AsCurrency:=StrToCurr(IntToStr(StrToInt(Table3ARALIK.Text)+StrToInt(Table1ADET.Text)));

Table3.Post;
Table3.Append;
if not Table1.Eof Then //SON kayıt değilse
Table1.Next;//SONRAKİ KAYIT
end;
IF TabloyaYaz.InTransaction Then
begin
STB.Caption:='TABLO AÇIK';
end
else
begin
STB.Caption:='SATIŞ/TAHSİLAT/BORÇ SORGULA';
end;

end;
end;
Bu konuda yardımcı olursanız sevinirim. Şimdiden teşekkür ederim.
Senat0r
Üye
Mesajlar: 80
Kayıt: 13 Tem 2014 09:30
Konum: Antalya

Re: Veri Kaybı

Mesaj gönderen Senat0r »

viewtopic.php?t=6010 İlk okuduğumda çok gülmüştüm :D
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...

Kod: Tümünü seç

Delete from hayat where cins="çıkarcılar"
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Veri Kaybı

Mesaj gönderen thelvaci »

Sizin sorunuzun cevabı yanlış hatırlamıyor isem eğer; DbiSaveChanges metodu. Ben bu metodu çok seneler önce TTable.Post içine koymuştum. Persist kayıt yapmak için işe yarıyordu. Ama arkadaşın verdiği linkte bahsedildiği gibi artık tamamen desteği olmayan Paradox gibi bir ürün kullanmak yerine pek çok muadilinden birisini tercih etmeniz faydanıza olacaktır.
Cevapla