一个很菜的问题,急啊..各位大哥快来...小弟扣谢!!
query 的databaseName怎么指定数据表的路径?
是个登陆密码的问题...编译可以通过,不过click时出现以下语句:
Project1 Project1.exe raised exception class EDBEngineError with message 'Invalid directory
directory: ADpass'.Process stopped. ues step or run to continue.
代码如下:
DataModule6->Query1->SQL->Clear();
DataModule6->Query1->Close();
AnsiString queryString = "Select * from ADpass";
queryString += "where 用户名 = ";
queryString += "\"";
queryString += ComboBox1->Text;
queryString += "\"";
try
{
DataModule6->Query1->SQL->Add(queryString);
DataModule6->Query1->ExecSQL();
DataModule6->Query1->Active = true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult = mrAbort;
return;
}
if( DataModule6->Query1->RecordCount == 0)
{
if(m_nTimes == 3)
{
MessageBox(NULL,"您不是合法用户!","登陆数据库错误",MB_OK);
ComboBox1->Text = "";
ComboBox1->SetFocus();
Edit1->Text = "";
ModalResult = mrNone;
}
}
else
{
queryString += " and 密码 = ";
queryString += "\"";
queryString += Edit1->Text;
queryString += "\"";
try
{
DataModule6->Query1->SQL->Clear();
DataModule6->Query1->SQL->Add(queryString);
DataModule6->Query1->ExecSQL();
DataModule6->Query1->Active = true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult = mrAbort;
return;
}
if( DataModule6->Query1->RecordCount == 0)
{
if(m_nTimes == 3)
{
MessageBox(NULL,"您不是合法用户!","登陆数据库错误",MB_OK);
ModalResult = mrAbort;
Close();
}
else
{
MessageBox(NULL,"口令不正确,请重新输入","登陆数据库错误",MB_OK);
Edit1->Text = "";
ModalResult = mrNone;
}
DataModule6->Query1->Close();
}
else
{
DataModule6->Query1->Close();
ModalResult = mrOk;
}
}
问题点数:40、回复次数:14Top
1 楼smartpoko(poko仔)回复于 2005-01-19 21:16:27 得分 0
在线等啊Top
2 楼jishiping(JSP 季世平)回复于 2005-01-19 21:58:53 得分 0
你用的是什么数据库?在DataModule6上放一个TDatabase控件,指定TDatabase的属性AliasName,以及属性DatabaseName,TQuery的DatabaseName和TDatabase的DatabseName相同就可以了。如果是Pardox之类的数据库,可以在别名中设定数据库文件所在的目录,如果是SQL Server,可以在别名中设定数据库所在的机器名。Top
3 楼smalltownboy(天秤猴)回复于 2005-01-19 22:07:35 得分 0
看错误提示应该是Access数据库没找到Top
4 楼veryhappyboy(分不够,先灌灌)回复于 2005-01-19 22:07:44 得分 0
同意,楼主应该将数据库是什么数据库说一下。Top
5 楼futulove(福途£爱)回复于 2005-01-19 22:19:20 得分 5
楼主的SQL语句有问题吧
代码如下:
DataModule6->Query1->SQL->Clear();
DataModule6->Query1->Close();
AnsiString queryString = "Select * from ADpass";
queryString += "where 用户名 = ";//这里和上面应该有个空格的
queryString += "\"";
queryString += ComboBox1->Text;
queryString += "\"";
try
{
DataModule6->Query1->SQL->Add(queryString);
DataModule6->Query1->ExecSQL();//你用的是SELECT不应该用这个吧应该用OPEN或者Active=true
DataModule6->Query1->Active = true;
}Top
6 楼smartpoko(poko仔)回复于 2005-01-19 22:59:07 得分 0
数据库用的是BCB自带的,若是用Aceess 代码或者连接设置要怎么弄啊,还是得谢谢楼上几位!Top
7 楼jishiping(JSP 季世平)回复于 2005-01-19 23:07:05 得分 0
如果用的是Pardox数据库,那么可以直接用TQuery的属性DatabaseName来指定数据库文件所在的目录。比如:
DataModule6->Query1->SQL->Clear();
DataModule6->Query1->Close();
DataModule6->Query1->DatabaseName = "C:\\Borland\\Borland Shared\\Data";
//......Top
8 楼FlyDayDream(悠幽白书:哎呀,你掂着我的脚了呀!)回复于 2005-01-19 23:19:17 得分 0
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\TaxAudit\DsrDB.mdb;Persist Security Info=False
format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False',['D:\TaxAudit\DsrDB.mdb']);
Top
9 楼smartpoko(poko仔)回复于 2005-01-20 00:36:32 得分 0
还是没能成功,弹出了以下信息:
Project1 Project1.exe raised exception class EDBEngineError with message 'Insufficient memory for this opration.
Alias'.Process stopped. ues step or run to continue
到这条:
DataModule6->Query1->Active = true 的时候出错Top
10 楼jishiping(JSP 季世平)回复于 2005-01-20 08:52:12 得分 35
Insufficient memory for this opration.
------------------------------------------
这不是代码的问题,而是BDE的毛病。遇到这种错误,关闭所有用到BDE的程序,然后再运行就可以了。Top
11 楼smartpoko(poko仔)回复于 2005-01-20 11:48:49 得分 0
请问在哪里关闭BDE程序?Top
12 楼smartpoko(poko仔)回复于 2005-01-20 17:18:44 得分 0
各位帮帮忙啊!Top
13 楼jishiping(JSP 季世平)回复于 2005-01-20 17:34:27 得分 0
在哪里关闭BDE程序?
-----------------------
晕倒。比如你的程序就用到BDE啊,将你的程序关闭(这个还要我教吗?)。又比如BCB自带的
SQL Explorer,Database Desktop,BDE Administrator 等程序度用到BDE,这些程序都用到了
BDE,所以这些程序都要关闭。如果不清楚哪些程序用到了BDE,“注销”Windows,重新登陆就
可以了。Top
14 楼smartpoko(poko仔)回复于 2005-01-20 22:21:26 得分 0
谢谢了,小弟刚学用CB,不好意思,问题解决,结帖!Top




