|
まだ初心者で悪戦苦闘してます。
下記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
|
|