大家看看,指点一下!紧急!(access)

zchlsk 2004-08-11 05:08:20
我建了一个acess数据库,里面有两个表b1,b2。b1内的某个字段是b2的表名;
我使用TreeView控件,将b1内的某个字段是b2表名加到TreeView上;就出现问题如下:
(b1,b2的字段均为文本类型)
1、当b1的某个字段(既b2的表名)中出现“/”时,出现以下提示:
* 如字段内容中有/,则提示一下提示:

Project prg.exe(我的文件名) raised exception class EOleException with message
FORM子句法错误!

2、当b1的某个字段(既b2的表名)中出现“+、-”时,出现以下提示:

* 如字段内容为“无+5V(CH1)”,b2的表名既“无+5V(CH1)”,字段内容为“无-800v”、
“无±12V CH4(CH3)”,就会有以下提示

Project prg.exe(我的文件名) raised exception class EOleException with message 'Microsoft Jet 数据库引擎找不到输入表或者查询'无'。确定它是否存在,以及它的名称拼写是否正确。

* 如字段内容为“无±12VCH4(CH3)”,“无5V±(CH1)”则正常!!

目前还没有发现其他符号的会出现错误,如果有请大家告诉我

出错的程序如下:

void __fastcall TForm1::selectmdb(AnsiString smdb,AnsiString m1,AnsiString m2) //smdb代表打开某个数据库 m1打开库下面的表 m2表下面的字段
{
int i,j,count,t;
TTreeNode *CurrentNode;

try
{
ADOTab->Active=false;
ADOConnection1->Connected=false; //先断开连接数据库,否则无法操作
treeviewclear();
ADOConnection1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExtractFilePath(Application->ExeName)+"装备名\\"+smdb+".MDB"+";Persist Security Info=False";
ADOTab->TableName=m1;
ADOTab->Active=true; //****执行到这里就报错!!!!
//取第一级
for(i=0;i<=ADOTab->RecordCount-1;i++)
{
ADOTable.Length++;
ADOTable[i] = new TADOTable(Form1);
ADOTable[i]->Active=false;
ADOTable[i]->Connection=ADOConnection1;
if(ADOTab->FieldValues[m2].IsNull())
{
delete[] ADOTable[i];
delete[] CurrentNode;
break;
}
node1[i]=ADOTab->FieldValues[m2]; //把子系统名称赋值给AnsiString数组
CurrentNode=TreeView1->Items->Add(TreeView1->Selected,node1[i]);
CurrentNode->ImageIndex=3;
CurrentNode->SelectedIndex=3;
Label3->Caption=node1[i];
ADOTable[i]->TableName=node1[i];
ADOTable[i]->Active=true;
count=ADOTable[i]->RecordCount;
for(j=1;j<=count;j++)
{
if(ADOTable[i]->FieldValues["故障树名称"].IsNull())
{
delete[] CurrentNode;
delete[] ADOTable[i];
break;
}
node2[j]=ADOTable[i]->FieldValues["故障树名称"];
TTreeNode * hjj=TreeView1->Items->AddChild(CurrentNode,node2[j]);
hjj->ImageIndex=4;
hjj->SelectedIndex=4;
ADOTable[i]->Next();
}
ADOTab->Next();
}

}
catch(...)
{
ShowMessage("缺少库文件,无法运行!!");
//exit(0);
}
}
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
constantine 2004-08-12
  • 打赏
  • 举报
回复
发过来,我帮你看看,不过我这量天这里老是停电,真惨!就怕你很急
zchlsk 2004-08-12
  • 打赏
  • 举报
回复
各位红星楼主,能不能留个地址,俺要拜师学艺,帮我看看原码,磕头鞠躬了
constantine 2004-08-11
  • 打赏
  • 举报
回复
.
.
.
zchlsk 2004-08-11
  • 打赏
  • 举报
回复
虔诚接受大家赐教,可是除了我说的几种情况,其他情况下程序执行都是一切正常!这是为什么?
yjy1001 2004-08-11
  • 打赏
  • 举报
回复
晕 你先找个简单的例子看看先吧
照着例子写........
zihan 2004-08-11
  • 打赏
  • 举报
回复
首先,你连接都没有打开,你怎么可以打开某个表呢?
ADOConnection1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExtractFilePath(Application->ExeName)+"装备名\\"+smdb+".MDB"+";Persist Security Info=False";

//这里至少要加上连接的那句话,至于能不能够连接上去那是另外的事情.
ADOConnection1->Connection = true;
ADOTab->TableName=m1;
wuxq7311 2004-08-11
  • 打赏
  • 举报
回复
还是表名和连接的问题!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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