1

しかし、データ型が連携できると確信しています.1つのテーブルのItemIDはオートナンバーであり、他のテーブルの数字です。

Private Sub Command17_Click()

Dim cmbItem As String

cmbItem = "SELECT ItemID FROM Items WHERE Items.Name = " & Me.Combo0.Value & ";"

Dim sc1 As DAO.Recordset
Set sc1 = CurrentDb.OpenRecordset("Buy", dbOpenDynaset)

sc1.AddNew
sc1.Fields("ItemID").Value = cmbItem
sc1.Fields("BuyPrice").Value = Me.Text13.Value
sc1.Fields("Notes").Value = Me.Text18.Value
sc1.Update

End Sub

前もってありがとう、ボブP

4

1 に答える 1

1

これがエラーを引き起こす行である場合...

sc1.Fields("ItemID").Value = cmbItem

...ステートメント ( )cmbItemを含む文字列であることに注意してください。そして、 「一方のテーブルの ItemID は AutoNumber であり、もう一方のテーブルの番号である」と言われました。したがって、文字列値を数値フィールドに割り当てようとしています。さらに、その文字列は有効な数値にキャストできません。失敗しなければなりません。SELECTSELECT ItemID FROM ...

ここで推測するだけですが、多分あなたはこのようなものが欲しいです...

Dim cmbItem As Long
cmbItem = DLookup("ItemID", "Items", "[Name]=" & Me.Combo0.Value)

がテキスト フィールドの場合[Name]は、比較する値を引用符で囲みます...

cmbItem = DLookup("ItemID", "Items", "[Name]='" & Me.Combo0.Value & "'")

それが近い場合は、変数の名前を に変更しlngItemて、コードが共同作業者を混乱させる可能性を低くすることができます。

が Null を返す可能性がある場合は、DLookup()それを式に与えることを検討してNz()ください。

于 2012-10-06T17:48:34.223 に答える