• 締切済み

ASP レコードセットオブジェクト

コレクションにFieldsからAddし、展開するとエラーが発生します。(エラーは下記) レコードが単純に取得できていないと見せかけて、Recordcountはしっかりと取れてますし、仮にコレクションAdd前に変数に置き換えると問題なくAddされています。 この現象について何か問題は考えられますか? 補足につきましては徹夜作業につき随時行います。 ソースが長すぎて、個別で送ります。 例)  (1)'オブジェクト直接からのAddの場合 MSTCol.Add "ID", PrmRec.Fields("ID")・・・×  (2)'変数に置き換えてからのAddの場合 S_ID = PrmRec.Fields("ID") MSTCol.Add "ID", S_ID ・・・○ --ソース---------------------------------------- 2|SQL = "SELECT ID, NAME, TEL FROM MST_PEOPLE ORDER BY ID" 3| 'DB接続&レコードセット 4| Set RetRec = DBCon_RecSet(SQL) 5| 'レコード置き換え処理実行 6| Set RetListObj = CreateListObj(G_RecSearch) 7|'確認としての処理(テスト段階) 8|Set Item_NO = RetListObj(1) 9|value1 = Item_NO.Item("TEL") 10|Response.Write(Value1) エラー タイプ ADODB.Field (0x800A0BCD) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 エラー行数13行目

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

以下のようにしてみてもダメでしょうか? MSTCol.Add "ID", PrmRec.Fields("ID").Value

soushi_ni
質問者

お礼

申し訳ございません。質問の内容をもう少し整理してから投稿させていただきます。ご迷惑をおかけいたしました。

関連するQ&A

  • 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の使用は禁止となっています。

  • 2回目に画面のレコードセットの値が読めない

    メインフォームとサブフォームの画面゛て レコードソースは、ワークテーブルを参照し メインフォームの保存ボタンの処理で、 Private Sub 保存ボタン_Click()  Set mySubFm = Me![テーブル子].Form  Set myParFm = Forms(Me.name) '<== 親フォーム  Set Rec1 = myParFm.RecordsetClone  Set Rec2 = mySubFm.RecordsetClone  Lng受注ID = Rec1.Fields("受注ID").Value  Dim Rtn As Integer  ・レコードセットのデータを、本テーブルに更新する処理  ・自動採番した番号を、レコードセットのIDのフィールドにセット   Rec1.Edit   Rec1.Fields("ID").value = newID   Rec1.Update  ・Me.Requery '<== メインフォームの画面を更新  ・mySubFm.Requery '<==サブフォームの画面を更新  Set Rec1 = Nothing   Set Rec2 = nothing End Sub この処理を一度行い、更に、画面のサブレコードの値を変更して、保存ボタンを再度押すと、 Lng受注ID = Rec1.Fields("受注ID").Value の行で、 「オブジェクトが正しくないか、現在設定されていません」というエラーになります。 この原因はどうしたら解決出来ますでしょうか? よろしくお願いします。

  • レコードセットに新規追加する

    Access2013 VBAで ■テーブルa ・id ・名前 ・id2 とあり このテーブルのレコードセットを以下のように作ります。 dim Rec = dao.Recordset Set Db = CurrentDB set Rec = Db.OpenRecordset("Select * from [テーブルa] where id2 = " & 2, dbOpenDynaset) この時、このテーブルにid2=2のレコードが何もない場合、この生成したRecで、 Rec.AddNew Rec.Fields("名前").value = "名前" Rec.Update と出来ますでしょうか? よろしくお願いします。

  • 【ADO】mdbのレコードの条件検索

    日付+特定のレコードの値が優のレコードをExcelのセルに表示するマクロを組んでいます。 Option Explicit Const cnsADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Dim dbCon As New ADODB.Connection Dim dbRes As New ADODB.Recordset Dim dbCols As ADODB.Fields Dim strStartData As String, strEndData As String Dim strsql As String Dim Gyo As Long Public Sub testテスト() 'テスト用 strStartData = 20120401 strEndData = 20130331 '接続mdb名 FileName = \\~~テスト.mdb dbCon.Open cnsADO_CONNECT1 & FileName strsql = "SELECT * FROM テーブル名 WHERE 日付 BETWEEN '" & strStartData & "' AND '" & strEndData & "' ORDER BY 日付"   dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly strsql = Replace(strsql, "strEndData", strEndData) strsql = Replace(strsql, "strStartData", strStartData) dbRes.Filter = "座学判定  = '優' or WHERE 実技判定  = '優' "   dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly ←ここでエラー Gyo = 1 Rows("2:65536").ClearContents dbRes.MoveFirst Do Until dbRes.EOF ' 行の変数を加算し必要項目を選択してセルにセット Gyo = Gyo + 1 Set dbCols = dbRes.Fields 'DT_P_点検Tblテーブルよりを抜き出す Cells(Gyo, 1).Value = dbCols("ID").Value Cells(Gyo, 2).Value = dbCols("日付").Value Cells(Gyo, 3).Value = dbCols("座学判定").Value Cells(Gyo, 4).Value = dbCols("実技判定").Value ' 次のレコードに移る dbRes.MoveNext Loop ' レコードセット、データベースを閉じる dbRes.Close Set dbRes = Nothing dbCon.Close Set dbCon = Nothing End Sub dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly の部分でエラーになってしまいます。 「CommandオブジェクトのCommandTextが設定されていません」と表示されます。 dbRes.Filter = "座学判定  = '優' or WHERE 実技判定  = '優' "   ここの部分が無ければ、指定の期間のデータを抽出してくれています。 指定期間 + 特定の部分がTrueの場合の抜き出しをしたいのですが、どこかで指定が不足しているのでしょうか?

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

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

    • ベストアンサー
    • HTML
  • VB6 レコードセットの編集

    フォームにテキストボックスを配置してレコードセットを読み込ませて フォーム上でレコードを編集する物を作成しています。 例として For i = 0 To 10 Rs.Fields(i).Value = text(i).Text Next i Rs.Update のような感じなのですが、mdbに既に値が入っている場合の編集はできても Rs.Fields(i).Valueが空欄の場合に編集が反映されません。 どういった原因があるのでしょうか?

  • ExcelからAccessを操作中のウエイト

    AccessのデータをExcelからSQL文を使って取り出しています。 複数のレコードセットを2次元配列に取り組むために With My_RecSet On Error Resume Next .Open MySQL, My_DB On Error GoTo 0 Application.Wait Now + TimeValue("00:00:01") On Error GoTo RsCloseHdl If .EOF And .BOF Then '該当するレコードセットが一つもない場合 SQL_ext = -1  ←Function名 Exit Function Else SQL_ext = .GetRows End If としています。 私のパソコンの性能の関係かもしれませんが、ウエイトを入れないとたまに、レコードセットが1つ以上あるのにも関わらず.EOF And .BOF で引っ掛かります。1秒以下のウエイトの入れ方を教えて頂けませんか? また、たまに、.Closeさせているにも関わらす、.Open MySQL, My_DBで、すでに開いているものに開けませんとエラーがでるので、やむなく、On Error Resume Nextとしています。限られた情報の提供となりますが、わかる範囲で教えて頂けないでしょうか? よろしくお願いいたします。

  • 起動時設定が【最適化で終了】になっているmdb接続

    環境 Excel2003 Access2003 WindowsXP ツール→起動時の設定 フォーム/ページの表示 【最適化で終了】 これがついているmdbファイルをExcelから接続する方法はありますか? 普段このmdbファイルはshift+Wクリックで開いています。 データを変数に入れてExcel側に表示しようとすると 実行時エラー3021 BOFとEOFのいずれかがTrueになっているか、または現在のレコードが削除されています。要求された操作には現在のレコードが必要です。 と表示されます。 Option Explicit Const cnsADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Public Sub mainデータベース '接続mdb名 FileName = \\~~テスト.mdb dbCon.Open cnsADO_CONNECT1 & FileName strsql = "SELECT * FROM テーブル名 WHERE 西暦年=2013 ORDER BY 開催順" dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly Gyo = 1 Rows("2:65536").ClearContents dbRes.MoveFirst Do Until dbRes.EOF Gyo = Gyo + 1 Set dbCols = dbRes.Fields Cells(Gyo, 1).Value = dbCols("~").Value Cells(Gyo, 2).Value = dbCols("~").Value Cells(Gyo, 3).Value = dbCols("~").Value Cells(Gyo, 4).Value = dbCols("~").Value Cells(Gyo, 5).Value = dbCols("~").Value Cells(Gyo, 6).Value = dbCols("~").Value Cells(Gyo, 7).Value = dbCols("~").Value Cells(Gyo, 8).Value = dbCols("~").Value Cells(Gyo, 9).Value = dbCols("~").Value ' 次のレコードに移る dbRes.MoveNext Loop ' レコードセット、データベースを閉じる dbRes.Close Set dbRes = Nothing dbCon.Close Set dbCon = Nothing End Sub dbRes.MoveFirstの部分でエラーが出ます。 記述がおかしいのでしょうか?

  • レコードセットのループ処理でエラー・・・

    簡単なことだと思うのですが、解決できなくこまっております。お助けください。 以下のコーディングで、データの取得は出来ているのですが、「Do Until rs1.EOF」でエラーとなります。 SOURCE----------------------------------------- sql = "Select No from t01" Recordset.Open sql, dbc, 3 If rs1.EOF Then Response.Write "データナシ<BR>" ←表示されません。 else Do Until rs1.EOF ←この行でエラーとなります。 Response.Write "No=" & rs1("No").Value rs1.MoveNext Loop end if Error-------------------------------------------- ADODB.Field (0x80020009) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 因みに、Do Untilを使用せず  Response.Write "No=" & rs1("No").Value  rs1.MoveNext  Response.Write "No=" & rs1("No").Value と記述すると正常にデータが表示されます。 「Do Until rs1.EOF」で発生するエラーの回避方法を御教示願います。

  • 構造体からレコードセットへの代入

    下のような構造体があり、その値をレコードセットに代入したいと思います。 構造体内の変数名とレコードセットのフィールド名が同じなので名前を 利用して簡潔に書けないかと思うのですが、これは可能でしょうか? '構造体 Type Product  Price As Long  Name As String  Size As Single End Type '変数の宣言 Dim Car As Product 'レコードセットへの代入 With Product  RS("Price").Value = .Price  RS("Name").Value = .Name  RS("Size").Value = .Size End With

専門家に質問してみよう