首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

菜鸟ado弱问

2012-02-15 
初学者ado弱问从老妖那下了关于access数据库应用的代码,自己想试下来着,结果说找不到文件[LinkerFatalErro

初学者ado弱问
从老妖那下了关于access数据库应用的代码,自己想试下来着,结果说找不到文件
[Linker   Fatal   Error]   Fatal:   Expected   a   file   name:  
程序同目录下有个bcb.mdb的access文件里面就一个表,表的名称是“bcb元件”
表里的内容是元件选项板、元件名称、和元件简介。
数据库连接是正常的,用DBGrid能显示内容。
就放了   4个元件ComboBox   DBGrid   DataSource     AdoTable
下面是代码   请指教

void   __fastcall   TFormBcb::FormCreate(TObject   *Sender)
{
        String   path;
        path.SetLength(MAX_PATH);
        path.SetLength(GetTempPath(MAX_PATH,path.c_str()));
        DbFile   =   path   +   "bcb ";

        //   解出数据库
        TResourceStream   *rs   =   new   TResourceStream((int)nstance, "bcb ", "FILE ");
        rs-> SaveToFile(DbFile);
        delete   rs;
        //
        AnsiString   StrCnn   =   "Provider=Microsoft.Jet.OLEDB.4.0 ";
        StrCnn   +=   ";Data   Source= "   +   DbFile;
        StrCnn   +=   ";Persist   Security   Info=False ";
        Table1-> ConnectionString   =   StrCnn;
        Table1-> TableName   =   "bcb元件 ";
        Table1-> Active   =   true;

        TableList   =   new   TStringList;
        AnsiString   strTmp;
        while(!Table1-> Eof)
        {
          ComboBox1-> Items-> Add(Table1-> FieldByName( "元件选项板 ")-> AsString);
          TableList-> Add(Table1-> FieldByName( "TableName ")-> AsString);
          Table1-> Next();
        }
}

[解决办法]
rc文件里指定的数据库文件名写对了吗?
[解决办法]
String path;
//path.SetLength(MAX_PATH);
//path.SetLength(GetTempPath(MAX_PATH,path.c_str()));
DbFile = path + "bcb ";
可能你把代码放得目录层数过多了,导致文件绝对路径过长,部分内容被切下去了。
[解决办法]
把代码改成这个试试
void __fastcall TFormBcb::FormCreate(TObject *Sender)
{
String path;
path.SetLength(MAX_PATH);
path.SetLength(GetTempPath(MAX_PATH,path.c_str()));
DbFile = path + "bcb.mdb ";

AnsiString StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0 ";
StrCnn += ";Data Source= " + DbFile;
StrCnn += ";Persist Security Info=False ";
Table1-> ConnectionString = StrCnn;
Table1-> TableName = "bcb元件 ";
Table1-> Active = true;

TableList = new TStringList;
AnsiString strTmp;
while(!Table1-> Eof)
{
ComboBox1-> Items-> Add(Table1-> FieldByName( "元件选项板 ")-> AsString);
TableList-> Add(Table1-> FieldByName( "TableName ")-> AsString);
Table1-> Next();
}
}

热点排行