特定のシナリオでデータを手動で入力するために使用するフォームを作成しようとしています。ほとんどのデータは、正常に動作しているCSVファイルから入力されます。私は4テーブル、Part
、Assembly
、MachineOrder
、Job
を持っています。私は基本テーブルに入力するためのコード、Part
をフォームから問題なく作成できました。この問題は、部品がPID
自動番号フィールドによって参照され、アセンブリが自動番号フィールドAID
によって参照されているAssembly
およびMachineOrder
テーブルにデータを入力しています。私はこれを実行するためのさまざまな種類のメソッドを試してきましたが、私のコメントアウトされたコードには少ししか見ることができません。私は、これまでのところ正しいコードに最も近いと信じているものが、Dlookup
ファンクションの値を見つけているにもかかわらず、Accessがパラメータ値rPID
を求めているというエラーが出ています。私は、同じことがrAID
セクションにも当てはまると仮定しています。フォームからの外部キーを持つINSERT INTOテーブル
それ以外の場合は、INSERT
を使用していて、UPDATE
メソッドを使用すると、キー違反のエラーが表示されることがあります。
フォームが私の問題があるかもしれないもの上の任意のアドバイスは大歓迎され、私は学生ですHOTEntry
と呼ばれ、これは私がそうどんなプロのアプリケーションで学んだものを使用しようとしている私の最初の時間ですすべての建設的な批判が欲しい!謝罪これはかなり具体的な質問ですが、私は無駄に二日間のためにそれに取り組んできたので、私は本当にこの上のヘルプを使用することができれば...
マイコード:
Sub HOTParts2()
Dim rPID As Integer
Dim rAID As Integer
Dim dbs As DAO.Database
Dim sqlstr1 As String
Dim sqlstr2 As String
Dim sqlstr3 As String
Dim sqlstr4 As String
Set dbs = CurrentDb
'sqlstr1 = "INSERT INTO Assembly (PID, ModelNum, ModelRev, ModelDescription) " _
' & "SELECT (PID,Forms!HOTEntry!txtHotModel, Forms!HOTEntry!txtHotRev, Forms!HOTEntry!txtHotDes)" _
' & "FROM Part " _
' & "WHERE Part.PartName = Forms!HOTEntry!txtPartName AND Part.Config = Forms!HOTEntry!txtConfigEntry AND Part.Rev = Forms!HOTEntry!txtRevEntry"
sqlstr1 = "INSERT INTO Assembly (ModelNum, ModelRev, ModelDescription,PID) " _
& "VALUES (Forms!HOTEntry!txtHotModel, Forms!HOTEntry!txtHotRev, Forms!HOTEntry!txtHotDes," & "rPID" & ");"
'
'sqlstr2 = "UPDATE Assembly " _
' & "SET PID =" & rPID & " " _
' & "WHERE Assembly.ModelNum = Forms!HOTEntry!txtHotModel And Assembly.ModelDescription = Forms!HOTEntry!txtHotDes And Assembly.ModelRev = Forms!HOTEntry!txtHotRev;"
'
'sqlstr3 = "INSERT INTO MachineOrder (AID, Serial, CustName) " _
' & "SELECT (AID,Forms!HOTEntry!txtHotSerial, Forms!HOTEntry!txtHotCust)" _
' & "FROM Assembly" _
' & "WHERE Assembly.Model=Forms!HOTEntry!txtHotModel And ModelDescription= Forms!HOTEntry!txtHotDes And ModelRev = Forms!HOTEntry!txtHotRev; "
sqlstr3 = "INSERT INTO MachineOrder (Serial, CustName, AID) " _
& "VALUES (Forms!HOTEntry!txtHotSerial, Forms!HOTEntry!txtHotCust," & "rAID" & ");"
'
'sqlstr4 = "UPDATE MachineOrder " _
' & "SET AID =" & rAID & " " _
' & "WHERE AID IS NULL;"
rPID = DLookup("PID", "Part", "PartName = " & "'" & Forms!HOTEntry!txtPartName & "'" & " And " & "Config = " & "'" & Forms!HOTEntry!txtConfigEntry & "'" & " And " & "Rev = " & "'" & Forms!HOTEntry!txtRevEntry & "'")
DoCmd.RunSQL sqlstr1
'DoCmd.RunSQL sqlstr2
rAID = DLookup("AID", "Assembly", "ModelNum = " & "'" & Forms!HOTEntry!txtHotModel & "'" & " And " & "ModelDescription = " & "'" & Forms!HOTEntry!txtHotDes & "'" & " And " & "ModelRev = " & "'" & Forms!HOTEntry!txtHotRev & "'")
DoCmd.RunSQL sqlstr3
'DoCmd.RunSQL sqlstr4
End Sub
うわー、私はすでにそれを試してみましたと思ったが、私は変数の後sqlstr文を持つと思うがそれを置きます本当に設定されたトリックでした。ありがとうございました! – ZachE