DBアクセスでODBCのSQLBindCol()を使用いたい

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
マティ
記事: 161
登録日時: 2005年8月23日(火) 00:15
お住まい: 沖縄県
連絡する:

DBアクセスでODBCのSQLBindCol()を使用いたい

#1 投稿記事 by マティ »

実践コードモジュールにhanchanさんが投稿された
データベースアクセスクラスサンプルを元にODBC接続を行っています。
Activebasic 4.04

各APIの意味をネットで検索をしていると
SQLBindCol()を使用すると性能が改善できるような書き込みがあったので実装を試みましたが、うまくいきません。
SQLFetch()アクセス違反がありましたとエラーになります。
SQLBindCol()の定義かパラメータを間違えていると思うのですが、
どのように修正したら良いかが分かりません。
助けて下さい。

コード: 全て選択


Declare Function SQLBindCol Lib "odbc32.dll" ( _
	ByVal hstmt As HANDLE, _
	ByVal icol As Integer, _
	ByVal fCType As Integer, _
	ByVal rgbValue As String, _
	ByVal cbValueMax As Long, _
	ByRef pcbValue As Long _
	) As Integer

DIM JUMICD As DWord
Dim xTest  As Long
SQLExecDirect( hstmt, psSqlStr, SQL_NTS )
SQLBindCol   ( hstmt, 1, SQL_INTEGER, JUMINCD, 0, xTest )
SQLFetch     ( hstmt )
ちなみに

コード: 全て選択


DIM JUMICD As DWord
SQLExecDirect( hstmt, psSqlStr, SQL_NTS  )
SQLFetch     ( hstmt )
SQLGetData   ( hstmt, 1, SQL_INTEGER, VarPtr(JUMINCD), 0, RetByteSize )
ではちゃんとデータを取得出来ました。
マティ
記事: 161
登録日時: 2005年8月23日(火) 00:15
お住まい: 沖縄県
連絡する:

#2 投稿記事 by マティ »

自己解決出来ましたので、報告します。
原因はAPIの定義でした!

コード: 全て選択


Declare Function SQLBindCol Lib "odbc32.dll" ( _
	ByVal hstmt      As HANDLE, _
	ByVal icol       As Long, _
	ByVal fCType     As Long, _
	ByRef rgbValue   As Any, _
	ByVal cbValueMax As Long, _
	ByRef pcbValue   As Long _
	) As Long
返信する