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.
Veri Kaybı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Veri Kaybı
viewtopic.php?t=6010 İlk okuduğumda çok gülmüştüm 

gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...
Kod: Tümünü seç
Delete from hayat where cins="çıkarcılar"
Re: Veri Kaybı
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.