关于查询(100分)

  • 主题发起人 主题发起人 nfy
  • 开始时间 开始时间
N

nfy

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i:integer;
For i:=1 to 3 do
with Query1 do
begin
close;
sql.clear;
sql.Add('insert into TEMP(hCode,Ymonth,QiChu,Attrib)');
sql.add('select HEADCODE,YEMONTH,VALUE,ATTRIB from "H:/kczw/zw00'+IntToStr(i)+'/zwye2002.db"');
sql.Add('where yemonth="00" and headcode="'+edit1.text+'"');
Prepare;
ExecSQL;
end;
end;
执行以上代码出现以下提示
Project xxx.exe raised exception class EAccessViolation with message Access violation at address 4C5EE67E in module 'IDSQL32.dll'
请帮忙解决
 
你怎么又Insert Into,又Select的,把它们分开写吧
sql.Add('where yemonth="00" and headcode="'+edit1.text+'"');改为
sql.Add('where yemonth=''00'' and headcode= '+''''+edit1.text+'''');
注意,是双单引号,不是双引号
 
select语句干什么
想返回数据也要用open呀
把上面的错误改掉后
把sql语句一句一句地执行
你的数据库好象不能一次进行批量语句处理吧
 
还能直接指向数据库啊?Query有这个功能吗?我真是落伍了。
 
"H:/kczw/zw00'+IntToStr(i)+'/zwye2002.db"');
错误,应该是select .. from query
 
老大,好象ACCESS不支持批量操作吧。我没有测试,只是估计。
还有,碰到引号多的时候,你用#39来代替,就明显多了。
比如‘……’+#39+edit1.text+#39+‘……’,不比你用那么多引号强?
还有,查询时,要使用OPEN来进行,执行数据更改操作,才会用EXECSQL。
 
你先用一个database连接数据库吧,呵呵
 
在access里 我用过了 insert into table (你想插入的字段) select (你想插入的字段) from table1
这是可以的。并且用execsql
我想问题应该在于"H:/kczw/zw00'+IntToStr(i)+'/zwye2002.db"'
你在检查一下。。(表的结构)
 
DatabaseName:=Extractfilepath(Application.exename)
sql.add('select HEADCODE,YEMONTH,VALUE,ATTRIB from 表名);
表名就是表名!干吗要 表名.db??不要扩展的吧!!!
 
Query里面设计到两个DATABASE,如果是BDE连接,可能不行吧。
 
sql.add('select HEADCODE,YEMONTH,VALUE,ATTRIB from 表名);
~~~~~~
value是sql的关键字,能用吗?
 
多人接受答案了。
 
后退
顶部