Ado访问Access数据库!(100分)

  • 主题发起人 主题发起人 ahpei
  • 开始时间 开始时间
A

ahpei

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用TADOConnect与TADOQuery组件来访问OFFICE Access数据库.
问题出在:
1.用TADOQuery来查询数据库,不能使用where子句.只能使用select部分,而不能使用where部分.
2.用TAdoQuery删除一张表的数据,不能使用delete from 表名.而在TADOCommand中可以.
3.在TAdoCommand中的delete from 表名,如果在加上where ...就会出错!!!
为什么?解答一下!谢谢!
 
看看你的query初始化是
open?
close?
用之前有没有open?
 
有這事?
出現什麼錯誤提示?
應該是where 語法有錯…!
 
估计字段名和保留字冲突了,或Where后的格式错误。
把Where后的条件列出来吧。
 
:ljy_17
对,就是提示where那边的语法错误!
但是,在access或ms sql server中分析那些代码是没有错误的!
-------------------------
:delphi?,
有OPEN,设置sql参数的时候都有先close,再clear的!!
---------------------------
QuickSilver
没有和关键字冲突,
adoq.sql.Add('select * from _Catalog_User where _Catalog_User_UserID = '+IntToStr(AccountID));
其中adoq是 TAdoquery
字段类型是int
accountID也是int,
并且之前accountID已经有一确定值!
 
_Catalog_User_UserID ???
提示是什么,你字段是_Catalog_User_UserID 还是UserID呢
 
adoq.sql.Add('select * from _Catalog_User where _Catalog_User_UserID =:cy');
adoq.parameter.parambyname('cy').value:=IntToStr(AccountID);
然后执行看看…………
 
//字段类型是int!!
adoq.sql.Add('select * from _Catalog_User where _Catalog_User_UserID =:cy');
adoq.parameter.parambyname('cy').value:=AccountID;

 
春意:
错误!!!
还是提示有错误!
还带一个msado15.dll错误的提示.
 
使用ACCESS数据库和ADO时要注意以下几点:
1、ACCESS数据库的语法和SQL SERVER等不一样,要注意类型,特别是字符和时间,使用的
引号也要注意。
2、ADO版本之间不兼容,固定使用一个ADO版本,不要在不同版本之间转换。
3、不同ADO版本,SQL语句的语法也有细微的差别,要注意分别。

建议不要使用ACCESS,在WINDOWS安装其他程序时可能导致无法使用,如果非要使用ACCESS,
建议你不要使用ADO连接。可以使用第三方控件。
 
薛獅:
能不能举些例子??thanks
 
adoq.close;
adoq.sql.clear;
adoq.sql.Add('select * from _Catalog_User where _Catalog_User_UserID = '''+I
ntToStr(AccountID) + '''');
adoq.open;
 
举个例子来说吧:
procedure TxequForm.Button1Click(Sender: TObject);
begin
ModalResult:=mrOK;
equchoice:=edit1.Text;
try
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from 表1');
query1.SQL.Add('where 名称=equchoice');
Query1.ExecSQL;
except
end;
equdatawhForm.ShowModal;
end;
备注:
Query1.ExecSQL
改成Query1.Open
原因:
Call ExecSQL to execute the SQL statement
currently assigned to the SQL property.
Use ExecSQL to execute queries that do not
return a cursor to data (such as INSERT,
UPDATE, DELETE, and CREATE TABLE).
Select语句要用open来打开!
query1.SQL.Add('where 名称=equchoice');
是不是要改成:
query1.SQL.Add('where 名称=''equchoice''');

试试看吧!

 
如果可以的话,请将出问题的程序挑出来,和数据库结构一起传给我,我帮你看一看:
qija@163.net
 
谢谢上面的各位!!不过我决定放弃使用Access了,而使用MS SQL Server.
我想问题的原因可能是我的电脑的问题,或者我使用Access2000的问题,
因为我在access xp中不会出现这样的问题!
 
haha,明智的决策,我也经历过这种情况,我对你深表同情,Access+ADO本身就麻烦不断。
如果使用SQL Server有问题,一样可以讨论。我不忍心看着你走我的老路。[^]
 
薛獅:谢谢你了!!
留个电子邮件吧!我的 ahpei@yeah.net
 
不用客气:qija@163.net
 
后退
顶部