投稿日 | : 2004/12/20(Mon) 11:31 |
投稿者 | : でぶや |
Eメール | : |
URL | : |
タイトル | : Update時にODBC接続エラー |
いつも勉強させていただいております。
環境:WinXp
VB6.0 Sp5
DB:AS400(IBM製 オフコン)
今、ExcelのデータをODBCで接続して、AS400に更新するプログラムを作成しています。
テストを行っているのですが、どうしてもエラーを解決することができません。
ご教授下さい。
'更新の関数(一部抜粋しています)
Public Function plngExpMastSet() As Long
Dim rstWork As Recordset
Dim strSql As String
Dim j As Long
On Error Resume Next
plngExpMastSet = False
strSql = "Select * From " & gstrLibrary1 & ".SKWTRN"
strSql = strSql & " WHERE KWSQNO = " & NmMst.Newest
strSql = strSql & " AND KWYYMM = " & glngDate
Set rstWork = gDbsWork.OpenRecordset(strSql, dbOpenDynaset, dbExecDirect, dbOptimistic)
If err.Number <> 0 Then GoTo Err_ExpMastSet
On Error GoTo Err_ExpMastSet
With rstWork
For j = 0 To 2
NmMst.Newest = NmMst.Newest + 1 ' SEQNO更新
.AddNew
![KWSQNO] = CInt(NmMst.Newest) ' SEQNo
![KWYYMM] = CLng(glngDate) ' 処理月度
![KWKGKB] = EXPENSKUBUN ' 小口経費区分
![KWTHDT] = pExpens.TransactDate ' 取引年月日
![KWITCD] = CLng(pExpens.ChargeCD) ' 入力担当者コード
![KWKMCD] = CLng(pExpens.SubjectCD) ' 科目コード
'---------------途中省略
![ZZFUNC] = ABILITY '作成機能/PGM
![ZZDATC] = Format(Now, "YYYYMMDD") '作成日
![ZZTIMC] = Format(Time, "HHMMSS") '作成時刻
![ZZUSRU] = gstrUserName '更新ユーザー
![FF] = ABILITY '更新機能/PGM
![ZZDATU] = Format(Now, "YYYYMMDD") '更新日
![ZZTIMU] = Format(Time, "HHMMSS") '更新時刻
![UPDATE_IDENT] = FIELDID 'フィールド更新/処理識別
’=======ここでエラーが発生====
.Update
'==============================
'以下省略
デバックをすると、UpDateのところでエラーがでます。
エラーメッセージが
err.description・・・ODBC接続エラーです。
dbEngine.Errors(0)・・・22005: [IBM][Client Access Express ODBC ドライバー (32 ビット)] カラム 16: CWB0111 - システム呼び出しで渡されたバッファーが小さ過ぎて戻りデータを入れられません。
というように、エラーがでます。
エラーのメッセージを考えると、セットしている値が大きいのかなと思い、入力データのチェック
関数を作りました。そのチェックは通っているので、桁数・属性は問題ないかと思います。
ODBCへの接続は別関数で、SELECTでデータを取得できています。
Updateができない状態です。
申し訳有りませんが、ご教授ください。m(_ _)m