質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

解決済

エラーメッセージ:現在の Recordset はブックマークをサポートしてません。プロバイダーか、選択されたカーソルタイプの限界の可能性があります。

ka999
ka999

総合スコア9

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

2回答

0評価

0クリップ

4472閲覧

投稿2020/06/01 06:50

編集2020/06/02 06:10

人が作ったシステムを古いサーバーから別のサーバーに移行する作業をしています。
test.mdbファイルからSQL文を使って必要な情報を表示するコードです。

問題のエラー文 ADODB.Recordset エラー '800a0cb3' 現在の Recordset はブックマークをサポートしてません。プロバイダーか、選択されたカーソルタイプの限界の可能性があります。 test.asp, 行 51

エラーの出た部分
rs.AbsolutePosition=cnt

ここからどのように修正したらいいか分からず、困っています。

記述以外に必要な情報があれば追記します。よろしくお願いします。

追記情報.

 新サーバーにAccessは入っていません。
旧サーバーのAccessはMicrosoft(R) Access 97です。

以下このエラーになるまでに試したことを記載します。

ADODB.Connection エラー '800a0e7a' プロバイダーが見つかりません。正しくインストールされていない可能性があります。 test.asp, 行 49

エラーの出た部分
db.Open

対処したこと
db.Provider="Microsoft.Jet.OLEDB.4.0"
から
db.Provider="Microsoft.ACE.OLEDB.12.0"
に変更しました。

Microsoft Access Database Engine エラー '80040e37' 入力テーブルまたはクエリ '×××××' が見つかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください。 test.asp, 行 50

エラーの出た部分
rs.Open "SELECT * FROM ××××× WHERE parent=0 ORDER BY sdat DESC",db,3,2

対処したこと
test.mdbファイルの保存形式を
Access97形式から
Access2003形式に保存して置き換えました。

以上を行い、問題のエラー文になりました。

追記.コード全体

ASP

<%@Language="VBScript" %> <html> <head> </head> <body bgcolor="ffffff"> <BR><center> <BR> <P align="center"> <FONT size="+1" face="MS ゴシック" color="#666666"><B>「全体について」投稿ページ</B></FONT> </P> <table width="95%" cellspacing="10"> <% Sub disp(ByVal rss) Do While Not rss.EOF Response.Write "<tr><td bgcolor='#FFF7F7'>" Response.Write "<div style='text-indent:" & rss("level")*20 & "px'>" If rss("title")="削除済" Then Response.Write rss("id") & ":<span style='color:#FF99AA'>削除済</span> " Response.Write "(" & FormatDateTime(rss("sdat"),0) & ") " Else Response.Write " ┗ "&rss("id") & ":<a href='q&a_003.asp?id=" & rss("id") & "'>" Response.Write rss("title") & "</a> " Response.Write rss("nam") & "(" & FormatDateTime(rss("sdat"),0) & ") " If rss("flg") < 4 then Response.Write " <img src='イラスト.gif'> " End If End If Response.Write "</div></td></tr>" SQL_S="SELECT * FROM Q-表示 Where parent=" & rss("id") & " ORDER BY sdat ASC" Set rs_s=db.Execute(SQL_S) If rs_s.EOF=False Then Call disp(rs_s) rss.MoveNext Loop End Sub If Request.QueryString("cnt")="" Then cnt=1 page=1 Else cnt=CInt(Request.QueryString("cnt")) tmpCnt=cnt-15 page=CInt(Request.QueryString("page")) End If Set db=Server.CreateObject("ADODB.Connection") Set rs=Server.CreateObject("ADODB.Recordset") db.Provider="Microsoft.ACE.OLEDB.12.0" db.Mode=3 db.ConnectionString=Server.MapPath("master.mdb") db.Open rs.Open "SELECT * FROM Q-表示 WHERE parent=0 ORDER BY sdat DESC",db,3,2 rs.AbsolutePosition=cnt 'エラーの出た部分 Do While Not rs.EOF Response.Write "<tr><td bgcolor='#F5FFFF'>" If rs("title")="削除済" Then Response.Write rs("id") & ":<span style='color:#FF99AA'>削除済</span> " Response.Write "(" & FormatDateTime(rs("sdat"),0) & ") " Else Response.Write rs("id") & ":<a href='q&a_003.asp?id=" & rs("id") & "'>" Response.Write rs("title") & "</a> " Response.Write rs("nam") & "(" & FormatDateTime(rs("sdat"),0) & ") " If rs("flg") < 4 then Response.Write " <img src='イラスト.gif'> " End If End If Response.Write "</td></tr>" SQL1="SELECT * FROM Q-表示 Where parent=" & rs("id") & " ORDER BY sdat ASC" Set rs1=db.Execute(SQL1) If rs1.EOF=False Then Call disp(rs1) rs.MoveNext cnt=cnt+1 If cnt=page*15+1 Then Exit Do Loop Response.Write "</table>" Response.Write "<div align='center'>" If page>1 Then Response.Write "<a href='q&a_001.asp?cnt=" & tmpCnt & "&page=" & page-1 Response.Write "'><img src='next.gif' alt='前ページへ' border='0' /></a> " End If Response.Write " <a href='q&a_002.asp'><img src='note.gif' width='40' height='40'" Response.Write " alt='新規作成' border='0'/></a> " If Not rs.EOF Then Response.Write " <a href='q&a_001.asp?cnt=" & cnt & "&page=" & page+1 Response.Write "'><img src='prev.gif' alt='次ページへ' border='0' /></a>" End If Response.Write "</div>" %> <BR> <BR> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

sazi

2020/06/01 07:23

利用している新/旧のAccessのバージョンはそれぞれ何ですか?
ka999

2020/06/01 07:50

新サーバーにAccessは入っていません。 旧サーバーのAccessはMicrosoft(R) Access 97です。
sazi

2020/06/01 07:59 編集

えーと、accessを使用してAccessのデータを移行しようとしているんですね? で、その場合のAccessのバージョンが違うって事?
ka999

2020/06/01 07:58

もし、mdbファイルを参照、修正などする場合は他のPCから新サーバーに入って操作します。
sazi

2020/06/01 08:02 編集

えーと、新サーバーにaccessは無いのですよね? 「新サーバーに入って」とはリモートデスクトップですか? それとも、新サーバーにaccessのファイルが入っていて、共有として参照するって事ですか?
ka999

2020/06/01 08:01

Accessのデータだけではなく、システムすべてを新サーバーにコピーして稼働調整を行っています。 古いサーバーは使用しなくなる予定です。
ka999

2020/06/01 08:02

新サーバーにAccessは入れずに使用します。
sazi

2020/06/01 08:06

システム構成として、旧サーバーのファイル資産を新サーバーに移動するというのは分かりましたが、その際のaccessのファイルは、どのように参照するのでしょうか? 旧のシステムではサーバーに入っていたaccessを経由して利用していたのでしょうか?
sazi

2020/06/01 08:08

そもそもaccessを作り変えている意図が分かりません。 accessのプログラムもバージョンアップするのは、accessのバージョンを上げて使用するからですよね?
ka999

2020/06/01 08:09

リモートデスクトップです。 新サーバーにAccessのファイルが入っており、リモートデスクトップでAccessの入ったPCから操作します。複数のPCから操作する可能性があるためAccessのバージョンはバラバラになってしまう可能性があります。 ですが、基本は直接mdbファイルを操作するのではなく社内Webから対象のURLにアクセスしてそこでファイルの一部をSQLで表示することになります。
ka999

2020/06/01 08:12

Accessnoプログラムのバージョンアップをしたのは、試行錯誤の結果うまくいった時があったので今回も試したのですが、もし不要なら元のバージョンのファイルのまま使用しても大丈夫です。
sazi

2020/06/01 08:16

リモートデスクトップでサーバーに入るなら、accessが必要になるのはサーバーですよ
sazi

2020/06/01 08:18 編集

> 社内Webから対象のURLにアクセスしてそこでファイルの一部をSQLで表示 これはAccessで行うのではないですよね。 構成がいまいちわかりません。
sazi

2020/06/01 08:21 編集

エラー自体は、必要なバージョンのaccessが入っていないのに実行しているように見えるので、構成を確認したいのですけど。
ka999

2020/06/01 08:25

すいません勘違いしていました。リモートデスクトップで入るのではなく、操作PCでネットワークから新サーバーのフォルダにアクセスして操作PCのAccessでmdbファイルを開きます。 こちらは、普段使用する操作ではなく、もし必要ならという意味です。 普段の操作ではAccessを使わずにASPファイルでデータベース接続してSQL文でファイルを操作します。
sazi

2020/06/01 08:36 編集

> Accessを使わずにASPファイルでデータベース接続してSQL文でファイルを操作します。 では質問で行おうとしているのは何のための処理ですか? Aspでの処理の事なら、該当バージョンのAccessがインストールされている必要があると思いますけど、新構成ではaccessはどこにもインストールしていないのではないですか?
ka999

2020/06/01 08:37

AccessのファイルをAccessプログラムを使わずに使用できる処理だと思っています。 知識不足で申し訳ないのですが、mdbファイルはデータベースファイルで合っていますよね? 一緒に考えていただき、ありがとうございます。申し訳ありませんが、今日はこの辺で終了して明日また考え直したいと思います。ありがとうございました。
ka999

2020/06/01 08:41

>Aspでの処理の事なら、該当バージョンのAccessがインストールされている必要があると思いますけど、新構成ではaccessはどこにもインストールしていないのではないですか? Accessプログラムがなくても動作すると思っていました。また調べなおしてみます。
KOZ6.0

2020/06/02 05:21

エラーが出ている行のみ提示しても再現できません。 再現できる最低限のコードを提示しては?
ka999

2020/06/02 06:11

コード全体を追記しました。
KOZ6.0

2020/06/02 07:12

それほど長いコードではないので良かったですが、こういう掲示板では、コードを整理して投稿するようにしてください。 Q-表示 はクエリーかと思いますが、master.mdb に存在していますか? 全角文字が問題になることもあるので、名称を変更するとどうでしょうか?
ka999

2020/06/02 07:23

>こういう掲示板では、コードを整理して投稿するようにしてください。 申し訳ないです、以後気を付けます。 >Q-表示 はクエリーかと思いますが、master.mdb に存在していますか? master.mdbにQ-表示は存在しています。 >全角文字が問題になることもあるので、名称を変更するとどうでしょうか? 『Q-表示』から『QHyouji』に変更して試しましたが、同じエラーが出ました。
KOZ6.0

2020/06/02 07:32

同じエラーというのは「 入力テーブルまたはクエリ '×××××' が見つかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください。 」ですか? それともタイトルのエラーですか?
ka999

2020/06/02 07:38

タイトルのエラーです。 こちらです。 「現在の Recordset はブックマークをサポートしてません。プロバイダーか、選択されたカーソルタイプの限界の可能性があります。」
ka999

2020/06/02 07:43

rs.AbsolutePosition=cnt 'エラーの出た部分 この部分をコメントアウトするとエラーにならず、旧サーバーの時と同じようmaster.mdbの内容が表示されました。 この部分が無くても問題は起こらないでしょうか? cntの中身はループごとに1,2,3...と増えていました。
KOZ6.0

2020/06/02 07:44

こちらでは再現できていないのですが、rs.Open "SELECT ~" の前に rs.CursorLocation = 3 を入れるとどうでしょうか?
ka999

2020/06/02 07:47

>rs.CursorLocation = 3 こちらを入れるとエラーがなくなりmaster.mdbの内容も表示されました。
KOZ6.0

2020/06/02 07:50

微妙にレスがすれ違いましたが、動いたならよかったです。
ka999

2020/06/02 07:53

提案してくださったものと比較してどの方法がいいか試してみます。 ありがとうございました。
ka999

2020/06/02 07:56

最後に質問とは関係なくこのサイトの仕様なんですが、回答ではない部分で解決したのですがベストアンサーってどうしたらいいですか?
KOZ6.0

2020/06/02 07:59

出来レースっぽいですが回答欄に書いときます。
ka999

2020/06/02 08:01

>出来レースっぽいですが回答欄に書いときます。 助かったのは事実ですので。 ありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。