2013-10-24 35 views
0

我有[訂單]表單,您可以在其中註冊要保存在[訂單]表中的訂單。在這種形式中有2個領域;你從一個組合框中選擇了一個提供者的名字,當你這樣做時,那個提供者的公司代碼會自動填充一個名爲[providers]的表的dlookup。插入如果沒有訪問存在

雖然有時候,訂單是針對一個NEW提供者,而他的信息不在我的表格中。在這種情況下,用戶必須手動輸入名稱和代碼。我如何使用這些信息將[INSERT]作爲[providers]表中的新記錄插入,以便下次該提供者出現時,他的信息在組合框中給出?

我被告知有關INSERT .... IF NOT EXISTS ..但我似乎無法寫在VBA查詢。含義;我想將我的(我!提供者)和(我!代碼)插入[提供者]表中。我嘗試了以下SQL語句:

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

但這沒有奏效。任何人都可以請幫助我正確的SQL?

回答

0

我會這樣做:檢查代碼是否存在於Orders表中,如果不存在,然後運行您的Insert Into SQL。你可能需要玩一下,這取決於你的代碼字段是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 
+0

謝謝你的工作,但我用dcount代替。它對我來說似乎更加舒適 –

0

這個SQL將增加在供應商表中的條目,如果提供者的名稱沒有在供應者表

INSERT INTO Providers (Provider, Code) 
    SELECT TOP 1 
     'New Provider Name' AS Provider, 
     'New Provider Code' AS Code 
    FROM 
     Provider 
    WHERE 
     NOT EXISTS (SELECT TOP 1 Provider, Code 
        FROM Provider 
        WHERE Provider = 'New Provider Name' 
         AND Code = 'New Provider Code'); 

替代「的新供應商名稱」和「新商法典」

省略發現子查詢中的TOP 1子句如果提供者表只有一個記錄或表爲空。