1

[注文] テーブルに保存する注文を登録する [注文] フォームがあります。そのフォーム内には 2 つのフィールドがあります。コンボ ボックスからプロバイダーの名前を選択すると、そのプロバイダーの会社コードが [providers] というテーブルからの dlookup で自動入力されます。

ただし、注文が新しいプロバイダーの情報であり、その情報が私のテーブルにない場合があります。その場合、ユーザーは名前とコードを手動で入力する必要があります。この情報を使用して [providers] テーブルに新しいレコードとして挿入し、次にこのプロバイダーが表示されたときにコンボ ボックスに情報が表示されるようにするにはどうすればよいですか?

INSERT ....IF NOT EXISTS ..と言われましたが、VBAクエリでそれを書くことができないようです。意味; (Me!providers) と (Me!code) を [providers] テーブルに挿入したいと考えています。次のSQL文を試しました:

INSERT INTO providers (provider,code) VALUES ('"&Me!provider&"','"&Me!code&"') IF NOT EXISTS

しかし、それはうまくいきませんでした。誰かが適切なSQLで私を助けてくれますか?

4

2 に答える 2

1

コードが Orders テーブルに存在するかどうかを確認し、存在しない場合は、Insert Into SQL を実行しますCode フィールドが TEXT であるか INT であるかによって、これを少しいじる必要があるかもしれませんが、これで大部分は解決できるはずです。

Dim db as Database
Dim rec as Recordset
Dim sSQL as String

Set db = CurrentDB
Set rec = db.OpenRecordset("Select * from Orders WHERE Code = '" & Me.Code & "'")

'This refreshes the dataset so you can get an accurate record count
rec.MoveFirst
rec.MoveLast

'If your record count is 0, then the code isn't in the DB yet so you need to add it
If rec.RecordCount = 0 Then
  sSQL = "INSERT INTO providers (provider,code) VALUES ('"&Me!provider&"','"&Me!code&"')";
  DoCmd.RunSQL sSQL
EndIf

'Always set your connection variables to Nothing so the connection closes!
Set db = Nothing
Set rec = Nothing
于 2013-10-24T19:15:52.297 に答える