ADOQuery查询Access,用GetFieldData方法取不到文本类型字段的数据.

BeRoy 2007-07-09 10:02:15
代码:
-----------------------------------------------------
ADOConnection1->ConnectionString=FormMain->strConnect;
ADOConnection1->Connected=true;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
//票据名,状态
ADOQuery1->SQL->Add("select NAME,STATUS from TICKET");
ADOQuery1->Open();
BYTE nStatus ;
WCHAR strName[128] ;
memset(strName,0,sizeof(WCHAR)*128);
ListView1->Enabled=false;
AnsiString str1;
while(!ADOQuery1->Eof)
{
ADOQuery1->GetFieldData(1,strName); //这里调试发现strName里面
//数据长度根本不对,内容也不对
ADOQuery1->GetFieldData(2,&nStatus);
TListItem *list=ListView1->Items->Add();
list->Caption=WideString(strName);
list->SubItems->Add(nStatus==0?"有效":"停用");
ADOQuery1->Next();
}

ListView1->Enabled=true;
--------------------------------------------------
我的环境是cb6 update4, access 2003.winXp home.
查询的那张表,NAME和STATUS字段分别是 文本类型和BYTE类型.

这段代码不做更改,在CB2006下就是对,但我只能用CB6
...全文
137 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_love_pc 2007-07-10
  • 打赏
  • 举报
回复
Most applications do not need to call GetFieldData. TField objects call this method to implement their GetData method.

The Field or FieldNo parameter indicates the field whose data should be fetched. Field specifies the component itself, while FieldNo indicates its field number.


对于文本字段和BYTE字段,可以直接读取

AnsiString str1;//接收NAME
bool bStatus;//接收STATUS
while(!ADOQuery1->Eof)
{
str1=ADOQuery1->FieldByName("NAME")->AsString;
bStatus=ADOQuery1->FieldByName("STATUS")->AsBoolean;
...
}

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧