Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4135 / 9994 ←次へ | 前へ→

【9106】Openrecordsetで「データ型の変換エラー」
質問  のりきち  - 07/2/10(土) 12:59 -

引用なし
パスワード
   まだ初心者で悪戦苦闘してます。
下記2つのテーブルを比較して
テーブル出荷実績の数量分をテーブル出荷計画の項目
「残数」を更新しようと色々なページを参考に
コードを組んだのですが「データ型の変換エラー」を
回避できずに悪戦苦闘してます。
どなたか解決策をご教授頂けませんでしょうか?
テーブル<出荷計画>
品番  残数    日付
 A   20   20070110
 A   10   20070115
 B   15   20070111
 B   14   20070112

テーブル<出荷実績_集計>
品番  残数 
 A   22 
 B   16 

<現象>
下記コードで「データ型の変換エラー・・」となる
Set rstTarget = qdfTarget.OpenRecordset("出荷計画")

<コード>

Private Sub 計画_実績_Click()
'On Error GoTo Err_計画_実績_Click
   Dim dbs As DAO.Database
   Dim qdfTarget As DAO.QueryDef
   Dim rstTarget As DAO.Recordset
   Dim rstSource As DAO.Recordset
   Dim fldTarget As DAO.Field
  
   Dim strSQLSource As String
   Dim strSQLTarget As String
   Dim CNT As Long
  
   Let strSQLSource = "SELECT 品番, 実績 FROM 出荷実績_集計
   ORDER BY 品番 "
   Let strSQLTarget = "PARAMETERS P_品番 TEXT; " & "SELECT 品番,
   残数 FROM 出荷計画 WHERE 品番 = P_品番 ORDER BY 日付"
    
   Set dbs = Application.CurrentDb
   Set qdfTarget = dbs.CreateQueryDef(Name:="", SQLText:=strSQLTarget)
   Set rstSource = dbs.OpenRecordset(Name:=strSQLSource)
  
   Do Until rstSource.EOF
     Let qdfTarget.Parameters("P_品番").Value =
     rstSource.Fields("品番").Value
     Let CNT = rstSource.Fields("実績").Value
    
  ⇒⇒ここ! Set rstTarget = qdfTarget.OpenRecordset("出荷計画")
     Rem Set fldTarget = rstTarget.Fields("残数")
  
     Do Until rstTarget.EOF
       rstTarget.Edit
       Select Case rstTarget.Fields("残数").Value

         Case Is > CNT '残数 > 実績
           Let rstTarget.Fields("残数").Value =
           rstTarget.Fields("残数 ").Value - CNT
           rstTarget.Update
           Exit Do

         Case Is = CNT '残数 = 実績
           Let rstTarget.Fields("残数").Value = 0
           rstTarget.Update
           Exit Do

         Case Is < CNT '残数 < 実績
           Let CNT = CNT - rstTarget.Fields("残数").Value
           Let rstTarget.Fields("残数").Value = 0
           rstTarget.Update
       End Select
       rstTarget.MoveNext
    Loop
     rstSource.MoveNext
   Loop
   rstTarget.Close
   rstSource.Close
End Sub

'Exit_計画_実績_Click:
  'Exit Sub
461 hits

【9106】Openrecordsetで「データ型の変換エラー」 のりきち 07/2/10(土) 12:59 質問
【9107】Re:Openrecordsetで「データ型の変換エラー」 かみちゃん 07/2/12(月) 11:00 発言
【9108】Re:Openrecordsetで「データ型の変換エラー」 のりきち 07/2/12(月) 13:11 お礼

4135 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078207
(SS)C-BOARD v3.8 is Free