• 締切済み

ASP(VBScript)でACCESSの任意の行を呼び出して変更する方法

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

みんなの回答

  • hequil
  • ベストアンサー率65% (242/372)
回答No.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文に変数を代入する場合は、危険な文字は正しい形に変換しておきましょう。 例: " → "" ' → '' | → \| など

quick-nono
質問者

お礼

hequilさん、こんばんは。 >ADO定数を global.asa や Const で定義しているものとして簡単なサンプルです。 # Option Explicit してたら別途変数宣言も必要 これらの定義方法、または、インクルード(というのでしょうか?)の方法についても教えていただけませんでしょうか?(超初心者です!) よろしくお願い致します。

quick-nono
質問者

補足

<% 'データベースとの接続を確立する 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 %> これで、なんとか書き換えに成功しました。 お騒がせいたしました。

関連するQ&A

  • PHPでCSVを読み込みMySQLに行追加・変更

    PHPでCSVファイルを読み込み、MySQLにデータを追加する方法を教えてください。 その際に、新規の行はIDを指定せず、auto_incrementでidを設定するようにして、IDを指定した場合は、既存の行を変更するようにしたいです。 また、prepareメソッドを用いたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ASP【JavaScript】【VBScript】

    ASPの画面が、【JavaScript】→【VBScript】の流れになっています。 【JavaScript】のデータを渡す→【VBScript】の処理をする必要があります。 【JavaScript】→【VBScript】の方法がわかりません。 つまり、【JavaScript】のデータを【VBScript】で受け取る方法がわかりません。 ご存知の方がおられましたら、教えていただきたく、よろしくお願いいたします。 第2案としまして、【VBScript】で、【JavaScript】の関数を呼び出す方法を考えております。 この方法をご存知の方がおられましたら、教えていただきたく、よろしくお願いいたします。

  • Access2003オートナンバーを任意の値に

    Access2003で、オートナンバーでID番号の管理(主キー)をしています。 このID番号の他に、10桁の数値でプロジェクト管理したいと思っております。 オートナンバーを基に、別IDを作成する方法を教えてください。 なお、この10桁の数値は、先頭の4桁がプロジェクト番号として使用し、 後ろの6桁はオートナンバーのIDと同じ数値となります。 ======================================== (例)  [ID]     [ID2]   1    1001000001   2    1001000002   3    1001000003   〃       〃 ======================================== 下記のURLを参考にしてやってみたのですが、追加クエリを実行しても、 なぜか、オートナンバーフィールドへ追加することができませんでした。 ※追加クエリ実行エラーで、「型変換エラーのためnullに設定しました」となります。 http://www.accessclub.jp/samplefile/samplefile_145.htm お手数お掛けしますが、宜しくお願い致します。

  • VBScriptでASPのオブジェクトを使う方法

    VBScriptでSQLサーバーのDBにアクセスするためASPのserverオブジェクト を使うと ランタイム エラーが発生しました。デバッグしますか? 行:39 エラー:オブジェクトがありません。:'server' とエラーが表示されます。 おそらく次の行だと思うのですが、何か方法を教えてください。 set objDB = server.CreateObject("ABCDB.DBCon")

    • ベストアンサー
    • HTML
  • ACCESS レポートで常に1から番号を振る方法

    もしかしたら簡単なことなのかもしれませんが、まったく見当すらつかないので教えてください。 レポートで1行目から番号をふりたいのですがどうすればいいのでしょうか? ACCESS2000で、あるデータを読み込んでそれをレポートで表示させるDBを作っています。 表示・印刷するためだけのDBなので、別のデータを表示・印刷する場合は削除クエリを使っていったんテーブルを削除して、表示させたいデータをインポートさせています。 オートナンバーで番号を振ると、削除クエリを実行させると削除する前のデータの続きの連番をふってしまいますよね?そうではなくて、常に1行目に1、2行目に2を振りたいのです。 テーブルかクエリに振るのかな?と思ったのですが、レポートに直接番号を振る方法もあるのでしょうか? どちらに番号を振ってもいいのですが、レポートに番号を表示するよい方法がありましたらお教えください。

  • VBScriptで、ファイルから任意の行のみ取り出す方法について

    VBScriptにて、あるファイル内を1行ずつ順番に取り出しながら、 途中の数行を別のファイルに書き出したいのですが、方法が分からず 悩んでいます。 -------------------------------------------------------------- set objFS = CreateObject("Scripting.FileSystemObject") set objReadText = objFS.OpenTextFile("C:\read.log") set objWriteText = objFS.CreateTextFile("C:\write.log") count = 1 Do Until objReadText.AtEndOfStream If count >3 And count < 8 Then strLine = objReadText.ReadLIne objWriteText.WriteLine(strLine) ElseIf count = 8 Then Exit Do End If count = count + 1 Loop objReadText.Close objWriteText.Close -------------------------------------------------------------- 上記にて、例えばread.logの4行目から7行目だけをwrite.logに書き出したいのですが、 想定した途中の行だけを別ファイルに書き出す事が出来ません。 どなたかアドバイスを頂けないでしょうか。

  • ACCESSでの行番号の自動採番

    いつもお世話になっています。 MSACCESSで、以下のようなしくみを作ろうとしています。 (例) 親テーブル 伝票番号(オートナンバー) 担当番号、販売先番号・・・・ 子テーブル 伝票番号(オートナンバー) 行番号、商品番号・・・・ (やりたい事) 項目"伝票番号"はリンクさせて同じ値とする。 項目"行番号"は親レコードの値が増えるたびに1から増加させていくようにしたい。 伝票番号 1 行番号 1 伝票番号 2 行番号 1 伝票番号 2 行番号 2 伝票番号 2 行番号 3 伝票番号 3 行番号 1 のように。 なにぶん初心者なものでマニュアル等調べて見ましたがうまくいきません。よろしくお願いします。

  • asp(vbscript)で画面を切り替える

    教えてください。 Vbscript初心者です。 現在111.aspというプログラム内で、onClick="abc()"という関数を呼び出し 呼ばれた側の関数で新たに別画面を呼び出すようにしています。 別画面(222.asp)でなく画面を切り替えるようにしたいのですが、どのように変更すれば良いか分かりません。 宜しくお願い致します。 <TD><INPUT type="button" value="テスト" onClick="abc()"></TD> function abc(){ window.open("222.asp?id=<%=Request.QueryString("id")%>") }

  • VB or VBScriptでPCの製造番号を抜く方法

    VBScriptでPC本体の製造番号(シリアルナンバー)を抜き出す方法を教えてください。 現在、CPU-Zというフリーソフトを使ってCPU-Zがはき出したテキストをVBScriptで読み込み、製造番号を取得しています。 今回は、VBScriptのみで製造番号を取得したいのですが、方法が見あたりません。宜しくお願い致します。

  • 任意の行から連続する複数行のデータ平均の算出方法

    エクセル上に3600行のデータがあり、その中から任意の40個の行(行番号234、行番号336、行番号487、・・・)から、それぞれ連続する50行分の左から4行目のセル(D234:D283、D336:D485、D487:D536、・・・)の数値データの平均(D234:D283の平均、D336:D485の平均、D487:D536の平均、・・・)を算出する作業を行っています。 今は、「任意の行からその連続する50行分の左から4行目のセルを範囲指定して平均値を算出」する方法で行っています。 この方法だと、「任意の行からその連続する50行分の左から4行目のセルを範囲指定して平均値を算出」という作業を40回繰り返すことになります。また、同様に処理するワークシートが残り3部あります。 このような作業はマクロを利用すると可能でしょうか?もし可能なら、その方法を教えて下さい。 どうぞよろしくお願いします。

専門家に質問してみよう