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

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

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

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

SQL

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

ASP

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

Q&A

解決済

2回答

11829閲覧

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

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)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

0グッド

0クリップ

投稿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

1<%@Language="VBScript" %> 2<html> 3<head> 4</head> 5<body bgcolor="ffffff"> 6<BR><center> 7<BR> 8<P align="center"> 9<FONT size="+1" face="MS ゴシック" color="#666666"><B>「全体について」投稿ページ</B></FONT> 10</P> 11 12<table width="95%" cellspacing="10"> 13<% 14Sub disp(ByVal rss) 15 Do While Not rss.EOF 16 Response.Write "<tr><td bgcolor='#FFF7F7'>" 17 Response.Write "<div style='text-indent:" & rss("level")*20 & "px'>" 18 If rss("title")="削除済" Then 19 Response.Write rss("id") & ":<span style='color:#FF99AA'>削除済</span> " 20 Response.Write "(" & FormatDateTime(rss("sdat"),0) & ") " 21 Else 22 Response.Write " ┗ "&rss("id") & ":<a href='q&a_003.asp?id=" & rss("id") & "'>" 23 Response.Write rss("title") & "</a> " 24 Response.Write rss("nam") & "(" & FormatDateTime(rss("sdat"),0) & ") " 25 If rss("flg") < 4 then 26 Response.Write " <img src='イラスト.gif'> " 27 End If 28 End If 29 Response.Write "</div></td></tr>" 30 SQL_S="SELECT * FROM Q-表示 Where parent=" & rss("id") & " ORDER BY sdat ASC" 31 Set rs_s=db.Execute(SQL_S) 32 If rs_s.EOF=False Then Call disp(rs_s) 33 rss.MoveNext 34 Loop 35End Sub 36If Request.QueryString("cnt")="" Then 37 cnt=1 38 page=1 39Else 40 cnt=CInt(Request.QueryString("cnt")) 41 tmpCnt=cnt-15 42 page=CInt(Request.QueryString("page")) 43End If 44Set db=Server.CreateObject("ADODB.Connection") 45Set rs=Server.CreateObject("ADODB.Recordset") 46db.Provider="Microsoft.ACE.OLEDB.12.0" 47db.Mode=3 48db.ConnectionString=Server.MapPath("master.mdb") 49db.Open 50rs.Open "SELECT * FROM Q-表示 WHERE parent=0 ORDER BY sdat DESC",db,3,2 51rs.AbsolutePosition=cnt 'エラーの出た部分 52Do While Not rs.EOF 53 Response.Write "<tr><td bgcolor='#F5FFFF'>" 54 If rs("title")="削除済" Then 55 Response.Write rs("id") & ":<span style='color:#FF99AA'>削除済</span> " 56 Response.Write "(" & FormatDateTime(rs("sdat"),0) & ") " 57 Else 58 Response.Write rs("id") & ":<a href='q&a_003.asp?id=" & rs("id") & "'>" 59 Response.Write rs("title") & "</a> " 60 Response.Write rs("nam") & "(" & FormatDateTime(rs("sdat"),0) & ") " 61 If rs("flg") < 4 then 62 Response.Write " <img src='イラスト.gif'> " 63 End If 64 End If 65 Response.Write "</td></tr>" 66 SQL1="SELECT * FROM Q-表示 Where parent=" & rs("id") & " ORDER BY sdat ASC" 67 Set rs1=db.Execute(SQL1) 68 If rs1.EOF=False Then Call disp(rs1) 69 rs.MoveNext 70 cnt=cnt+1 71 If cnt=page*15+1 Then Exit Do 72Loop 73Response.Write "</table>" 74Response.Write "<div align='center'>" 75If page>1 Then 76 Response.Write "<a href='q&a_001.asp?cnt=" & tmpCnt & "&page=" & page-1 77 Response.Write "'><img src='next.gif' alt='前ページへ' border='0' /></a> " 78End If 79Response.Write " <a href='q&a_002.asp'><img src='note.gif' width='40' height='40'" 80Response.Write " alt='新規作成' border='0'/></a> " 81If Not rs.EOF Then 82 Response.Write " <a href='q&a_001.asp?cnt=" & cnt & "&page=" & page+1 83 Response.Write "'><img src='prev.gif' alt='次ページへ' border='0' /></a>" 84End If 85Response.Write "</div>" 86%> 87<BR> 88<BR> 89</body> 90</html> 91

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

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

回答2

0

ベストアンサー

rs.Open "SELECT ~" の前に

rs.CursorLocation = 3 ' adUseClient

を入れてみてください。

ダメだったら、AbsolutePosion をやめて、MoveNext を繰り返し実行して、カレントレコードを移動してください。
(両方動くなら AbsolutePosition のほうが速いと思われます。)

投稿2020/06/02 08:03

KOZ6.0

総合スコア2622

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ka999

2020/06/02 08:06

お二方ともご教授ありがとうございました。 こちらの方法で解決しましたのでベストアンサーを送らせていただきます。
sazi

2020/06/02 09:02 編集

データベースエンジンですが、accessをインストールしなくても標準で含まれていました。 この点は訂正しておきます。 プログラムの変更を極力少なくするためには、古い版(jet)をインストールしないと駄目な点は変わりありませんが。 混乱させてしまって申し訳ありません。
KOZ6.0

2020/06/02 15:39

Jet OLEDB は、たしか 32bit バージョンが標準で入ってたと思いますよ。
sazi

2020/06/02 18:30

ACE 12.0が下位互換があるので、jetも必要ないみたいですね。
ka999

2020/06/03 00:10

>saziさん 注目するべき点、また単語の意味など、調べることが出来たので助かりました。 コードの大部分がわからないことだらけで、一から調べていると時間がかかりすぎてしまい、ピンポイントで問題の原因と解決を調べています。穴だらけの知識の私に付き合っていただいてありがとうございました。
guest

0

なんか構成がしっかり構築されていない感じですね。

AccessのファイルをAccessプログラムを使わずに使用できる処理だと思っています。

Accessのデータファイルにアクセスする側には最低ドライバーがあればいいですけど、accessのファイル構造にアクセスするには、データベースエンジンが必要です。
97とかだとjetですけど、以降はACEです。
それはインストールされていないと駄目です。

以下参考
ASP.NETからAccessを使用してPDF作成した2(Access Visual Studio設定)
AccessがインストールされていないPCでmdb・accdbを見る方法
Microsoft Access(.mdb、.accdb)のODBC、OLEDBドライバーに関するまとめ

投稿2020/06/01 08:44

編集2020/06/01 08:51
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ka999

2020/06/02 00:23

事前にMicrosoft Access データベース エンジン 2010 再頒布可能コンポーネントをインストールしていました。参考にも貼っていただいている、 Microsoft Access(.mdb、.accdb)のODBC、OLEDBドライバーに関するまとめ というサイトを参考にしています。 新サーバーのODBCデータソースアドミニストレーター(64ビット)で確認するとドライバーに Microsoft Access Driver (*.mdb, *.accdb) が入っています。ファイルがACEODBC.DLLとなっているのですがACEとはこれのことですか?
sazi

2020/06/02 00:41

> Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントをインストール これはドライバーです。どこにインストールしたのですか?構成的には新サーバーであるべきですが。 ACEはデータベースエンジンです。ドライバーではありません。
ka999

2020/06/02 00:48 編集

新サーバーにインストールしています。 Access本体のプログラムを購入しないと手に入らないものですか?
sazi

2020/06/02 01:06 編集

リンク先を見て下さい。 ただ、データベースはaccessである必要があるのですか? SQLserverの無償版とかフリーのデータベースは視野に入れないのですか?
ka999

2020/06/02 01:20

>データベースはaccessである必要があるのですか? 必ずしもAccessである必要は無いかもしれませんが、できるだけソースコードをいじらずに出来たらと思い、旧サーバーと同じようにしています。 稼働調整ができることがわかればAccessの購入も会社に申請すれば可能なのでこのままAccessを使用したいと考えています。
sazi

2020/06/02 01:27 編集

> できるだけソースコードをいじらずに出来たら 現状とは同じで、新サーバーの環境に合わせるという方向性ですよね。 なのにAccessは不要と思われたのはなぜなのでしょうか? 新サーバーにAccess97をインストールして動作するかどうかは試されたのですか? それが一番変更が少なくて済むはずですけど。 動作するなら旧のAccessのライセンスが使えるはずですし。
ka999

2020/06/02 01:40

>Accessは不要と思われたのはなぜなのでしょうか? Accessが不要と思ったのはここには記載していませんが、他の部分でMicrosoft Access Driver (*.mdb, *.accdb)を使ってmdbファイルの中身を読み込むことが出来ていたからです。なくても動作するならわざわざ購入する必要は無いのかと思っていました。 >動作するなら旧のAccessのライセンスが使えるはずですし。 旧サーバーのAccessのライセンスが使えるのは失念していました。 根本的に知識不足、経験不足だと思っています。
ka999

2020/06/02 01:46

新サーバーにAccess97をインストールして動作するか試してみます。 旧のライセンスを使ってインストールするのも経験がないので、調べながらやることになり、結果の報告は遅くなると思います。
sazi

2020/06/02 06:07 編集

Access97のサポートは終了していますから、それでも良ければという前提ですけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問