2016-05-24 14 views
0

あるテーブルから別のテーブルへレコードを挿入するInsert文があります。 SQLは機能しますが、WHERE句のフィールドがNULLの場合は無効です。エラーはなく、何も挿入されません。これをどうすれば解決できますか? 。これは私が(フィールドは両方のテーブルに同じ名前が付けられているものである - ミー[Serial_No]バインドされたフィールドを表す - テキストボックス:SQLにアクセス - ヌルフィールドのレコードを挿入しますか?

dim SQL as String 

SQL = "INSERT INTO Table1 (Serial_No,Name,Description)" & _ 
     "SELECT Table2.Serial_No, Table2.Name, Table2.Description" & _ 
     " FROM Table2" & _ 
     " WHERE Table2.Serial_No='" & Me.[Serial_No] & "'" 

DoCmd.RunSQL SQL 
+0

シリアル番号は文字列か数字ですか。 – trincot

+1

'serial_no'フィールドがnull、*またはempty *の場合、' table1'に挿入するレコードを選択していません – LiamH

+0

@trincot、Serial_Noはテキストフィールドです。 – LuckyLuke82

答えて

1

私は、これはあなたが必要な答えであれば、そうでないことを確認していません非常に論理的に表示されます。

namedescriptionは、null値は決してありませんならば、彼らはあなたのテーブルでユニークな複合キーであることを確認してください。あなたは、テーブルのデザインビューで、インデックスボタンにこれらのユニークなキーを作成することができます。そして、あなたが見ることができます他のフィールド値を使ってserial_noを立ち上げてください。少し長めに見えますが、giあなたが必要とするレコードをお聞かせください。

dim SQL as String 
dim varSerialNo as string 

varSerialNo = dlookup("Serial_No", "table2", "Name='" & me.Name & "' AND Description='" & me.description & "'") 

SQL = "INSERT INTO Table1 (Serial_No,Name,Description)" & _ 
     "SELECT Table2.Serial_No, Table2.Name, Table2.Description" & _ 
     " FROM Table2" & _ 
     " WHERE Table2.Serial_No='" & varSerialNo & "'" 

DoCmd.RunSQL SQL 
+0

偉大な、IT作品!...私も簡単な方法を考え出した。私はちょうどTable2にAutonumberフィールド(ID_Field)を追加して、WHERE句を "WHERE Table2.ID_Field ="&Me。[ID_Field]に変更することができます。このようにしても問題はありません。フォーム上にID_Fieldがあります。レコードセレクタでレコードを選択すると、Accessはレコードを正しく選択します。なぜなら、それは決してNullではないからです。手伝ってくれてありがとう !! – LuckyLuke82

+0

はい、それはおそらくもっと簡単でしょう、私はあなたが質問で言及したものから離れていたフィールドがわからなかった – LiamH

関連する問題