3

SQL を使用して複数のテーブルから行を削除するコードを作成しようとしています。

ユーザーは、SQL DELETE ステートメントの WHERE 句で使用されるカンマで区切られたテキスト ボックスにタイプ番号を入力します。

文字列をバリアント配列に分割できたので、それを SQL ステートメントに挿入したいと思います。

変数を SQL ステートメントに挿入して、配列のすべての要素を処理するにはどうすればよいですか?

編集: もう少し掘り下げて、For Each Next ステートメントについて教えてくれました。これはおそらく私が探しているものです。

4

4 に答える 4

7

VBA でクエリを作成することをお勧めします。その後、数値のリストを IN ステートメントにすることができます。

 sSQL = "DELETE FROM table WHERE ID In (" & MyList & ")"

どこで MyList = "1,2,3,4" など。

ご覧のとおり、配列は必要なく、コンボ ボックスよりもテキスト ボックスの方が適しています。ユーザーが名前などで選択できるようにしたい場合は、リストボックスが便利です。リストボックスで選択したアイテムを反復処理し、ID から文字列を作成して、Delete ステートメントで使用できます。( MS Access 2007 - リスト ボックス内の値を循環して SQL ステートメントの ID を取得する)

次に、データベースのインスタンスに対して sql を実行できます。例えば:

 Dim db As Database

 Set db = CurrentDB
 db.Execute sSQL, dbFailOnError

 MsgBox "You deleted " & db.RecordsAffected & " records."
于 2012-07-23T09:12:52.213 に答える
0

一般的なアプローチ

WHERE 
','+Array+',' like '%,'+col+',%'

アレイで使用可能なすべての数値が考慮されます

于 2012-07-23T09:09:29.127 に答える
0

あなたはそれを単純にして、次のような文字列を作り上げることができます

stringBuilder sb = StringBuilder("DELETE FROM YOURTABLE WHERE ");
foreach(string st in stringArray){
    sb.append("YOURFIELD='" + st + "'");
    //If it is not the last element, add an "OR"
    if (st != stringArray[stringArray.length -1]) sb.append(" OR ");
}

//Now, you have a string like
//DELETE FROM YOURTABLE WHERE YOURFIELD='hello' OR YOURFIELD='YES'

//... do something with the command
于 2012-07-23T09:10:00.137 に答える