我是第一次用ADO连接Access数据库,却怎么也读不到数据:程序如下:代码好像没有什么错误,但是就是显示找不到字段名'nodeid';是不是和SQL SERVER数据库有不同的读取方式的地方啊?望高人指点一二,用shoemessage(fieldbyname('nodeid').asstring),也是试了就是提示找不到字段同。
procedure Tformain.FormShow(Sender: TObject);
var
p:pstr;
node:ttreenode;
begin
with datamodule1.adotgroup,treeview1 do
begin
close;
sql.Clear;
sql.Add('select * from [tgroup]') ;
open;
first;
new(p);
p^:=fieldbyname('nodeid').AsString;//找不到此字段
node:=items.AddChildObject(nil,fieldbyname('name').AsString,p);
if hassub(node) then
  items.AddChildObject(node,'',nil); 
end;
end;
我另开了一个空白窗体也试过,还是不行,也读不到数据,是不是有什么要注意的地方,我不知道,能否有高人指点一下。

解决方案 »

  1.   

    那你有没有检查你的数据库呢
    到底有没有nodeid这个字段??
      

  2.   

    有,我详细的查过,自已作的,没有问题有'nodeid'这个字段,
      

  3.   

    open;后面加下面的句子,看看数据集提取了一些啥字段
      for i:= 0 to Fields.Count - 1 do
      begin
        ShowMessage(Fields[i].FieldName);
      end;
      

  4.   

    奇怪的问题。你把
    sql.Add('select * from [tgroup]')
    换成
    sql.Add('select * from tgroup') 
    试试看?
      

  5.   

    你把
    sql.Add('select * from [tgroup]')
    换成
    sql.Add('select * from tgroup') 
    试试看?
    不能这样的换,下面的SQL语句对于access数据库来讲是错误的,在这里,tgroup是SQL的保留字,须加上[]号三楼的也不行,根本提不到字段出,如果能出来就好了。
      

  6.   

    不过用三楼的方法查到,依次为ID,字段1、字段2、字段3、字段4、这也说明数据库的连接是没有问题的啊,怎真接用showmessage,就取不具体的数据呢,而可以显示字段,但又不是字段的名,是不是数据库的设置有问题,我从来没有用过access只是打开表,新建然后依次输入相应的字段名就是了,再保存时选字用‘主建’一个表就这样建成的,不知是否有问题,但也没有看到有其它的数据的设置,请大家指点一二
      

  7.   

    我犯的是很低级的错误,就是根本没有建立数据表,所以找不到,你用showmessage显示一个看一看,能显示什么,每别字段,记录一项项的查,就清楚了,我也是这样才查出来的,放在open的后面就可以了。