小问题一个,希望大家帮我(50分)

  • 主题发起人 主题发起人 LINZONGM
  • 开始时间 开始时间
L

LINZONGM

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一张表(用PARADOX)做基础,共有5个字段,APPLYUPDATES后在用QUERY的INSERT插入另外两张表
(都有9个字段),在我插入第一张表时就说出错,程序如下:
procedure TJhLRForm.FormShow(Sender: TObject);
begin
With Query1 do
begin
close;
Sql.Clear;
Sql.Add('Delete From JH');
ExecSql;
end;
With DM.Query1 do
begin
Close;
Sql.Clear;
Sql.Add('Select Jh_No,Rq,Sbxh,Dj,Sl,Zje from Jh');
Open;
end;
end;

procedure TJhLRForm.CoolBtn1Click(Sender: TObject);
begin
DM.Query1.ApplyUpdates;
With JHQuery do
begin
Close;
Sql.Clear;
Sql.Add('insert into JH(JH_No,Rq,SBXH,DJ,Sl,ZJE,Jsr,BJ,SM)');
Sql.Add('Values('''+CoolEdit1.Text+''',:Rq,'''+DM.Query1.FieldByName('SBXH').AsString+''','+DM.Query1.FieldByName('DJ').AsString+','+DM.Query1.FieldByName('SL').AsString+','+DM.Query1.FieldByName('ZJE').AsString+','''+CoolEdit3.Text+''',:BJ,''进货'')');
ParamByName('Rq').AsDateTime:=DateTimePicker1.Date;
ParamByName('BJ').AsString:='0';
ExecSql;
end;
With Query1 do
begin
Close;
Sql.Clear;
Sql.Add('insert into JHXX(JH_No,Rq,SBXH,DJ,Sl,ZJE,Jsr,BJ,SM)');
Sql.Add('Values('''+CoolEdit1.Text+''',:Rq,'''+DM.Query1.FieldByName('SBXH').AsString+''','''+DM.Query1.FieldByName('DJ').AsString+''','''+DM.Query1.FieldByName('SL').AsString+''','''+DM.Query1.FieldByName('ZJE').AsString+''','''+CoolEdit3.Text+''','''+DM.Query1.FieldByName('BJ').AsString+''','''+DM.Query1.FieldByName('SM').AsString+''')');
ParamByName('Rq').AsDateTime:=DateTimePicker1.Date;
ExecSql;
end;
With DM.Query do
begin
Close;
Sql.Clear;
Sql.Add('Select * from "SUM.Sql"');
Open;
end;
With DM.JHQuery do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into JHHZ(JH_No,Rq,SL,ZJE,SM)');
Sql.Add('Values(:JH_NO,:Rq,:SL,:ZJE,''进货'')');
ParamByName('JH_No').AsString:=DM.Query.FieldByName('JH_NO').AsString;
ParamByName('Rq').AsDateTime:=DateTimePicker1.Date;
ParamByName('SL').AsInteger:=DM.Query.FieldByName('SL').AsInteger;
ParamByName('ZJE').AsFloat:=DM.Query.FieldByName('ZJE').AsFloat;
ExecSql;
end;
我这样写编译的时候好好的,执行的时候就出错,这是为什么?请大家帮帮小弟!
 
Sql.Add('Delete From JH');
这句话把JH删空了,

Sql.Add('Select Jh_No,Rq,Sbxh,Dj,Sl,Zje from Jh');
Open;

这句话得到的是空的结果集
当你往jh插入数据后这个query并没有更新
所以当你插入到其他表时会出错。
就是这样

 
这句话可以不要 DM.Query1.ApplyUpdates;
正如楼上说的 你第一 段已3删除了jh
下面select 的是一个只是没有记录的空集

DM.Query1.FieldByName('SBXH').AsString 肯定会报错


另外建议你全部使用参数这样也可以检查哪里错了
 
Sql.Add('Delete From JH');
我是清空数据,再SELECT,形成空表(临时表)这样我才可以继续编辑新的数据
这个没什么错吧!
 
出错出在哪里?
错误提示是什么 ?
 
提示错误:invalid parameter
 
请问斑竹我的问题,如果没有人回答的话,我不给分行不行啊,如果我问题没解决却
要给别人分那不是很没天理啊!
 
清空数据后,先 append一下,再Select,这样就可以知道是不是空纪录集导致的错误啦。
 
你50分,我300分都丢了!其实,重要的是人家热心的看你的程序!,指出问题!
 
赞成,我上次的200分就打水漂了
 
你搞反了吧﹖
有更新動作的sql用Execute執行
而無更新動作的sql要用Open打開。
 
就这样算了,见者有份。
 
多人接受答案了。
 
后退
顶部