ここから本文です

AcccessODBCでVC++6でデータを更新するプログラムを使うと落ちます。 以前に同...

shu********さん

2018/2/1420:00:03

AcccessODBCでVC++6でデータを更新するプログラムを使うと落ちます。

以前に同じ方法でやっていたときはAcccessが mdbだったのですが、
今やっているのは、accdbです。

その関係でOdbcドライバーも変わったので、そのせい
ではないかと考えております。

ソース抜粋
DBOpen
//DB Open-----------------------------------------------------
_db.Open(_T("健康管理室Driver1"),FALSE,FALSE,"ODBC;",TRUE);
if(_db.IsOpen()){
_dbptr = (void*)&_db;
}else{
_dbptr = NULL;
}
//DB Open-----------------------------------------------------
Recordset
CDatabase* db_ptr = (CDatabase*)_dbptr;
Kanri_kbn_2017 rec_ptr(db_ptr);
sprintf(frec,"社員番号, 所属CD"); //社員番号 と 所属コードでソート
rec_ptr.m_strSort = (LPCSTR)frec;
rec_ptr.Open(CRecordset::snapshot, NULL,CRecordset::none);
if(rec_ptr.IsOpen()){
while(!rec_ptr.IsEOF()){
rec_ptr.Edit();
:
rec_ptr.set_syozoku(cur->_syzoku_code); //コード変更
rec_ptr.m_column5 = (LPCSTR)cur->_syozoku_name; //名称変更
rec_ptr.Update();
rec_ptr.MoveNext();
}
rec_ptr.Close();
:
この中でデバッグをしてみる限りEdit()で異常終了していると考えております。
以前、MDBのころはこれで問題なかったので、おそらくCDatabase か CRecordset
のどちらか、あるいは両方の更新時のOpenルールが変わったと考えておりますが、
それが分かる方がおりましたら、教えていただけませんか?

閲覧数:
30
回答数:
1

違反報告

ベストアンサーに選ばれた回答

kak********さん

2018/2/1509:32:21

OleDb用のドライバには32bit用と64bit用があるので、ODBCドライバも32bit版と64bit版の違いではないでしょうか?

「■Windows7 64bit 版で odbc を使ってデータベースに接続するための注意点」
http://d.hatena.ne.jp/knaka20blue/20110316/1300247203

この質問は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる