2012-04-04 11 views
2

テーブルを更新するループを実行しようとしています。条件がDataSelectテーブルと一致する場合は、テーブルDataSelectのソースコードでクリーンアップしました。基準の例は、2012年から2011年の間で、チャネルがTM、MRCが5〜10のようなものです。私は、プログラムがそれぞれ1つずつループするように、さまざまなタイプの基準を保持するためにDataSelectを作成します。ソースコードをCleanedで割り当てます。これまでのところ、私は常に「あまりにも少数のパラメータがあります。どんな助けでも大歓迎です。更新クエリでループを実行する方法 - アクセス

おかげで、 ニキ

Private Sub doDataSegm_Click() 


Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Dim strSQL, strSearch, strReplace As String 

Set db = CurrentDb() 
Set rs = db.OpenRecordset("dataselect", dbOpenTable) 

If rs.RecordCount = 0 Then Exit Sub 
rs.MoveFirst 

    For i = 1 To rs.RecordCount 
    strChan = rs("Chan") 
    strDataCode = rs("code") 
    strMrcYrLow = rs("mrcyr_low") 
    strMrcYrhigh = rs("mrcyr_high") 
    strMrcLow = rs("mrc_low") 
    strMrchigh = rs("mrc_high") 
    strSQL = "UPDATE Cleaned SET [cleaned].[datacode]= " & _ 
       strDataCode & " where [CLEANED].[CHANNEL] Like '" & strChan & _ 
      "' AND [CLEANED].[MRC_YEAR] Between '" & strMrcYrLow & _ 
      "' And '" & strMrcYrhigh & "' AND CLEANED.MRC Between " & _ 
       strMrcLow & " And " & strMrchigh & ";" 

    db.Execute strSQL, dbFailOnError 
    rs.MoveNext 
    Next i 


End Sub 
+0

:あなたのクエリでのみ引用符で囲まれていない識別子がdatacodeMRCあるので、あなたがそれらのいずれかを引用する必要があるように、それが見えますか?それが 'db.Execute ... 'の場合は、debug.printを使ってstrSQLの内容を表示し、Accessで直接実行してみましたか?最初に行うことは、データ型がSQLの引用符と一致するかどうかをチェックすることです。たとえば、MRC_YEARは実際に数値フィールドではありませんか? –

+0

'rs(" code ")'フィールドに数値データが入っていますか?そうでない場合は、識別子を引用する必要があります。 'rs(" mrc_low ")'と 'rs(" Mrc_high ")'と同じです。 – mellamokb

答えて

0

のようなメッセージ "パラメータが少なすぎます。1.ファイル名を指定して実行時エラー3061を期待"通常、クエリに引用符で囲まれていないデータ値が含まれていることを示しています。この値は、Accessがフィールド名として代わりに解釈しています。そのエラーを与えている何行

UPDATE Cleaned SET [Cleaned].[datacode] = '" & strDataCode & "' ... 
             ^...add quotes...^
+0

フィードバックをお寄せいただきありがとうございます。余分な 'の前に追加'のトリックをやったようです。もう1つの質問は、順番に実行するように設定する方法です。たとえば、1行目から行10に移動します。プログラムをどのように設定する必要がありますか? – user1313666

関連する問題