2013-10-24 3 views
0

[주문] 테이블에 주문을 저장하는 [주문] 양식이 있습니다. 이 양식에는 2 개의 필드가 있습니다. 콤보 상자에서 제공 업체의 이름을 선택하면 해당 제공 업체의 회사 코드가 [공급자]라는 테이블의 dlookup으로 자동 완성됩니다.액세스가 존재하지 않는 경우 삽입

가끔 내 주문 정보가 내 테이블에없는 새 제공 업체를위한 것입니다. 이 경우 사용자는 이름과 코드를 수동으로 입력해야합니다. 이 정보를 [공급자] 테이블의 새 레코드로 삽입하려면 어떻게해야합니까?이 공급자가 다음 번에 콤보 상자에 정보가 표시되도록하려면 어떻게해야합니까?

내가 들었습니다 : 삽입 .... 만약 존재하지 않으면 ..하지만 VBA 쿼리에서 쓸 수없는 것 같습니다. 의미; 내 (Me! providers) 및 (Me! code)를 [providers] 테이블에 삽입하고 싶습니다. 나는 다음의 SQL 문을 시도했다 :

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

그러나 그 일은하지 않았다. 누구든지 적절한 SQL로 나를 도와 줄 수 있습니까?

답변

0

나는 다음과 같이 할 것입니다 : 코드가 Orders 테이블에 있는지 확인하십시오. 그렇지 않은 경우 Insert Ito SQL을 실행하십시오. 코드 필드가 TEXT 또는 INT인지 여부에 따라 약간의 작업이 필요할 수도 있지만 대부분의 경우이 작업을 수행해야합니다. 공급자 이름이 제공 테이블

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'); 

대체 '새 공급자 이름'과 '새 제공자 코드'

생략에 발견되지 않는 경우

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 제공자 테이블에 항목을 추가합니다 TOP 1 공급자 테이블에 레코드가 하나이거나 테이블이 비어 있으면 하위 쿼리에있는 절입니다.

관련 문제