Accessの100件のデータを10行づつブラウザに表示したいのですが、rs.PageCount、rsRecordCountなど色々と試しましたが正しい結果が得られず
困っています。

rs.AbsolutePage、Rs.PageSizなども試してみましたが、やはり結果は-1しか返されません。

Set db1=Server.CreateObject("ADODB.Connection")
db1.Provider="Microsoft.Jet.OLEDB.4.0"
db1.ConnectionString=Server.MapPath("../master.mdb")
db1.Mode=1
db1.Open
'
Set rs1=Server.CreateObject("ADODB.Recordset")
Rs1.Pagesize = 5
'
keyword = "ABC"
'
SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'"
Set Rs1=db1.Execute(SQL1a)

Response.Write rs1.PageCount

このようなリストで試しています。よき方法があれば是非 教えて下さい。
最終的にはSQL 7.0に置き換える予定です。

宜しく、お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ヒントだけ



RecordCountプロパティはSupportsメソッドのadApproxPositionとadBookmarkが TrueだとRecordCountプロパティがサポートされます。

で、これらをサポートしているのがRecordsetオブジェクトのCursorTypeが「adOpenKeyset」または「adOpenStatic」を指定した時のみとなります。

上記ソースではCursorTypeが指定されていないため
カーソルタイプを指定していない状態(adOpenUnspecified)となり、RecordCountプロパティの結果が -1となっています。

なんか小難しい説明になりましたが、実際にMSDN等を参考に試行錯誤してみると、わかっていただけると思います。

参考になれば
    • good
    • 0
この回答へのお礼

早速の回答 ありがとう、ございます。
参考に試してみます。

お礼日時:2002/02/11 16:45

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QADODB.Recordset エラー '800a0cc1' が出てしまいます。

はじめまして。SQL文について質問です。
以下の文で、
'2009/04/01 0:0:0'~'2009/04/21 23:59:59'の間にあるデータのうち
最も時間の古いものを取りたいのですが、エラーが出てしまいました。
ひととおり、調べたのですが、基本的すぎて分かりませんでした。
御指摘いただけるとうれしいです。

SELECT sID,KANJINAME,KANANAME,WARDNAME,subject,MAX(D_time) FROM Q_Reg1Data
WHERE ((D_time >= CDate('2009/04/01 0:0:0')) AND (D_time <= CDate('2009/04/21 23:59:59')))
GROUP BY sID,KANJINAME,KANANAME,WARDNAME,subject

ADODB.Recordset エラー '800a0cc1'

Aベストアンサー

データベースの相手は何ですか?Accessですか?Oracleですか?
ADOだからといって、相手のデータベースが解釈できない関数は使用できません。
⇒CDate関数を気にしています。

文面には相手のデータベースが書いてありませんので、以下は想像なので、失礼な点があるかもしれません。

CDate関数を使っているところからAccessかと思いますが、単にVBだからという勘違いはないでしょうか?

もし、相手のデータベースがOracleの場合は、
D_time>=TO_DATE('2009/04/01','YYYY/MM/DD') AND D_time<TO_DATE('2009/04/21','YYYY/MM/DD')

また、MySQLの場合は、
D_time>=DATE_FORMAT('2009/04/01','%Y/%m/%d') AND D_time<DATE_FORMAT('2009/04/21','%Y/%m/%d')

などと使い分ける必要があります。

ちなみに、
>最も時間の古いものを
MIN(D_time)では?

データベースの相手は何ですか?Accessですか?Oracleですか?
ADOだからといって、相手のデータベースが解釈できない関数は使用できません。
⇒CDate関数を気にしています。

文面には相手のデータベースが書いてありませんので、以下は想像なので、失礼な点があるかもしれません。

CDate関数を使っているところからAccessかと思いますが、単にVBだからという勘違いはないでしょうか?

もし、相手のデータベースがOracleの場合は、
D_time>=TO_DATE('2009/04/01','YYYY/MM/DD') AND D_time<TO_DATE('20...続きを読む

QGlobal.asaxで Server.CreateObject("ADODB.Connection")が出来ない

ASP→ASP.netへ移行作業をしています。

Global.asaで、
set Application("DB") = Server.CreateObject("ADODB.Connection")
を、
Global.asaxで、
Application("DB") = Server.CreateObject("ADODB.Connection")
としたのですが、エラーで、
「コンポーネント 'ADODB.Connection' を作成できません。アパートメント スレッド コンポーネントは、<%@ Page aspcompat=true %> ページ ディレクティブを含むページでのみ作成できます。 」
となってしまします。
<%@ Page aspcompat=true %>を記述すればよいのかと思い、Global.asax中に記述しましたが、エラーになってしまいました。
'ADODB.Connection'を作成するには、どうすればよいでしょうか?

Aベストアンサー

ASP.NETではADO.NETを使いましょう。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1662698

また、アプリケーション単位でConnectionを持つのは、同時アクセスがあった場合にバグります(経験者)

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1662698

QADODB.Recordsetを使用してExcelのデータを取得

よろしくお願いします。
以下のコードで、最終行で「エラーを特定できません」というエラーが表示されるのですが、
エラーが表示される時とされない場合があります。

Dim ObjRS
Set ObjRS = Server.CreateObject("ADODB.Recordset")
Dim StrConn
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName & ";"
Dim StrSQL
StrSQL = "SELECT * FROM " & EXCEL_DATA_RANGE_NAME
ObjRS.Open StrSQL, StrConn, 0

最初に実行したときは、エラーも表示されず、期待した結果を得ることができるのですが、再度実行したら「エラーを特定できません」となり、
1分ほど時間をおくとまたエラーを起こさずに動作するという感じです。
まったく原因が分からず、困っております。
宜しくお願いいたします。

よろしくお願いします。
以下のコードで、最終行で「エラーを特定できません」というエラーが表示されるのですが、
エラーが表示される時とされない場合があります。

Dim ObjRS
Set ObjRS = Server.CreateObject("ADODB.Recordset")
Dim StrConn
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName & ";"
Dim StrSQL
StrSQL = "SELECT * FROM " & EXCEL_DATA_RANGE_NAME
ObjRS.Open StrSQL, StrConn, 0

最初に...続きを読む

Aベストアンサー

>IISの設定は変更できない状況ですので、何とかIISの設定を変更せずに解決したいのですが。。。

設定ができないまでも、権限設定の内容を確認するだけでもできないでしょうか?

後、この件で気になったのは同時アクセスです。
別のユーザが該当ASPに対し、このExcelのロード処理をつかんでしまっている可能性は考えられないですか?
1人でローカルPCでアクセスしている時は、自分だけしかアクセスしないのでこのエラーは発生しませんが、恐らく、実稼働サーバーにリリースして動かした際、複数のユーザが同時にアクセスしますので、Excelファイルが排他ロックかかっている可能性が高いかなと思います。

やはり、私が言っていた権限の話とExcelの排他アクセスに関することが、MSのサイトにも掲載されてました。
http://support.microsoft.com/kb/195951/ja

MSのサイトで掲載されているエラーの現象とまったく同じものが掲載されていますので参考になるのではないかと思います。
なので、サーバーの権限設定と排他制御、この2つがクリアできないと、問題は解決しないと言えると思います。

稼働サーバーの管理者に依頼し、まずはExcelの権限、ファイルの排他状況を確認してみてください。
「Excelファイルが存在するのは間違いない」ということが確認できたのですから、権限設定の確認もできるはずです。

稼働サーバーの設定は避けたいとお思いな気持ちや事情はわかりますが、こういったものは、一度設定してしまえば、二度と変更する必要がないものですので、ビジネス上の政治的な話もあるかもしれませんが、そこはサーバー管理者等と調整して、設定を行えるよう調整すべきです。

エラーの原因が環境にあるのに、環境を変更できません というより、そのアプリやWebサイトを使っている利用者側の立場だったら、動かないアプリ・Webサイトを見せられている方が損害が大きいはずです。

プログラムと環境設定は常にセットで動くものであるということを
肝に銘じて頂きたいです。宜しくお願いします。

>IISの設定は変更できない状況ですので、何とかIISの設定を変更せずに解決したいのですが。。。

設定ができないまでも、権限設定の内容を確認するだけでもできないでしょうか?

後、この件で気になったのは同時アクセスです。
別のユーザが該当ASPに対し、このExcelのロード処理をつかんでしまっている可能性は考えられないですか?
1人でローカルPCでアクセスしている時は、自分だけしかアクセスしないのでこのエラーは発生しませんが、恐らく、実稼働サーバーにリリースして動かした際、複数のユーザが...続きを読む

Qasp.NET初心者です。「 ’Context’は’○○○’のメンバで

asp.NET初心者です。「 ’Context’は’○○○’のメンバではありません。」というエラーが出て困っています。
「Inherits」が原因のようなのですが、役割がいまいち分かりません。
ご教授よろしくお願いします。

【あ.aspx】
1行目:<%@ Page Language="VB" AutoEventWireup="false" CodeFile="answer.aspx.vb" Inherits="○○○" %>
・・・中略・・・
<!-- ヘッダー -->
<div id="header">
<h1><%=SiteMap.CurrentNode.Title%>!</h1>  ←sitemapで指定したタイトルをヘッダに表示。
</div>

=============================================================
【Web.siteMap】
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode
url="def.aspx"
title="Welcome"
description="homepage">
<siteMapNode
url="あ.aspx"
title="ようこそ"
description="あいう" /> ←何をいれてよいのでしょうか?
</siteMapNode>
</siteMap>

=============================================================
【Web.config】
<siteMap enabled="true">
<providers>
<add name="JaSiteMapProvider"
type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" />
</providers>
</siteMap>

=============================================================

よろしくお願いします。

asp.NET初心者です。「 ’Context’は’○○○’のメンバではありません。」というエラーが出て困っています。
「Inherits」が原因のようなのですが、役割がいまいち分かりません。
ご教授よろしくお願いします。

【あ.aspx】
1行目:<%@ Page Language="VB" AutoEventWireup="false" CodeFile="answer.aspx.vb" Inherits="○○○" %>
・・・中略・・・
<!-- ヘッダー -->
<div id="header">
<h1><%=SiteMap.CurrentNode.Title%>!</h1>  ←sitemapで指定したタイトルをヘッダに表示。
</div>

==...続きを読む

Aベストアンサー

answer.aspx.vb の中で定義している○○○が
名前空間.クラス、あるいはソリューション.クラスに
なっていないと思います。クラス名を変更したのでは?
リファクタリングしても、この部分は更新されないので、
このエラーが出ます。リファクタリングのバグだと言い
たいですね。でも、直さないでしょうけど…

QASPプログラミングでADODB.Connection (0x800A0E79)エラーが発生

ASP+MSDE 実用Webアプリケーション作成ガイド「ASP実践プログラミング入門」
と言う本を頼りにASPを勉強中です。

現在は、
(1) SQL Server2000内にDBとTable(user_info)を作成。
(2) global.asaファイルを設置。
(3) 「ユーザ登録」aspを実行。(user_infoに追加された)
(4) 「ログオン」aspを実行。

と進めていますが、(4)を実行しID+パスワードを入力後に次のような
エラーがブラウザ上に表示されます。

どなたかお助け頂きたくお願いします。


Q1)『ADODB.Connection (0x800A0E79)オブジェクト・・』と怒られている
  ようですが、何が原因なのでしょうか?

Q2) 解決に向けて調べるべき要点はどこでしょうか?


■発生したエラーはここから■
(IE上の表示です)

ページを表示できません
接続しようとするページに問題があるため、そのページを表示できません。
---------------------対処方法

・[更新] をクリックするか、後で再度実行してください。
・次のホームページ 1**.**.***.**6を開き、 必要な情報が記載されたページ
 へのリンクを探します。
HTTP 500.100 - 内部サーバー エラー - ASP エラー
インターネット インフォメーション サービス
---------------------
技術情報 (サポート担当者用)
・エラー タイプ
 ADODB.Connection (0x800A0E79)
 オブジェクトが開いている場合は、操作は許可されません。
 /mailhen/logon.asp, line 4

・ページ
 POST 27 bytes to /mailhen/logon.asp

・POST Data:
 user=mura****&pass=r*****k

■ここまで■

/mailhen/logon.asp, line 4
1:<% If Request.Form("user") <> "" Then
2: user_id = Request.Form("user")
3: password = Request.Form("pass")
4: adcn.Open Application("DBCN")
5: adrs.Open "select * from user_inf

ASP+MSDE 実用Webアプリケーション作成ガイド「ASP実践プログラミング入門」
と言う本を頼りにASPを勉強中です。

現在は、
(1) SQL Server2000内にDBとTable(user_info)を作成。
(2) global.asaファイルを設置。
(3) 「ユーザ登録」aspを実行。(user_infoに追加された)
(4) 「ログオン」aspを実行。

と進めていますが、(4)を実行しID+パスワードを入力後に次のような
エラーがブラウザ上に表示されます。

どなたかお助け頂きたくお願いします。


Q1)『ADODB.Connection (0x800A0E79)オ...続きを読む

Aベストアンサー

murasacoさん、はじめまして^^

コネクションエラーについてですが、DBまでのパスがあっているかどうかや、ファイル名の指定にミスが無いかどうかをまず確認すると良いと思います。
あとはSQLを実行させる際に、入力された文字などが正しく入ってきているかどうかを確認する為に、Response.writeでSQLの入っている変数を表示してみると良いと思います。

データベースソフトはACCSESSですかね?
その場合はファイルがロックされていないかどうかも確認してみると良いかもしれません^^


おすすめ情報