请教一插入数字及文字的语法(40分)

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

xhliang

Unregistered / Unconfirmed
GUEST, unregistred user!
在几个edit1、edit2中输入一组数字及在edit3中输入一段备注文字,再插入表中,表结构如下:
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为备注输入。
 
你是使用open还是execsql?
 
sql.add('insert into gwj00 (gwjdm,bz,g_date) values ('+#39+edit1.Text+#39+','+#39+edit2.Text+#39+',GetDate())');
 
你怎么不把包什么错误写出来呢。。
 
close;
sql.clear;
sql.add('insert into gwj00 (gwjdm,bz,g_date) values(')
//if 数据库是ACCESS
sql.add(''''+edit1.Text+''','''+edi2.Text+''',#'+datetostr(now)+'#)');
//if 数据库是 MS SQL
sql.add(''''+edit1.Text+''','''+edi2.Text+''','''+datetostr(now)+''')');
ExecSQL;
close;

最好在执行ExecSQL前把SQL显示出来看一下就明白了。也可以在数据库中先测试。
祝你好运!!!
 
爱不到要偷 的理解与我一致,主要是因为数据的传入有问题:
解决方案有二:
1 SQL语句带参数,将你的数据传进去
2 将sql语句改成下面的:
sql.clear;
sql.add('insert into gwj00 (gwjdm,bz,g_date) values(');
sql.add(quotedstr(edit1.Text)+','+quotedstr(edi2.Text)+','+quotedstr('getdate()')+')');
 
close;
sql.clear;
sql.add('insert into gwj00 (gwjdm,bz,g_date) values ('+trim(edit1.Text)+','''+edit2.Text+''',GetDate())');
ExecSQL;
close;
 
注意:日期分ACCESS和MSSQL
备注类型最好用字符串。
在执行ExecSQL前把SQL显示出来看一下就明白了。也可以在数据库中先测试。
 
请教各位老大,备注栏只能插入首行,不知是否和 for i:=strtoint(edit1.text) to strtoint(edit2.text) do 一句有关。请各位指教。
 
谢谢各位,本贴可能分太少了(当时没分),结帖好了,另开新贴200分请教。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
860
import
I
后退
顶部