0

ユーザー ID (NBK) でテーブルを更新する必要があります。NBK を含むテーブルにもユーザー ステータス (0 - 1) があり、一度に 1 人のユーザーのみが 1 を持つことになります。課題は、#1 アクティブなユーザーをキャプチャすることです #2 ユーザー NBK で他のテーブルを更新します。以下のコードに、見つけられない単純な構文エラーがあることを願っていますか?

Dim nb As String
Dim NBK As String

nb = [Employees]![NBK] & "' WHERE "
nb = nb & " " & [Employees]![Status] = '1'
NBK = " Update tbl_DateTracking SET NBK = "
NBK = NBK & "'" & nb & "' WHERE "
NBK = NBK & "CaseId = '" & CaseId & "' AND OCC_Scenario = '" & OCC_Scenario & "' ;"

DoCmd.RunSQL nb
DoCmd.RunSQL NBK
4

1 に答える 1

0

ここで注意すべき点がいくつかあります。

  1. 文字列の連結ではなく、パラメーター化されたクエリを使用する必要があります。これにより、SQL インジェクションや不正な入力に関するその他の問題を防止/封じ込めます。
  2. 理想的には、「アクティブ ユーザー」がユーザー テーブルのフィールドにならないように、データベースを正規化する必要があります。データベースで 2 人のユーザーが「アクティブ」に設定されている場合はどうなりますか?

ただし、この特定のスキーマでは、副選択クエリを使用する必要があります。元:

UPDATE tbl_DateTracking SET NBK=(SELECT NBK FROM Employees WHERE Status=1 LIMIT 1) WHERE CaseID=? AND OOC_Scenario=?CaseIdパラメータとしてandを渡しOOC_Scenarioます。

注意してください、私は VB や、VB が SQL とどのように相互作用するかについてよく知りません。上記は単なる例です。これをアプリケーションに適用し、変更して機能させる必要があります。最初のクエリにはコマンドが含まれていないため、ネストされたクエリを作成および実行する方法も機能しないように見えます (おそらく. VB は構文で自動的にそれを行いますか? SELECT) []![] 2 番目のクエリ内にネストすると、 で囲まれません()。2 番目のクエリにサブクエリとして含めている場合、最初のクエリを単独で実行しても効果はありません。

于 2012-09-07T15:17:05.053 に答える