0
以下のコード比較項目は、ユーザーがデータベースからアイテムIDを使用して以前に選択したもので、選択されたものを「チェック」します。だから私は以前に選択したものだけが「チェック」されているすべてのアイテムのチェックボックスリストを持っています。これは、このコードが何をしているか、更新注文ページの配列の数値を結果セットと比較するには?
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("strConn")
strSQL = "SELECT * FROM Items"
'current items selected
'e.g. 31, 32, 33
strItemSelected = curr_Item_IDs & ","
set rs = Conn.Execute(strSQL)
If Not rs.EOF Then
Do while not rs.EOF
response.write "<input type = 'checkbox' "
If InStr(strItemSelected, CStr(rs("ID")) & ",") > 0 Then
response.write("checked = 'checked' ")
END if
response.write(" name='item' value=""" & rs("ID") & """> " &
rs("item_name") & vbcrlf)
response.write("/ ID: " & rs("ID") & "<br />")
rs.movenext
Loop
end if
set rs=nothing
である、それは「31」を選択しただけでなく、「1」を選択し、31のIDです。私はその問題を引き起こしているInStrを考えているが、問題を解決する方法は不明である。
助けていただけたら幸いです!あなたがそれを行う必要がある場合
If rs("selected") = "Y" Then
response.write("checked = 'checked' ")
END if
:これであなたのIFを置き換える、あなたのループ内で次に
'change your query... '
strSQL = "SELECT I.*, case when I.ID in (" & strItemSelected & ") then 'Y' else 'N' end as selected FROM Items I"
:計算列が含まれるようにクエリを調整することであろう
@ e4c5 Not helpfuもしこれが新しいプロジェクトだったら、私はあなたに同意するかもしれない。しかし、これは確立されたシステムのための既存のプロジェクトであり、会社はそれを再開発したくないという可能性もあります。私がこれを言う理由は、いつもそれを見て、大規模なClassic ASP内部Webアプリケーションを個人的に維持しなければならないからです。そう、はい、クラシックASPは非常にこの日と時代に生きています。 – Lankymart
計算された列*(バイナリのはい、いいえ、数字の状態など)でこれを行うことはできませんか?*選択した項目との結合に基づいていますか?これは、コードでロジックを実行するのではなく、RDMSが作業を行うのではなく、私が個人的に取るアプローチです。これが実行可能かどうかにかかわらず、データベース構造全体に完全に依存します。 – Lankymart