2017-11-15 4 views
-2

閉じた引用符とかっこ内で増分する整数値を追加する必要があります。VBAで閉じた引用符と括弧内の整数値を増やす

質問1.各値が1ずつ上がるように整数値を増やすにはどうすればよいですか?[the_id] = 1、[the_id] = 2などを下の引用符?

Dim Z As Integer 
For Z = 1 To 5 
SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = " & Z;" 
Next Z 

意図した結果が以下のように増分:

SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = 1;" 
SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = 2;" 
SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = 3;" 
SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = 4;" 
SQL.CommandText = SQL.CommandText + "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = 5;" 

第二に、私はこのクエリ内で同じことを行うのですか?
このようになりますか?

次のような結果が得られます。

SQL.Parameters.Append SQL.CreateParameter("MyField1", adVarChar, adParamInput, 50, MyField1) 
SQL.Parameters.Append SQL.CreateParameter("MyField2", adVarChar, adParamInput, 50, MyField2) 
SQL.Parameters.Append SQL.CreateParameter("MyField3", adVarChar, adParamInput, 50, MyField3) 
SQL.Parameters.Append SQL.CreateParameter("MyField4", adVarChar, adParamInput, 50, MyField4) 
SQL.Parameters.Append SQL.CreateParameter("MyField5", adVarChar, adParamInput, 50, MyField5) 
+0

だから 'SQL'は' ADODB.Command'ですか?それに言及すると便利かもしれません。また、どのRDBMSに接続していますか? SQLサーバー?それに言及すると便利かもしれません... –

+0

'MyField&i'の' MyField'は文字列リテラルではなく変数です。 'MyField&i'の結果は' MyField'の* value *(*も*明白ではありません)となり、 'i'の値と連結されます。 IMOのあなたの質問/あなたが解決しようとしている特定の問題はむしろ不明確です。明確にするために自由に[編集]してください。 –

+0

FWIW 'cmd'は' ADODB.Command'オブジェクトのより良い名前です。 'sql'は実際のコマンド文字列の良い名前になります。 –

答えて

0

あなたは、文字列変数にあなたのコマンドを格納し、整数を連結し、ループ必要な時間とあなたのSQL.commandTextプロパティにその変数の値asign各ループですることができます。私は仕方がないと思うあなたの2番目の質問について

Dim x As integer 
Dim query As String = "" 
For x = 1 To 5 
query = query & "UPDATE [MyDatabase].[dbo].[tbl_MyTable] SET [MyField] =(?) WHERE [the_id] = " & x.toString() & ";" & vbNewLine 
Next 
SQL.CommandText = query 

:しかし、私は、それはループにクエリ全体と最後に良いアイデアになると思い、SQL.commandTextプロパティに、このような何かを、それをasignメソッドCreateParameterが文字列値を期待しますが、最後のときので、完璧に動作することができ、パラメータ「MyFieldX」の名のために

Dim i As Integer 
For i = 1 To 5 
SQL.Parameters.Append SQL.CreateParameter("MyField" & i, adVarChar, adParamInput, 50, MyField & i) 
Next 

:理由値のループでそれを行うには、見てみましょうMyField & iを入力してください。これは、変数の名前であるため動作しません。あなたが実際にそれをやりたいのであれば、5つの異なる値を配列に格納し、そのインデックスをループすることができますが、私は実際にはクエリーのパラメータを作成しようとするときに別々の行に置くことを好みます。
あなたを助ける希望。

関連する問題