前回、指示をされた内容ででテストを試みましたがやはり、結果は-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)
Rs1.CursorType = adOpenKeySet
intP = Rs1.RecordCount
Response.Write "RecordCount = " & intp & "<BR>"

MSDNの説明でRecordCountなど参照しましたが理解不足でしょうか ?

宜しく、お願いします。

A 回答 (1件)

AccessってadOpenKeySetをサポートしていなかったような・・・、って試したわけではないので保証できませんが(^^;;



直接コード書いているので動作保証できませんが
以下のようにすれば動くような気がします
#エラー出たらすいません

Set db1=Server.CreateObject("ADODB.Connection")
db1.Provider="Microsoft.Jet.OLEDB.4.0"
db1.ConnectionString=Server.MapPath("../master.mdb")
db1.Mode=1
db1.Open

keyword = "ABC"
SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'"

Set rs1=Server.CreateObject("ADODB.Recordset")
rs1.Open SQL1a, db1, adOpenStatic, adLockReadOnly, adCmdText

rs1.Pagesize = 5
intP = Rs1.RecordCount
Response.Write "RecordCount = " & intp & "<BR>"

rs1.Close
Set rs1=Nothing

db1.Close
Set db1=Nothing

あと各定数(adOpenStaticなど)は別途宣言する必要があります。
    • good
    • 0
この回答へのお礼

hequil さん 何度も助けて頂き、本当に有難うごさます。
何とか以下のようなリストで思い通りの結果を得られました。

 これが怪しくて adOpenStatic, adLockReadOnly うまく変換されていない
ようです。

Set rs1=Server.CreateObject("ADODB.RecordSet")
Set db1=Server.CreateObject("ADODB.Connection")
db1.Provider="Microsoft.Jet.OLEDB.4.0"
db1.ConnectionString=Server.MapPath("../master.mdb")
db1.Mode=1
db1.Open
'
SQL1a = "SELECT top 10 * FROM ma01pf WHERE ma01mesg Like '%" & aryKey & "%'"
rs1.open SQL1a,db1,3,3

お礼日時:2002/02/12 21:04

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

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

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 エラー '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...続きを読む

QすべてのページにServer.CreateObjectは実用的?

IIS5.0 VbScriptで開発を行っています。

自作したCOMアプリケーションをすべてのページで使用したいと考えているため、インクルードファイル内に、Server.CreateObjectによる自作dllオブジェクトの生成を行うコードを記述し、そのファイルをすべてのページにインクルードしようと考えています。

二つのブラウザを立ち上げ、それぞれで複数のページ遷移したところ、大きなメモリの上昇がみられず、上昇してもすぐに下降するため実用にたえると考えています。

それ以外になにか気になるがございましたらお教えください。

Aベストアンサー

こんにちは。

>自作したCOMアプリケーションをすべてのページで使用し>たいと考えているため、インクルードファイル内に、>Server.CreateObjectによる自作dllオブジェクトの生成を行うコードを記述し、そのファイルをすべてのページにインクルードしようと考えています。

上記を以下のようにglobal.asaファイルを使って簡略化できます。

例:"a"というCOMアプリの"b"というコンポーネントの場合

@global.asaの内容
<OBJECT RUNAT=SERVER SCOPE=Application ID=変数名 PROGID="a.b">
</OBJECT>

例:変数名を"c"とした場合
@x.aspの内容
<%
c.メソッド名 [パラメータ...]
%>

という感じです。
要はasp毎にServer.CreateObjectを記述せずに済む(インクルードを含めて)というだけですが・・・
ただ、ASPは「c」オブジェクトが使われなくなった時、自動的に破棄してくれます。

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


おすすめ情報