在程序刚刚运行时触发了这个错误:Access Violation at Address 004DE670 in module MVHMIS.exe.Read of address 00000158
自己觉得可能是在下面两个过程中出现问题,但是找不出来,麻烦各位帮忙看看
这个先遍历工资数据集的工资记录,然后进行加总,程序编译时出现:sum,s定义了但是程序没有使用到,为什么呢?
procedure TPayForm.Total;
var
i,s,sum:integer;
begin
if DM.ADSPay.RecordCount<1 then
edTotal.Text:=''
else
begin
DM.ADSPay.First;
sum:=0;
for i:=0 to DM.ADSPay.RecordCount-1 do
begin
s:=StrToInt(DM.ADSPay.FieldByName('pay').AsString); //为s赋值
DM.ADSPay.Next;
sum:=sum+s;
end;
end;
end;这个是在窗体创建时开始进行TQuery 控件SQL语句的初始化,可能有问题:
procedure TPayForm.FormCreate(Sender: TObject);
begin
with DM.ADQPay do
begin
Close;
SQL.Clear;
//下面的SQL语句可能会有点问题,可是程序没有报错
SQL.Add('select * from (select EmName as names, pay from employee');
SQL.Add('union select PcName as names , pay from physician');
SQL.Add('union select NName as names, pay from nurse');
SQL.Add('union select TcName as names , pay from technician)');
SQL.Add('a order by names');
open;
end;
DM.ADSPay.Open;
end;
自己觉得可能是在下面两个过程中出现问题,但是找不出来,麻烦各位帮忙看看
这个先遍历工资数据集的工资记录,然后进行加总,程序编译时出现:sum,s定义了但是程序没有使用到,为什么呢?
procedure TPayForm.Total;
var
i,s,sum:integer;
begin
if DM.ADSPay.RecordCount<1 then
edTotal.Text:=''
else
begin
DM.ADSPay.First;
sum:=0;
for i:=0 to DM.ADSPay.RecordCount-1 do
begin
s:=StrToInt(DM.ADSPay.FieldByName('pay').AsString); //为s赋值
DM.ADSPay.Next;
sum:=sum+s;
end;
end;
end;这个是在窗体创建时开始进行TQuery 控件SQL语句的初始化,可能有问题:
procedure TPayForm.FormCreate(Sender: TObject);
begin
with DM.ADQPay do
begin
Close;
SQL.Clear;
//下面的SQL语句可能会有点问题,可是程序没有报错
SQL.Add('select * from (select EmName as names, pay from employee');
SQL.Add('union select PcName as names , pay from physician');
SQL.Add('union select NName as names, pay from nurse');
SQL.Add('union select TcName as names , pay from technician)');
SQL.Add('a order by names');
open;
end;
DM.ADSPay.Open;
end;
procedure TPayForm.Total;
var
i,s,sum:integer;
begin
if DM.ADSPay.RecordCount<1 then
edTotal.Text:=''
else
begin
DM.ADSPay.First;
sum:=0;
for i:=0 to DM.ADSPay.RecordCount-1 do
begin
s:=StrToInt(DM.ADSPay.FieldByName('pay').AsString); //为s赋值
DM.ADSPay.Next;
sum:=sum+s;
end;
edTotal.text := IntToStr(Sum)
end;
end;
究竟哪里错了呢?
点击确定后,依然可以运行。但是我想要的功能没有实现