2016-04-29 5 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

試してみてください。フォームで

は、値をルックアップするためにDcount関数を使用し、フォームで、その後99および

1に二つのフィールドののDefaultValueプロパティを設定します'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を実行することはできません。また、T-SQLをAccessで実行することもできません。

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