好怪,TQuery的FieldCount怎么得到的是1? ( 积分: 10 )

  • 主题发起人 主题发起人 zyx0404
  • 开始时间 开始时间
Z

zyx0404

Unregistered / Unconfirmed
GUEST, unregistred user!
var
connection : TQuery;
strSQL, strSQLFields, strSQLWhere, strSQLRule : String;
begin
connection := TQuery.Create(self);
connection.AutoCalcFields := true;
connection.DatabaseName := m_db.DatabaseName;

...

//set the sql
connection.Close;
connection.SQL.Clear;
connection.SQL.Text := strSQL;
connection.Open;

//save the data to entity
nColumnCounts := connection.FieldCount;

数据库表有3个字段,但是connection.FieldCount却是1,为什么?
 
我刚才在Data Module里创建了一个TTable,选择表,再看字段,可以看到3个字段

后来我又删除该TTable,等我关了delphi,再打开,再创建TTable,再打开字段,就一个字段都看不到了

delphi怪怪的,有谁知道是怎么回事?
 
哦,我还要把TTable的Active设成true,就能看到fields了
可是用nColumnCounts := connection.FieldCount只能得到1个,为什么啊?
 
奇怪的是即使我在data module里创建一个TQuery,
select * from tabUser;
看到的也只是一个字段,为什么呢?
 
我又发现TTable的FieldDefs里能看到3个字段
但是我双击TTable后出现一个window,在这个window里增加字段只能看到一个字段,和TQuery一样

大富翁有人知道原因吗?
在此谢过先
 
而且这个字段始终是数据库表的最后一个字段
 
终于找到原因了
我的数据库是SQL Server, 如果数据表的字段是nchar(),delphi无法识别该类型,就无法在TTable或者TQuery里显示出来.将nchar()改成char()就可以了
 
给自己加分吧
 
后退
顶部