VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -