プロが教える店舗&オフィスのセキュリティ対策術

ID(オートナンバー)が判っている場合ですが、
ID番号を指定して、その行のデータを変更する方法を教えてください。
VBScriptで、そういうことはできますか?

A 回答 (1件)

もちろん可能です。



ADO定数を global.asa や Const で定義しているものとして簡単なサンプルです。
# Option Explicit してたら別途変数宣言も必要

--

id = 1234 '-- オートナンバーの値

Set cnn = Server.CreateObject("ADODB.Connection")
cnn.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;Password=;FIL=MS Access;DBQ=" & Server.MapPath("sample.mdb")
cnn.CursorLocation = adUseClient
cnn.Open

Set rst = Server.CreateObject("ADODB.Recordset")
rst.Open "SELECT ID, FIELD_DATA FROM SAMPLE_TBL WHERE ID=" & id, cnn, adOpenStatic, adLockOptimistic, adCmdText
If rst.RecordCount > 0 Then

rst("FIELD_DATA") = "NewValue"
rst.Update

Else

Response.Write "該当レコードが見つかりませんでした。"

End If
rst.Close

Set rst = Nothing
cnn.Close
Set cnn = Nothing

--

あと余談ですが、この手のコード書く場合

rst.Open "SELECT * FROM TBL WHERE ID=" & Request("id"), cnn, ・・・・

という危険なコードは書かないように気をつけましょう。

Request.QueryString("id") または Request.Form("id") と指定し、
SQL文に変数を代入する場合は、危険な文字は正しい形に変換しておきましょう。

例:
" → ""
' → ''
| → \|

など

この回答への補足

<%
'データベースとの接続を確立する
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Test"
'テーブルを開く
Const adLockOptimistic = 3
Set Rec = Server.CreateObject("ADODB.Recordset")
Rec.Open "TestTable", Con,2,3,2
'IDでフィルターをかける
Rec.Filter = "ID = '" & ここにID番号を記述 & "'"
'フィールドを書き換える
Rec("ここにフィールド名") = "書き換える内容"
%>
<%
Rec.Update
Rec.Close
Con.Close
%>
これで、なんとか書き換えに成功しました。
お騒がせいたしました。

補足日時:2003/04/05 20:40
    • good
    • 0
この回答へのお礼

hequilさん、こんばんは。

>ADO定数を global.asa や Const で定義しているものとして簡単なサンプルです。
# Option Explicit してたら別途変数宣言も必要

これらの定義方法、または、インクルード(というのでしょうか?)の方法についても教えていただけませんでしょうか?(超初心者です!)

よろしくお願い致します。

お礼日時:2003/04/04 22:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!