2016-04-29 42 views
0

我正在尋找搜索特定記錄的可能性。如果找不到,應該創建並顯示一個新的。SQL在創建新記錄時沒有找到

這是我走到這一步:

DECLARE @Anzahl int 

Select @Anzahl = COUNT(tbl_Kommentare.FID_Typ) AS Zahl FROM tbl_Kommentare WHERE ((tbl_Kommentare.FID_Typ)=99) AND ((tbl_Kommentare.FID_Sprache)=1) 

IF (@Anzahl = 0) 
BEGIN 
INSERT INTO tbl_Kommentare (FID_Typ, FID_Sprache) VALUES (99, 1) 
END 
ELSE 
BEGIN 
SELECT tbl_Kommentare.FID_Typ FROM tbl_Kommentare WHERE (((tbl_Kommentare.FID_Typ)=99) AND ((tbl_Kommentare.FID_Sprache)=1))) 
END 

我得到這樣的通知:

無效的SQL語句 '刪除' '插入' '選擇' 或 '更新' 預期

什麼是問題?

+0

嘗試刪除'BEGIN','END'然後去。 – MusicLovingIndianGirl

+1

如果您將這種類型的SQL放入Access,那可能是您的問題。 Access不處理SQL Server可以執行的所有相同語句。 –

+0

你如何以及在哪裏執行此代碼?哪一行產生錯誤? – Andre

回答

0

您忘記在每個陳述的末尾放置一個;。在select @.......);的末尾,在INSERT INTO tbl......);的末尾以及在SELECT tbl_kom....);的末尾處這樣做。

另外,您在最後一條SELECT....聲明中有一個額外的括號。更改此:

(((tbl_Kommentare.FID_Typ)=99) AND ((tbl_Kommentare.FID_Sprache)=1))) 

這樣:

(((tbl_Kommentare.FID_Typ)=99) AND ((tbl_Kommentare.FID_Sprache)=1)); 

讓我知道如果這些更正解決了這一問題。

1

您不能在Access中運行T-SQL,並且可以完全不同。

在形式,設置兩個字段的默認值財產 99和1

然後,在你的形式,使用DCOUNT來查找值:

If IsNull(DLookup("FID_Typ", "tbl_Kommentare", "[FID_Typ]=99 AND [FID_Sprache]=1")) Then 
    DoCmd.GoToRecord acActiveDataObject, Me.Name, acNewRec 
End If 
相關問題