• 締切済み

ASPからSELECT文を複数発行するには?

こんにちは。 ASPからSELECT文を複数発行する際に 「ADODB.Recordset エラー '800a0e78' オブジェクトが閉じている場合は、操作は許可されません。 」 とエラーメッセージが表示されます。 同じ記述方法で、1つのSELECT文を発行するのは大丈夫です。 レコードセットをオープンした後でエラーになってるようです。 最初のSELECTで #tempを作成して 次のSELECTで参照しています。 このような処理の場合、どうすれば良いのでしょうか??

みんなの回答

  • MYCABIN
  • ベストアンサー率100% (3/3)
回答No.3

こんにちは。 1.オブジェクトを複数用意する 2.レコードセットはひとつにして次のSQLはexecuteを使用する。 上記どちらでも次のSELECTで前のを参照できます。

回答No.2

NextRecordsetメソッドを使ってるんでしょうか? 最初のクエリが一時テーブル作成するだけのようですが、サブクエリにして、うまく1つのクエリにしてしまうのがいいように思います。

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.1

旧ASPは、もともと複数発行できないのでは? レコードのEndってどうやって定義するんだろうかという疑問があるので。

関連するQ&A

  • asp sqlのselect文について

    asp記載は strSql = "Select * From dbo.テスト(テスト) Where 日付='20110324'" objSr.Open str.Sql,objCon.3 ※上記構文前にConnecting.StringやOPENは定義済みです。また、objSrはレコードセットで定義済みです。 質問内容は、このまま実装すると SQLServerエラー(80040e14) '('付近に不適切な構文があります。 と表示されます。 自分が調べたところ、テーブル名が「dbo.テスト(テスト)」で一部全角カッコがあるるので、 エラーになったのだと思われます。 ちなみに全角カッコではないテーブル名の参照は可能でした。 全角カッコを認識させるにはどうしたらよいでしょうか? [dbo.テスト(テスト)]は試しましたが([ ]で囲む) オブジェクト名dbo.テスト(テスト)が無効ですと表示され、エラーとなりました。 ご教授をお願いいたします。

  • ASP レコードセットしたオブジェクトを戻り値に出来ませんか?

    ASPは本当にドキュメントが少なく困っています。 ---Main.asp---------------------------------- Dim RetRec 'DB接続 Call DBOpen() 'SQL文 strSQL = "SELECT・・・・" 'レコードオープン実行 Set RetRec = RecOpen(strSQL) 'レコードカウント取得 RecCnt = RetRet.RecordCount  ・  ・  ・ --DBCon.asp-------------------------- Public Function RecOpen(SQLPrm) 'オブジェクト宣言 Set G_RecMap = Server.CreateObject("ADODB.Recordset") 'レコードオープン G_RecMap.Open SQLPrm, G_Conn, 3, 3, 1 '復帰値作成 RecOpen = G_RecMap Exit Function End Function ----------------------------------------- エラー内容 オブジェクトでサポートされていないプロパティまたはメソッドです。: 'RecordCount' ・・・当然のことながら、復帰値をオブジェクトとして 拾っていないので、上記エラーが表示された。 ------------------------------------------- 上記のようにレコードセットしたオブジェクトは返せますでしょうか?同じ要領で行うと上手く行かないのですが。。。お手数ですが、よろしくお願いします Sessionの使用は禁止となっています。

  • 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 %>

  • [ASP+SQLsrv]SUMしたのを表示したい・・・

    こんにちわっ☆ ASPとSQLサーバでWebアプリを開発しております。 SQLのSELECT文で式典の参加人数を計算しました。 ・・・SELECT文でSUM計算させたの初めてで・・・。 どうやったら計算結果使えるんですか!? Set rsSUM = Server.CreateObject("ADODB.Recordset")  rsSUM.Open "SELECT SUM(GOcust) FROM D_InvoiceDetail",dbConnection,3,2 としたものを・・・。 Response.Write rsSUM("SUM(GOcust)") ↑とか色々しましたが・・・。 どぉしたら使えますか・・・。 って、ひょっとしてめちゃ恥ずかしいこと聞いてる?? ううぅぅ。

  • Classic ASP で切断されたレコードセットを使う

    http://www.4guysfromrolla.com/webtech/080101-1.shtml 上記のサイトを参考に切断されたレコードセットを利用しようといたしましたが、 ADODB.Recordset エラー '800a0e78' オブジェクトが閉じている場合は、操作は許可されません。 とエラーが発生してしまいます。 レコードセットを取得してくるFunctionの中の、上記サイトでいうoRS.Closeの部分をコメントアウトするとコードは通ります。 いったい何が問題なのでしょうか?上記記事が古いのでもうこの方法は使えないということなのでしょうか。 ご教示のほどよろしくお願い申し上げます。

  • VBAでOracleにSQL発行(ADO)

    ExcelのVBAからOracleにADOで登録したく下記のコードを作成しましたが コンパイルで"変数定義がされていません”に成ってしまいます。 参照設定に何か必要なのでしょうか? ----------------------------------------------- 'ADO用のオブジェクト変数の宣言 Dim cn As New ADODB.Connection ← ここでエラー Dim rs As New ADODB.Recordset Dim rownum As Long Dim colnum As Integer 'ADOコネクションの生成 cn.Open "Provider=OraOLEDB.Oracle;Data Source=" & ActiveSheet.Cells(26, 1) & ";User ID=scott;Password=tiger;", "scott", "tiger" 'ADOレコードセットの生成(全データを返すレコードセットの生成) rs.Open "select * from emp", cn, adOpenDynamic, adLockOptimistic, adCmdText ... ... ...

  • aspでaccessにデータを入れ替えすができない?

    以下のファイルを実行時にエラーを出てきました。どうすれば直るでしょうか?よろしくお願いします。 使用機械はNECのVC5002D、OSはXPのPRO(MEからのアップグレット)。 ------------------------ <% '分類訂正 Dim StrSQL, rs,newsclass_oldname,newsclass_newname Set rs = server.CreateObject("ADODB.Recordset") rs.LockType = adLockOptimistic StrSQL = "SELECT * FROM newsclass WHERE newsclass_name = '" & request("newsclass_oldname") & "'" newsclass_oldname=request("newsclass_oldname") newsclass_newname=request("newsclass_newname") rs.Open StrSQL, Con,,,adCmdText rs("newsclass_name") = request("newsclass_newname") rs.Update----------------line 13 %> ------------------------------------- HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------------------------------- 技術情報 (サポート担当者用) エラー タイプ ADODB.Recordset (0x800A0BCD) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 correctnewssort_2.asp, line 13

  • ASP + MDBで発生したエラーが解決できません。。。

    こんにちは。 いま、ローカルPCでシステム開発をしています。 環境としては、  WindowsXP + IIS + ASP + MDB(ACCESS2003) です。 いま、MDBにDB接続して、データを取得しようとしているのですが、以下のエラーが発生していて、治りません。 【エラータイプ】 Microsoft VBScript 実行時エラー (0x800A01B6) オブジェクトでサポートされていないプロパティまたはメソッドです。:Open ソースコードは以下の通りです。 【ソース】 'コネクションオブジェクト Set objCon = Server.CreateObject("ADODB.Connection") objCon.Provider = "Microsoft.Jet.OLEDB.4.0" objCon.ConnectionString = "C:\test.mdb" objCon.Open 'レコードセットオブジェクト objRs = Server.CreateObject("ADODB.Recordset") objRs.Open strSQL, objCon, 3 上記のobjRs.Open→Set objRs = objCon.Executeに変更するとエラーは発生しないのですが、RecordCountなどのプロパティが利用できません。 色々と調査したのですが、全くわかりません。 どなたか情報をご存知でしたら、ぜひともご教示ください。 宜しくお願いします。

  • EXCELからORACLEのテーブルをselectしたいのですが、うま

    EXCELからORACLEのテーブルをselectしたいのですが、うまくいきません。 ご指導のほどお願いいたします。 下記サンプルをネット('Access VBA Tips)で探し実行しました。 Access版だからいけないのでしょうか? adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" のオープン・クローズは正常終了します。 Set adoCON = Application.CurrentProject.Connection が実行できません。 実行時エラー 438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。 が出てしまいます。 Excelではだめなのでしょうか? 教えてください。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー--------------- Sub prcAdoOracleODBC() 'Access VBA Tips '4.3 ORACLEのDBを開く・閉じる/ODBCを使う Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '?ADOを使いADRSODBCというデータソースをオープンします adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" 'データベースのオープン(データベースオブジェクトの作成) Set adoCON = Application.CurrentProject.Connection 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from casUR") 'レコードセットのクローズ adoRS.Close 'データベースのクローズ adoCON.Close 'オブジェクト変数のクリア Set adoRS = Nothing Set adoCON = Nothing End Sub

  • SQL文の最後に「;」はいらないのでしょうか?

    VBAのADOについて質問です。 SQL文の最後には「;」を付けなくちゃいけないものだと思っているのですが ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub test_Click() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = CurrentProject.Connection Set RS = New ADODB.Recordset SQL = "SELECT * FROM Tテーブル" ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ でも問題なくコードが動きました。 SQL文の最後に「;」はいらないのでしょうか? ちなみに SQL = "SELECT * FROM Tテーブル;" でもエラーになりませんでした。

専門家に質問してみよう