程序运行时到底路径怎么回事?谁给就下面问题给我解释一下!问题:
我在一个对话框的某个按钮关联函数中有这些代码:
{....
///打开“打开”对话框///
CFileDialog FileDlg(TRUE,"*.mdb",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"数据库文件(*.mdb)|*.mdb|All Files(*.*)|*.*||");
FileDlg.m_ofn.lpstrInitialDir="c:\\My Documents";
if(FileDlg.DoModal()==IDOK)///点击“打开”对话框的“打开”按钮
{
sTemp=FileDlg.GetPathName();///获取选取的路径和名字
....
}
}
上面运行一切正常,然后关闭此对话框再打开另一个对话框
其中要打开数据库,source是这样的
source="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SpringLeaf.mdb"
其中SpringLeaf.mdb是存放在和程序同一个地方
运行时显示数据库连接错误通过调试我发现是因为FileDlg.GetPathName();改变了路径所致,请问各位高手怎样才能让执行FileDlg.GetPathName();后不影响原先默认的路径?
我在一个对话框的某个按钮关联函数中有这些代码:
{....
///打开“打开”对话框///
CFileDialog FileDlg(TRUE,"*.mdb",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"数据库文件(*.mdb)|*.mdb|All Files(*.*)|*.*||");
FileDlg.m_ofn.lpstrInitialDir="c:\\My Documents";
if(FileDlg.DoModal()==IDOK)///点击“打开”对话框的“打开”按钮
{
sTemp=FileDlg.GetPathName();///获取选取的路径和名字
....
}
}
上面运行一切正常,然后关闭此对话框再打开另一个对话框
其中要打开数据库,source是这样的
source="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SpringLeaf.mdb"
其中SpringLeaf.mdb是存放在和程序同一个地方
运行时显示数据库连接错误通过调试我发现是因为FileDlg.GetPathName();改变了路径所致,请问各位高手怎样才能让执行FileDlg.GetPathName();后不影响原先默认的路径?
SetCurrentDirectory()改变当前路径即可
这样用SetCurrentDirectory()对不对呀,为什么不管用呀
CString path;
path="d:\\CSpringMagSys\\me.exe";
SetCurrentDirectory((LPCTSTR)path);
CString path="d:\\CSpringMagSys";
SetCurrentDirectory(path);
将你的数据库文件拷贝到执行文件目录下,调用下面的函数来改变当前路径
void SetFilePath()
{
//获得EXE路径
CString strpath=AfxGetApp()->m_pszHelpFilePath;
CString strExename=AfxGetApp()->m_pszExeName;
strpath.Insert(strpath.GetLength()-strExename.GetLength()-4,'\0');
SetCurrentDirectory(strpath);
}
为什么你的第一种方法不行,但第二中就行呀!
不都是先在strpath变量中保存路径,然后再SetCurrentDirectory(strpath);