我使用TADOConnect与TADOQuery组件来访问OFFICE Access数据库.
问题出在:
1.用TADOQuery来查询数据库,不能使用where子句.只能使用select部分,而不能使用where部分.
2.用TAdoQuery删除一张表的数据,不能使用delete from 表名.而在TADOCommand中可以.
3.在TAdoCommand中的delete from 表名,如果在加上where ...就会出错!!!
为什么?解答一下!谢谢!
问题出在:
1.用TADOQuery来查询数据库,不能使用where子句.只能使用select部分,而不能使用where部分.
2.用TAdoQuery删除一张表的数据,不能使用delete from 表名.而在TADOCommand中可以.
3.在TAdoCommand中的delete from 表名,如果在加上where ...就会出错!!!
为什么?解答一下!谢谢!
而我使用delphi7的Mdac也出错!!
adoq.sql.Add('select * from 表名 where 字段名 = '+IntToStr(AccountID));adoq是TADOQuery
字段名是整型.
AccountID是一整型值!thanks!
main.query.close;
main.query.sql.clear;
main.query.SQL.Add('SELECT * from liushi WHERE (1=1)');
tj:='';
tj:=tj+'and(流水>='+inttostr(spinedit1.value)+')';
tj:=tj+'and(流水<='+inttostr(spinedit2.value)+')';
tj:=tj+'and(合计>='+floattostr(minhj)+')';
tj:=tj+'and(合计<='+floattostr(maxhj)+')';
if weizhi.Text<>'' then
tj:=tj+'and(位置 like'+'''%'+weizhi.text+'%'''+')';
tj:=tj+'and(日期>=#'+formatdatetime('yyyy-m-dd hh:mm:ss',dt1.datetime)+'#)';
tj:=tj+'and(日期<=#'+formatdatetime('yyyy-m-dd hh:mm:ss',dt3.datetime)+'#);';
main.query.sql.add(tj);
//showmessage(main.query.sql.Text);
main.query.open;
select * from liushi where 1=1 这边我不用后面的and应该不用括号吧。
这样还是会出错!!我的操作系统是windows 2000 Family Server
在MS SQL Server 2000中,那些SQL语句不会出错的。
如何修复access数据库?
修复方法:
工具-》数据库实用工具-》压缩和修复
而这些sql语句在ms sql server中的测试是没有问题的!惨!!
select * from 表 where 字段=1;
已经写成这么简单的了编译还会错误!!!!
修复后还是错!
将SQL语句在Access中的“查询”去执行试试,可以的话就没问题
adoq.sql.Add('select * from 表名 where 字段名 = '+'"'+IntToStr(AccountID)+'"');
字段名是Access中的关键字(不知有没有这种说法?)
用来查询修改就不行,如session,data等
改成你说的那样,还是错!
wzrlover(流光逝水):
在access中的查询不会有错误!
字段是英文的,但绝对不是access关键字,因为字段很自己设定的!
是不是你的数据库建模有问题
一般来说,add或txt提交的sql,delphi程序是不检查的错误与否的,就算你里面写的一团糟,程序也能执行,只不过返回的东西就不是你所想要的了!
还有对于需不需要返回结果集是用的方法是不同的,这个总不会不知道吧!
adoq.sql.Add('select * from 表名 where 字段名 = '''+IntToStr(AccountID)+'''');
select * from table能运行嘛?具体报的错误是什么?
里面写的很清楚.
我给你的例子在很多机器上运行很正常。
至于数据库,那是别人建立的。我只需要往里面读写改东西就可以了。
我也不知道怎么会这样,那些 SQL 语句在ms sql server中不会错误的!
------------------------------------
flyingkiller(大飞虫) :
先说一下,我的字段是整型的。
select * from table是可以运行的。
报错是提示在where附近语法错误。
而写成
select * from Table where 字段=1
这样简单也会提示错误!
现在只求解决问题。
那么喜欢?另一本电子书给你!
http://ahpei.myetang.com/directx8/01.rar
http://ahpei.myetang.com/directx8/02.rar
...
http://ahpei.myetang.com/directx8/13.rar