データ一覧から更新と削除を編集したいがうまくいかない

このQ&Aのポイント
  • データの一覧から更新や削除の編集作業を行いたいが、うまくいかない。詳細な情報に基づいて修正点を教えてほしい。
  • データの一覧は正常に表示され、登録もできる。しかし、リンクをクリックして情報を編集しようとすると値が取得できない。
  • データ一覧から更新リンクをクリックするとデータが表示されず、エラーも出ない。初心者なので理解が浅いため、具体的な解決方法が知りたい。
回答を見る
  • ベストアンサー

select from where

行き詰ってます!ご教授下さい。 データの一覧から【更新】【削除】編集作業を行いたいのですが、うまくいきません。 ソースを記載しますので、修正点をお教え下さい。 データの一覧はうまくいっております。登録も出来ております。 '##### データ参照 ##### strSQL = "select * from テーブル名" Request.QueryString("ID")にてリンクをかけてその情報を編集したいのですが、値が取得できません。 <a href="test.asp?ID=<%=("データベースオートナンバー")%>">更新</a> 編集側で以下、条件抽出を出すと ID 1 のデータが表示されるのですが、 '##### データ参照 ##### strSQL = "select * From SITE_DATA where 【 ID=1 ここです】" ID【 <%=objRS("ID")%> 】 NAME【 <%=objRS("NAME")%> 】 URL【 <%=objRS("URL")%> 】 私が行いたいのは、データ一覧から更新リンクをクリックすると、 そのデータを抽出し、表示、編集を行いたいと思っています。 データ1を<a href="test.asp?ID=ナンバー...【更新】</a> データ2を<a href="test.asp?ID=ナンバー...【更新】</a> データ3を<a href="test.asp?ID=ナンバー...【更新】</a> エラーなどは出ないのですが、まったく表示されず、まいっています。 参考書などをみているのですが、いまいち理解ができません。 ※初心者ですので、理解が浅すぎる事は分かっています。どうか宜しくお願いします。 説明がうまく伝わればよいですが、、、

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ここで書くときに転記ミスだと思うのですが。 > strSQL = "select * From テーブル名 Where ID=ID " ここは "select * From テーブル名 Where ID=" & ID じゃないといけないですよね。 それはおいといて、パッと見た感じ、問題はなさそうですね。 で、切り分けとして、ID=1のデータがあるとして * ~/test.asp?ID=1 が正しく表示されるか。 * 表示されない場合、「 レコードオープン」以下をデータ一覧のものに入れ替えて ~/test.asp?ID=1 が正しく表示されるか。 あとは、response.writeなどで、パラメータやSQLが正しく受け取り・作成されているか等を確認するとかですかね。

iroom0928
質問者

お礼

遅くなりましたが、回答頂き、有り難う御座います。 おしゃるとおり、 "select * From テーブル名 Where ID=" & ID でうまくいきました。 よく理解ができていなかった為におこったミスでした。 しかし、今回のことで、理解が深まりました。 有り難う御座います。

その他の回答 (1)

回答No.1

'##### データ参照 ##### strSQL = "select * From SITE_DATA where 【 ID=1 ここです】" ID【 <%=objRS("ID")%> 】 NAME【 <%=objRS("NAME")%> 】 URL【 <%=objRS("URL")%> 】 --------------- ↑objRSをどう取得しているかがこれだと良くわかりません。 その部分のソースはどうなっているのでしょうか?

iroom0928
質問者

補足

すみません。データ一覧のソースです <%@ LANGUAGE="VBScript" %> <% Option Explicit%> <html> <body> <% Dim objCon Dim objRS Dim strSQL '##### コネクションオブジェクトの生成 ##### Set objCon = Server.CreateObject("ADODB.Connection") '##### レコードセットオブジェクトの生成 ##### Set objRS = Server.CreateObject("ADODB.Recordset") '##### 接続用パレメータの設定 ##### objCon.Provider = "Microsoft.Jet.OLEDB.4.0" '##### MDBの絶対パス指定 ##### objCon.ConnectionString = (Server.MapPath("/") & "TEST.mdb") '##### コネクションのオープン ##### objCon.Open '##### データ参照 ##### strSQL = "select * from テーブル名" '##### レコードオープン ##### objRS.Open strSQL, objCon, 3, 3 %> レコード件数 <%=objRS.RecordCount%> <hr> <table border="1"> <% '##### EOF が True になるまで繰り返し ##### Do Until objRS.EOF %> <tr> <td><%=objRS("ID")%></td> <td><%=objRS("NAME")%></td> <td><%=objRS("URL")%></td> <td><%=objRS("CM1")%></td> <td><%=objRS("CM2")%></td> <td><%=objRS("CM3")%></td> <td><a href="TEST1.asp?ID=<%=objRS("ID")%>">更新</a></td> <td> <a href="TEST2.asp?ID=<%=objRS("ID")%>">削除</a></td> </tr> <% '##### 次のレコードを参照 ##### objRS.MoveNext Loop %> </table> <table border="1"> <tr> <td><a href="/sample3.asp">追加</a></td> </tr> </table> <% '##### レコードセットのクローズ ##### objRS.Close Set objRS = Nothing '##### コネクションのクローズ ##### objCon.Close Set objCon = Nothing %> </body> </html> 受け取り?更新フォームのソースです。 <%@ LANGUAGE="VBScript" %> <% Option Explicit%> <% Dim ID,NAME,URL,CM1,CM2,CM3 ID = Request.QueryString("ID") Dim objCon Dim objRS Dim strSQL '##### コネクションオブジェクトの生成 ##### Set objCon = Server.CreateObject("ADODB.Connection") '##### MDBの絶対パス指定 ##### objCon.ConnectionString = (Server.MapPath("/") & "/TEST.mdb") '##### レコードセットオブジェクトの生成 ##### Set objRS = Server.CreateObject("ADODB.Recordset") '##### 接続用パレメータの設定 ##### objCon.Provider = "Microsoft.Jet.OLEDB.4.0" '##### コネクションのオープン ##### objCon.Open '##### SQLの作成 ##### strSQL = "select * From テーブル名 Where ID=ID " '##### SQL の実行 ##### objCon.Execute strSQL '##### レコードオープン ##### objRS.Open strSQL, objCon, 3,3 %> <html> <body> <hr> ID【 <%=ID%> 】<br> NAME【 <%=NAME%> 】<br> URL【 <%=objRS("URL")%> 】<br> CM1【 <%=objRS("CM1")%> 】<br> CM2【 <%=objRS("CM2")%> 】<br> CM3【 <%=objRS("CM3")%> 】<br> を削除致しました。 <hr> <FORM ACTION="/ファイル名.asp" METHOD="POST" id=form1 name=form1> <TABLE WIDTH=600 BORDER=1> <TR> <TD width="100">ID</TD> <TD><%=objRS("ID")%></TD> </TR> <TR> <TD width="100">サイト名</TD> <TD><INPUT TYPE="text" NAME="NAME" VALUE="<%=objRS("NAME")%>"></TD> </TR> <TR> <TD>URL</TD> <TD><INPUT TYPE="text" NAME="URL" VALUE="<%=objRS("URL")%>"></TD> </TR> <TR> <TD>CM1</TD> <TD><INPUT TYPE="text" NAME="CM1" VALUE="<%=objRS("CM1")%>"></TD> </TR> <TR> <TD>CM2</TD> <TD><INPUT TYPE="text" NAME="CM2" VALUE="<%=objRS("CM2")%>"></TD> </TR> <TR> <TD>担当</TD> <TD><INPUT TYPE="text" NAME="CM3" VALUE="<%=objRS("CM3")%>"></TD> </TR> <TR> <TD align="center" colspan="2"> <INPUT TYPE="submit" NAME="CB" VALUE="更新"> <INPUT TYPE="reset" VALUE="リセット" id=reset1 name=reset1> </tD> </TR> </TABLE> </FORM> <hr> <a href="ファイル名.asp">新規登録に戻る</a><br> <a href="ファイル名.asp">登録一覧に戻る</a> <% '##### レコードセットのクローズ ##### objRS.Close Set objRS = Nothing '##### コネクションのクローズ ##### objCon.Close Set objCon = Nothing %> </body> </html> 宜しくお願いします。

関連するQ&A

  • select文の記述について

    select文の記述について質問させていただきます。 下記のデータベースのテーブルの先頭からnumberを条件として 2名分のデータをselect文にて抽出したいと思っております。 (numberが重複し、重複数も異なるデータとなります。) select文の記述をどのようにするか教えていただければと思っております。 よろしくお願いいたします。 データベースのテーブル +——+—————+—————+————+ | id | name | number | score | +——+—————+—————+————+ | 1 | tanaka | 358 | 98 | | 3 | tanaka | 358 | 23 | | 4 | tanaka | 358 | 45 | | 11 | yamada | 126 | 63 | | 17 | yamada | 126 | 77 | | 23 | suzuki | 274 | 36 | | 45 | suzuki | 274 | 16 | | 59 | suzuki | 274 | 89 | | 73 | suzuki | 274 | 75 | | 80 | hanako | 89 | 24 | | (以下続く) | +——+—————+—————+————+ 抽出結果 +——+—————+—————+————+ | id | name | number | score | +——+—————+—————+————+ | 1 | tanaka | 358 | 98 | | 3 | tanaka | 358 | 23 | | 4 | tanaka | 358 | 45 | | 11 | yamada | 126 | 63 | | 17 | yamada | 126 | 77 | +——+—————+—————+————+

    • ベストアンサー
    • MySQL
  • うまく表示されません。

    MS SQL SERVERを使い始めた初心者です。 環境は XP、IIS6.0、SQL2000SERVER です。 エラーメッセージ> Microsoft OLE DB Provider for ODBC Drivers (0x80040E37) [Microsoft][ODBC SQL Server Driver][SQL Server]オブジェクト名 'tblMember'が間違っています。 /test/Connection_3.asp, line 12 ソース> 1:<html> 2:<head> 3:<title>Connect</title> 4:</head> 5:<body> 6: 7:<% 8:Set ConnDB = Server.CreateObject("ADODB.Connection") 9:ConnDB.Open = "DSN=dbMember;UID=sa;PWD=sa;" 10: 11:strSQL = "INSERT INTO tblMember(id,pwd,name,phone) VALUES('melon','4444','일지매','019-999-9999')" 12:Set objRs = ConnDB.Execute(strSQL) strSQL = "SELECT * FROM tblMember" Set objRs = ConnDB.Execute(strSQL) Do While objRs.EOF = False Response.Write objRs("name") & " " Response.Write objRs("phone") & "<BR>" objRs.MoveNext Loop objRs.Close ConnDB.Close Set objRs = Nothing Set ConnDB = Nothing %> </body> </html> これでソースでやるとうまく表示されません。 どうしてなのでしょか?ご教授のほどよろしくお願いいたします。

  • SELECT文

    strSQL = "SELECT * FROM 拠点 WHERE (削除<>'2' or 削除 is NULL) and エリアID like '日本%' ORDER BY 並び順" rsDB.open strSQL,conDB,3,3 a=1 s=0 do until rsDB.eof s=s+1 T(a,s)=rsDB.fields("名称").value TJ(a,s)=rsDB.fields("住所").value rsDB.movenext loop 上記で、日本だけではなく、いくつかSELECT文で抽出したいのですが、 a=1 日本 a=2 北海道 a=3 東北 a=4 関東 a=5 関西 のように、SELECT文で、抽出したものを、置換えしたいのですが、 どのように書いたらいいですか?

  • スクリプト エンジンの例外が発生しました

    仕事でASPを使用してWeb画面を開発してます。 環境は、Windows2000+IIS5.0+Oracle8i です。 先日、他の処理と同じようにデータベースを検索し、 条件に一致したデータを抽出したところ、 「ASP 0240 スクリプト エンジンの例外が発生しました 」という エラーが生じてしまいました。 やっている処理内容は、以下の通りです。 1:objCon.Open 2: 3:strSQL = "select xxx,yyy from ABC" 4: 5:objRS.Open strSQL, objCon, 3, 3 6:If objRS.EOF = True Then 7: a = objRS("xxx").value 8: b = objRS("yyy").value 9:end if 上の7行目を実行すると、エラーが発生してしまいます。 もちろん、ここで実行されるSQL文は正しい構文です。 マイクロソフトでこの「スクリプト エンジンの例外が発生しました 」の エラーの生じた原因と対処方法を調べようとしたのですが、よくわかりませんでした。 このエラーはどのような原因で起こり、どのように対処すればよろしいのでしょうか? よろしくお願いします。

  • inner joinとwhereでの結合の違いは?

    お世話になります。 たとえば、テーブルが複数(この場合2つ)ある場合。 (1) test(カラム:table_id,table_name) (2) tester(カラム:table_id,table_name) 以下のクエリは条件的に select a.table_id, a.table_name from test a inner join tester b on a.table_id = b.table_id ************* select a.table_id, a.table_name from test a , tester b where a.table_id = b.table_id 同じですよね? パフォーマンス的にもjoinすることのメリットが判りません。

  • ORACLEでwhere句の検索順序

    Oracle9i windows2000です。 以下のようなテーブルがあります。 table_a ----------------------- id   NUMBER(10,0) NOT NULL, sort   NUMBER(10,0) NOT NULL, name   VARCHAR(10), text   VARCHAR(255) この条件で、以下のふたつのSELECT文を発行した時、パフォーマンスが良いのはどちらですか? Oracleでは後ろから検索されると聞いたことがあるのですが本当でしょうか? ※idにプライマリキー、 id,sortにインデックスが貼ってあります。 (1)SELECT text FROM table_a WHERE id = 1 AND sort = 2 AND name = 'a' (2)SELECT text FROM table_a WHERE name = 'a' AND sort = 2 AND id = 1

  • ASPでAccessのデータを更新、削除

    ASPでAccessのデータベースに対するデータの更新、レコードの 削除が出来ません。(データの検索、参照は出来ています。) DBはAccess2000です。 下記のようなエラーメッセージが出てしまいます。 【エラーメッセージ】 ADODB.Recordset エラー '800a0cb3' オブジェクトまたはプロバイダは要求された操作を実行できません。 /asp/ParsonUP.asp, 行 95 【プログラム】 <% dMode = Request.QueryString("MODE") sSyain = Request.QueryString("SyainNO") sSimei = Request.QueryString("Simei") sKaisya = Request.QueryString("KAISYA") '************* DB コネクション ************************** Dim fPROV,fDBNAME fPROV = "Microsoft.Jet.OLEDB.4.0" fDBNAME = "D:\Inetpub\wwwroot\asp\data\OP_tbl2.mdb" Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.ConnectionString = "Provider=" & fPROV & ";Data Source=" & fDBNAME ObjConn.Open Set ObjRS = Server.CreateObject("ADODB.Recordset") StrSQL = "SELECT * FROM TM_個人情報 WHERE TM_個人情報.社員NO = '" & sSyain & "';" '************************************************** If sSyain<>"" Then Select Case dMode Case "UpDT" '更新登録 ObjRS.Open StrSQL, ObjConn, adOpenStatic With ObjRS .Fields("氏名").Value=sSimei .Fields("所属会社").Value=sKaisya .Update .close End With Case "DelDT" '削除 ObjRS.Open StrSQL, ObjConn ObjRS.Delete End Select Else Response.Write "<H2>処理に失敗しました</H2>" End If %>

  • MySQLで別テーブルでのSELECTでNULLの場合

    MySQLで以下のようなテーブルの場合 test_1 id name test_2 test_1_id name このような構造の場合、test_1からtest_2のselectでtest_1.id=test_2.test_1_idでjoinした場合に、 test_2にデータが存在していなかった場合、 test_1テーブルのnameを返すようなsqlはどのように記述すればよいでしょうか、、

    • ベストアンサー
    • MySQL
  • カラムで括ったMAX値のselect

    Mysql5.0.18です よろしくお願いします テーブル:test_tblです key:キー name:生徒氏名 test_name:テストの名前 value:点数 下記のようなデータを用意しました key  name  test_name  value 1    A    test1   30 2    A    test2   50 3    B    test1   40 4    B    test2   80 5    C    test1   90 6    C    test2   90 下記のように 生徒(name)毎の最高点のレコードを1件づつ抽出したいのですが 可能でしょうか? key  name  test_name  value 2    A    test2   50 4    B    test2   80 5    C    test1   90 私は下記のsqlでチャレンジしてダメでしたTT Select test_tbl.key, test_tbl.name, test_tbl.test_name, Max(test_tbl.value) as value From test_tbl Group By test_tbl.name Order By test_tbl.name Asc, test_tbl.test_name Asc 結果は・・・ key  name  test_name  value 1    A    test1   50 3    B    test1   80 5    C    test1   90 です・・・ Max関数を使えば、生徒のMAX点が出力されるのは 分かるのですが、そのMAX点のレコードを抽出するには・・・ という所で行き詰っています よろしくお願いします

    • ベストアンサー
    • MySQL
  • selectで抽出したデータの特定カラムを空に

    selectで抽出したデータの特定カラムのデータを空にしたいのですが、どのような方法がありますでしょうか。 以下のようなofficeテーブルがありまして、データは1万件あったとします。 id name place  1 浅谷 大阪 2 亀山 東京 3 武本 名古屋 placeカラムに東京を含むidが5000未満のデータを抽出し、そのデータのplaceカラムをすべて空に(削除)したいと思っています。 SELECT * FROM office WHERE place like '%東京%' and id < 5000 order by id asc; 上記のselect構文で希望データを抽出することはできたのですが、その抽出したデータのplaceカラムを空に(データを削除)する方法が分かりません。 アドバイス頂けると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう