我的问题:
stuinfo表里有stunumber, stuname,classname三个字段,
debtinfo表里有 stunumber, stuname, owetuition, owebookfee, state这五个字段。
我导入的数据表charge里有 classname,term,tuition,bookfee这四个字段。 我开始导入数据那就要更新,并取得到了导入charge表里的四个数据:
1、 那么现在只要在debt.classname=charge.classname的数据都在更新。就是在debt表的owe两个字段上加上 tuition,bookfee的值。
2、问题是要是这个classname在 stuinfo里有但是在debt里没有时,怎么得到要插入的数据? 下面有代码我自己写的,帮看一下对不对,谢谢! procedure TFchageitemcheck.updateoldstu;
var
tnumber,tname,a:string;
begin
with FDM.qry3updatecharge do
begin
close;
sql.clear;
SQL.Add('select debtinfo.stunumber,debtinfo.stuname,debtinfo.owetuition,debtinfo.owebookfee,debtinfo.state,stuinfo.classname from stuinfo,debtinfo');
SQL.Add('where stuinfo.stunumber=debtinfo.stunumber and stuinfo.classname=:'''+addclass+''''); //SQL.Add('stuinfo.stunumber=:debtinfo.stunumber and stuinfo.classname=:'''+addclass+'''');
open;
if RecordCount>0 then
begin
First;
while not Eof do
begin
a :=FDM.qry3updatecharge.fieldbyname('stunumber').asstring;
with FDM.qry3 do
begin
close;
sql.clear;
SQL.add('update debtinfo set owetuition=owetuition+convert(money,'''+inttostr(addtuition)+'''),owebookfee=owebookfee+convert(money,'''+ IntToStr(addbookfee) +''') where stunumber=:stunumber');
Parameters.ParamByName('stunumber').Value := a;
ExecSQL;
end;
Next;
end end
else if recordcount=0 then
begin
with FDM.qry3addcharge do
begin
Close;
SQL.Clear;
SQL.Add('select * from stuinfo where classname=:'''+addclass+'''');
Open;
end; First;
while not Eof do
begin
tnumber:= fieldbyname('stunumber').asstring;
tname := fieldbyname('stuname').asstring;
with FDM.qry3 do
begin
Close;
SQL.Clear;
SQL.Add('insert into debtinfo(stunumber, stuname,owetuition,owebookfee,state)');
Parameters.ParamByName('stunumber').Value := tnumber;
Parameters.ParamByName('stuname').Value := tname;
Parameters.ParamByName('owetuition').Value := addtuition;
Parameters.ParamByName('owebookfee').Value := addbookfee; //两个是导入得到的数据
Parameters.ParamByName('state').Value := 0;
ExecSQL;
end;
Next;
end;
end;
end;
end; 这个的数据导入时,没有说提示错,就是插入和更新了数据?与之相关的数据,表里都有
stuinfo表里有stunumber, stuname,classname三个字段,
debtinfo表里有 stunumber, stuname, owetuition, owebookfee, state这五个字段。
我导入的数据表charge里有 classname,term,tuition,bookfee这四个字段。 我开始导入数据那就要更新,并取得到了导入charge表里的四个数据:
1、 那么现在只要在debt.classname=charge.classname的数据都在更新。就是在debt表的owe两个字段上加上 tuition,bookfee的值。
2、问题是要是这个classname在 stuinfo里有但是在debt里没有时,怎么得到要插入的数据? 下面有代码我自己写的,帮看一下对不对,谢谢! procedure TFchageitemcheck.updateoldstu;
var
tnumber,tname,a:string;
begin
with FDM.qry3updatecharge do
begin
close;
sql.clear;
SQL.Add('select debtinfo.stunumber,debtinfo.stuname,debtinfo.owetuition,debtinfo.owebookfee,debtinfo.state,stuinfo.classname from stuinfo,debtinfo');
SQL.Add('where stuinfo.stunumber=debtinfo.stunumber and stuinfo.classname=:'''+addclass+''''); //SQL.Add('stuinfo.stunumber=:debtinfo.stunumber and stuinfo.classname=:'''+addclass+'''');
open;
if RecordCount>0 then
begin
First;
while not Eof do
begin
a :=FDM.qry3updatecharge.fieldbyname('stunumber').asstring;
with FDM.qry3 do
begin
close;
sql.clear;
SQL.add('update debtinfo set owetuition=owetuition+convert(money,'''+inttostr(addtuition)+'''),owebookfee=owebookfee+convert(money,'''+ IntToStr(addbookfee) +''') where stunumber=:stunumber');
Parameters.ParamByName('stunumber').Value := a;
ExecSQL;
end;
Next;
end end
else if recordcount=0 then
begin
with FDM.qry3addcharge do
begin
Close;
SQL.Clear;
SQL.Add('select * from stuinfo where classname=:'''+addclass+'''');
Open;
end; First;
while not Eof do
begin
tnumber:= fieldbyname('stunumber').asstring;
tname := fieldbyname('stuname').asstring;
with FDM.qry3 do
begin
Close;
SQL.Clear;
SQL.Add('insert into debtinfo(stunumber, stuname,owetuition,owebookfee,state)');
Parameters.ParamByName('stunumber').Value := tnumber;
Parameters.ParamByName('stuname').Value := tname;
Parameters.ParamByName('owetuition').Value := addtuition;
Parameters.ParamByName('owebookfee').Value := addbookfee; //两个是导入得到的数据
Parameters.ParamByName('state').Value := 0;
ExecSQL;
end;
Next;
end;
end;
end;
end; 这个的数据导入时,没有说提示错,就是插入和更新了数据?与之相关的数据,表里都有
解决方案 »
- 小聲的問一下:^Tpmyid中這個^是什麼意思?
- FileExists(String:FileName)有关此函数中,文件名数径问题
- 怎样分别取得时间中的时分秒
- 为什么动态创建的窗体经USES语句引用后,在并未创建该窗体时仍然会消耗资源?
- 日期非法
- 为何我用bde总不能配置成功access呢?〉
- 关于样式匹配条件的问题
- 如何捕捉listbox.. 的异常?
- 我的窗体上有一个ALIGN为CLIENT的IMAGE,该IMAGE上面是一个透明的PANEL,该PANEL上面方了一些其他组件。当我执行循环的时候,为什么屏幕总是闪烁。把该循环改为在一个单独的线程中执行,同样还是闪烁,应当如何解决
- 一点小问题,共同聊聊
- 关于FindControl的问题
- 请问会员卡系统需要哪些硬件?
还有tryexcept 之类的。
SQL.Add('insert into debtinfo(stunumber, stuname,owetuition,owebookfee,state)');
Parameters.ParamByName('stunumber').Value := tnumber;
Parameters.ParamByName('stuname').Value := tname;
Parameters.ParamByName('owetuition').Value := addtuition;
Parameters.ParamByName('owebookfee').Value := addbookfee; //两个是导入得到的数据
Parameters.ParamByName('state').Value := 0;
ExecSQL;Parameters.ParamByName('stunumber').Value := tnumber这些Param没有定义,需要在SQL中定义。