|
我使用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); } } |
|
|
|
还是表名和连接的问题!
|
|
|
首先,你连接都没有打开,你怎么可以打开某个表呢?
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; |
|
|
晕 你先找个简单的例子看看先吧
照着例子写........ |
|
|
虔诚接受大家赐教,可是除了我说的几种情况,其他情况下程序执行都是一切正常!这是为什么?
|
|
|
.
. . |
|
|
各位红星楼主,能不能留个地址,俺要拜师学艺,帮我看看原码,磕头鞠躬了
|
|
|
发过来,我帮你看看,不过我这量天这里老是停电,真惨!就怕你很急
|
|