ODBC経由でMSAccessに接続ができません – プログラミング – Home

ODBC経由でMSAccessに接続が...
 
通知
すべてクリア

[解決済] ODBC経由でMSAccessに接続ができません


KW
 KW
(@KW)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

ODBC経由で、Accessに接続をしようとしています。
環境は
VC6.0
WindowsNT4.0
Access2000
です。

http://homepage1.nifty.com/takuhiro/technique/programming/dbstep1/
↑のサイトを参照にして作成していました。
ウィザードの最中で、エラーがでてしまい、先に進めなくなったため、コードをダウンロードし
て、自分でコーディング始めました。

いろいろと調べているうちに、だいぶ分かってきて、エラーもなくなったのですが、起動する
と、DBに接続できませんでした。

エラーが発生しているとこは
BOOL DBTestFunc( void )
{
CDBStep1 dbStep1 ; // データベースア
クセス クラス
BOOL dbRet ;
// データベース処理戻り値用

BOOL bRet = TRUE ;

////// データベースオープン
//----- '1'
try
{
dbRet = dbStep1.Open( AFX_DB_USE_DEFAULT_TYPE,
dbStep1.GetDefaultSQL() ) ;//←ここです!!!!!!
}
catch( CDBException* e ) // 例外エラー発生
{

// エラーの処理
::MessageBox(NULL, e->m_strError, DB Test, MB_OK);
e->Delete();

return FALSE ;
}
の部分で、エラー処理を見ると、
{データ ソース名および指定された既定のドライバが見つかりません。}
でした。

データベースを設定している部分はこんな感じです。
#include StdAfx.h
#include dbStepApp1.h
#include DBStep1.h

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDBStep1
IMPLEMENT_DYNAMIC(CDBStep1, CRecordset)
CDBStep1::CDBStep1(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CDBStep1)
m_PICS = _T(");
m_RWEIGHT = 0.0f;
m_RNAME = _T(");
m_TIME = CTime::GetCurrentTime();
m_nFields = 4;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
}
CString CDBStep1::GetDefaultConnect()
{
return _T(ODBC;DSN=dbstep1);
}
CString CDBStep1::GetDefaultSQL()
{
return _T([Gpit1]);
}
void CDBStep1::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CDBStep1)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T([PICS_NAME]), m_PICS);
RFX_Date(pFX, _T([REF_TIME]), m_TIME);
RFX_Single(pFX, _T([REM_WEIGHT]), m_RWEIGHT);
RFX_Text(pFX, _T([REM_NAME]), m_RNAME);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CDBStep1 診断
#ifdef _DEBUG
void CDBStep1::AssertValid() const
{
CRecordset::AssertValid();
}
void CDBStep1::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG

足りない情報がありましたら、遠慮なく言って下さい(ここの初心者です。…VC++も初心者です
けど…)
過去ログ等も確認してみたのですが、見つからなかった(探し方が悪かったらゴメンなさい)、変
わりに、いい人達っぽいので質問してみました。

何かアドバイスをお願いいたします。


引用未解決
トピックタグ
KW
 KW
(@KW)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

追記を書きにまいりました。
情報として役立つか分かりませんが、念のため…。

DB名_ pitdata.mdb
テーブル名称_ Gpit1
フィールド名称1_ REF_TIME(日付/時刻型 フォーマットはyyyy/mm/dd hh:nn)
フィールド名称2_ PICS_NAME(テキスト型 18文字まで可)
フィールド名称3_ REM_NAME(テキスト型 18文字まで可)
フィールド名称4_ REM_WEIGHT(数値型 単精度浮動小数点型)

となっています。
よろしくお願いいたします。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

過去ログにこんなのありました

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200306/03060056.txt
の中に
>>Access2000 のMDBをAppWizardで処理しようと、しているけど
>>うまく認識してくれないみたいです

>「ツール」ー「データベースユーティリティ」ー「データベースの変換」
>ー「セキュリティ」ー「Microsoft Accessの旧バージョンのデータベースに変換」
>にすると認識してるようです。

はずしてますかね?


返信引用
KW
 KW
(@KW)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

ありがとうございました。
woodさんの言ってたリンク先で、ウィザードが…って言ってたので、ウィザードを使って、そ
のソースを参考に見ていたら、私のと異なる点があったので、そこを直したら接続できました。

m_TIME = CTime::GetCurrentTime();←ここが0

return _T(ODBC;DSN=dbstep1);←データソース名が違っていました…凡ミスです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました