大家看看,指点一下!紧急!(access)
我建了一个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);
}
}