初学者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();
}
}