DELPHI数据库程序出错(Paradox),造成数据丢失怎样预防?(50分)

C

cjg001

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大侠:
我用DELPHI编了一收银程序,该程序运行于Window98之上,但每一个月程序总会发生几次“什么导致什么出错”之类的错误,甚至偶尔会
造成数据丢失的现象,用最新杀毒软件杀毒时没有发现病毒,同样的问题在不同的计算机上都会发生,刚刚学习编程,不怕诸位同仁笑话,在
此写上出错时的一段。
...
if Edit1.Text<>'' then
begin
Edit1.Text:=UpperCase(Edit1.Text);
with Query3 do
begin
{Price_list.Clear;
unit_list.Clear;}
if Locate('助记码',Edit1.Text,[loCaseInsensitive]) then
begin
if (FindField('单价(大)').AsFloat<>0) and
(FindField('单价(小)').AsFloat<>0) then
begin
//初始化单价数组
SetLength(Temp_price,2);
SetLength(Temp_unit,2);
Temp_price[0]:=FindField('单价(大)').AsString;
Temp_price[1]:=FindField('单价(小)').AsString;
Temp_unit[0]:=FindField('单位(大)').AsString;
Temp_unit[1]:=FindField('单位(小)').AsString;
end
else
begin
SetLength(Temp_price,1);
SetLength(Temp_unit,1);
Temp_price[0]:=FindField('单价(大)').AsString;
Temp_unit[0]:=FindField('单位(大)').AsString;
end;
PickList_Pos:=0;
CurrencyEdit12.Text:=temp_price[PickList_Pos];
Edit1.Text:=FindField('编号').AsString;
Edit2.Text:=FindField('名称').AsString;
Edit3.Text:=temp_unit[PickList_Pos];
Edit6.Text:=FindField('厨工号').AsString;
if CurrencyEdit1.Value=0 then
CurrencyEdit1.Value:=1;
CurrencyEdit2.Value:=StrToFloat(FormatFloat('0.0',
CurrencyEdit1.Value*CurrencyEdit12.Value));
end
else
if Locate('编号',Edit1.Text,[loCaseInsensitive]) then
begin
if (FindField('单价(大)').AsFloat<>0) and
(FindField('单价(小)').AsFloat<>0) then
begin
//初始化单价数组
SetLength(Temp_price,2);
SetLength(Temp_unit,2);
Temp_price[0]:=FindField('单价(大)').AsString;
Temp_price[1]:=FindField('单价(小)').AsString;
Temp_unit[0]:=FindField('单位(大)').AsString;
Temp_unit[1]:=FindField('单位(小)').AsString;
end
else
begin
SetLength(Temp_price,1);
SetLength(Temp_unit,1);
Temp_price[0]:=FindField('单价(大)').AsString;
Temp_unit[0]:=FindField('单位(大)').AsString;
end;
PickList_Pos:=0;
CurrencyEdit12.Text:=temp_price[PickList_Pos];
Edit1.Text:=FindField('编号').AsString;
Edit2.Text:=FindField('名称').AsString;
Edit3.Text:=temp_unit[PickList_Pos];
Edit6.Text:=FindField('厨工号').AsString;
if CurrencyEdit1.Value=0 then
CurrencyEdit1.Value:=1;
CurrencyEdit2.Value:=StrToFloat(FormatFloat('0.0',
CurrencyEdit1.Value*CurrencyEdit12.Value));
end
else//找不到菜品
begin
Edit2.Text:='';
Edit3.Text:='';
CurrencyEdit1.Value:=0;
CurrencyEdit2.Value:=0;
CurrencyEdit12.Value:=0;
end;
end;
 
顶部