vc中如何动态创建一个临时的access文件 如题。如果用户没有装office软件,还能创建access文件吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只要装了Jet引擎就可以创建Access文件,跟Office没必然关系。在我看来,Office Access是数据库Jet的GUI界面,呵呵。代码如下:BOOL CDBFile::CreateDBFile(CString filePath, CString fileName){ BOOL bRet = TRUE; HRESULT hr = S_OK; m_strConn = ACCESS_CONNECTION_STRING + filePath + fileName; try { ADOX::_CatalogPtr pCatalog = NULL; hr = pCatalog.CreateInstance(__uuidof(ADOX::Catalog)); if(FAILED(hr)) { _com_issue_error(hr); bRet = FALSE; } else { pCatalog->Create(_bstr_t(m_strConn)); } } catch(_com_error &e) { AfxMessageBox(e.ErrorMessage()); bRet = FALSE; } // 创建数据表 if (bRet) bRet = CreateTable(); // 修改数据库文件访问密码 if (bRet) bRet = AlterDBFilePassword(CDBCom::Password); return bRet;} #define ACCESS_CONNECTION_STRING _T("Provider=Microsoft.JET.OLEDB.4.0;Data source=") // Support for ADO ( COM Library Initialization)#ifndef _CADOACCESSDB_IMPORT_LIBRATY_#define _CADOACCESSDB_IMPORT_LIBRATY_ #import "c:\Program Files\Common Files\system\ado\msadox.dll" #import "c:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") #pragma warning (default: 4146)#endif // _CADOACCESSDB_IMPORT_LIBRATY_ #import "c:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADOX") #import "c:\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADO") rename("EOF", "EndOfFile") #pragma warning (disable: 4146) #include "icrsint.h" #include "Shlwapi.h" #pragma comment(lib,"Shlwapi.lib") ............................ CoInitialize(NULL); using namespace ADOX; _CatalogPtr m_pCatalog = NULL; CString strConnection, strTable; TCHAR chFilePath[MAX_PATH]; GetModuleFileName(NULL,chFilePath,MAX_PATH); (_tcsrchr(chFilePath, '\\'))[1] = 0; lstrcat(chFilePath , _T("Test.mdb")); strTable = chFilePath; strConnection = _T("Provider=Microsoft.JET.OLEDB.4.0;Data source = ") + strTable + _T(";Jet OLEDB:Engine Type=5;"); if(!PathFileExists(chFilePath)) { try { m_pCatalog.CreateInstance(__uuidof(Catalog)); m_pCatalog->Create(_bstr_t(strConnection )); } catch(...) { m_pCatalog->Release(); m_pCatalog = NULL; CoUninitialize(); } m_pCatalog->Release(); } CoUninitialize(); 导入ADO引擎等,就可以创建accesss文件,不过楼主这种情况可以考虑像sqlite这类文件型数据库 vc中excel数据写入问题 如何获得sql server 2000数据库中表的结构....请大家帮帮忙..谢谢! ADO数据库共享问题(急!!!) 如何保证WSASend及时完成? 关于托盘区程序图标响应鼠标点击的问题。。。 这种效果怎么做的 怎样编程实现目录选择对话框?注意不是文件对话框?谢谢先。 各位,我在读一个实时监控的程序,但是不知道如何下手? 如何关机?? 在开发作图类程序时,有大量的交互操作,如何规化程序结构??????? 如何进行一个队列搜索调度的高效算法 关于多文件接收与缓冲区
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADO") rename("EOF", "EndOfFile")
#pragma warning (disable: 4146)
#include "icrsint.h"
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
............................
CoInitialize(NULL);
using namespace ADOX;
_CatalogPtr m_pCatalog = NULL;
CString strConnection, strTable;
TCHAR chFilePath[MAX_PATH];
GetModuleFileName(NULL,chFilePath,MAX_PATH);
(_tcsrchr(chFilePath, '\\'))[1] = 0;
lstrcat(chFilePath , _T("Test.mdb"));
strTable = chFilePath;
strConnection = _T("Provider=Microsoft.JET.OLEDB.4.0;Data source = ") + strTable + _T(";Jet OLEDB:Engine Type=5;");
if(!PathFileExists(chFilePath))
{
try
{
m_pCatalog.CreateInstance(__uuidof(Catalog));
m_pCatalog->Create(_bstr_t(strConnection ));
}
catch(...)
{
m_pCatalog->Release();
m_pCatalog = NULL;
CoUninitialize();
}
m_pCatalog->Release();
}
CoUninitialize();