请教一插入文字的程序问题(200分)

  • 主题发起人 主题发起人 xhliang
  • 开始时间 开始时间
X

xhliang

Unregistered / Unconfirmed
GUEST, unregistred user!
有几个edit输入框,先在edit1、edit2中输入一组数字及在edit3中输入一段备注文字、edit5中入面值,再插入表中,表结构及输入后的结果如下:
gwjdm(代码) m_jing(面值) bz(备注) g_mijng(购买金额) g_date(购买日期)
10001       50    卫生局    50          2006-10-06
10002       50           50          2006-10-06
10003       50           50          2006-10-06

说明:在edit1中输入10001。在edit2中10003,面值为50 购买金额为50 备注为卫生局。执行后,代码、面值、日期等圴没事,但备注栏出错。只有头一行能插入,其它为空白(如上表)。不知何故,恳请各位老大指教!多谢!


语句如下:
begin
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
begin
with adoquery5 do
begin
close;
sql.clear;
sql.add('insert into gwj00 (gwjdm,m_jine,bz,g_mjine,g_date) values (:a,'+trim(edit5.Text)+','''+edit3.Text+''','+trim(edit5.Text)+',GetDate())');
Parameters.ParamByName('a').VALUE :=i;
execsql;
close;
其中edit5为面值输入、edit3为备注输入。
 
语法看不出问题来。那你把edit3.的前后空格也使用trim去掉吧。
 
你单步执行,跟踪看看传入的SQL 语句是什么内容
 
语句应该没有问题先别循环。每次把 i 加 1 后试下。
 
QQ:75523263
 
确实奇怪。你直接在数据库中执行这个SQL,也还是一样嘛?
 
谢谢各位,也不知何故,将其改成如下后,就可以了,奇怪!
begin
if (edit1.text = '') or (edit2.text = '') then
begin
showmessage('请填入卷号!');

end
else
begin
sqlstr:='select * from gwj00 where gwjdm>='''+edit1.text+'''and gwjdm<='''+edit2.text+'''';
with adoquery5 do
begin
adoquery5.sql.clear;
adoquery5.sql.add(sqlstr);
adoquery5.open;
if not adoquery5.eof then
//重复
else
//增加数据
begin
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
begin
with adoquery5 do
begin
close;
sql.clear;
sql.add('insert into gwj00 (gwjdm,m_jine,bz,g_mjine,g_date) values (:a,'+edit5.text+','''+edit3.Text+''' ,'+edit5.text+',GetDate())');
Parameters.ParamByName('a').VALUE :=i;
ExecSQL;
close;
begin
sql.Clear;
sql.text:='select * from gwj00 where gwjdm>='''+edit1.text+'''and gwjdm<='''+edit2.text+'''';
open;

end;

end;

end;
end;
end;
end;
end;
 
那麼發分了嗎?
我又頂一頂阿
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
685
import
I
I
回复
0
查看
552
import
I
后退
顶部