出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ACCESSに直接接続したい   tacktさん [2002/01/15 11:31:28] [1390]
  Re:ACCESSに直接接続したい   北岳さん [2002/01/15 12:36:32] [1396]
    Re:ACCESSに直接接続したい   tacktさん [2002/01/15 13:36:55] [1397]
      Re:ACCESSに直接接続したい   noriさん [2002/01/15 18:14:10] [1403]
  Re:DB.mode??   TACKTさん [2002/01/16 15:42:12] [1413]
    ADO SDK を読みましょう   喜平さん [2002/01/16 15:59:44] [1415]
    ピッキング   北岳さん [2002/01/16 17:05:39] [1419]
      Re:ピッキング   喜平さん [2002/01/16 17:20:21] [1421]
        ASP SDK   北岳さん [2002/01/16 18:20:22] [1422]

[1390] ACCESSに直接接続したい
投稿者:tacktさん 2002/01/15 11:31:28
超初心者なのでアホほど簡単に教えていただきたいのです。
VBScriptでASPを書いてます。
それで、ACCESSに接続してデータを取り出したくていろいろ調べました。
すると、
Dim db, RS
'** データベース接続
Set db_SQL = ConnectSQLServer    '// SQLデータベースに接続
Set db = Server.CreateObject("ADODB.Connection")
db.open "DRIVER = {Microsoft Access Driver (*.mdb)}; DBQ = " & Server.mappath("./DEMO.mdb")
RS.open "SELECT * FROM DEMO" , db
で接続できるらしいのですが、
『Microsoft OLE DB Provider for ODBC Drivers エラー '80004005'
[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 』
とエラーが表示されてしまいます。
ODBCっていうのは調べてもよくわからなかったので、
直接ACCESSからデータを取り出す方法でやりたいのですが、
どうすればいいか知恵を拝借させていただけないでしょうか?
よろしくおねがいします。

[1396] Re:ACCESSに直接接続したい
投稿者:北岳さん 2002/01/15 12:36:32
このエラー理由はともかく、ACCESSデータを取り出すだけなら、
[1371] セッション情報での不具合について 投稿者:杉本さん 2002/01/11 17:17:36
のスレッド中の
[1380] SQL文中のvbCr 投稿者:北岳さん 2002/01/12 15:04:07
の、■実験内容 の最初の6行の書き方で行けるはずです。
 
mdbの場所は普通は固定なので、絶対パス指定。
db.ConnectionString="d:\alias\a.mdb"
のように、Server.mapPathなど使わない方が「サーバに優しい」です。
 
ODBCとOLE DB はDBにつなぐ規格で、
後者の方が速く(2倍くらいかな・・・いい加減)、かつ、
ODBCはサーバにDBを事前登録必要、OLEDBは上記のように絶対パスを指定するだけで、不要、
だからOLE DB をお勧め、です。
上記サンプルはOLEDBのもの。
(ではtacktさんのはどっちか、というと、私には不案内の文法で、判りません。)
 
OLE DBの使用可否は、ASPのバージョンによったと思います。
といってもASPは2か3、かつ3はWIN2000専用、OLEDBはWIN98のPWS上でも使えますので、
「ASP2以上」で使えると思います。
(手元に本がないので設定方法は未確認−何かあったっけ?何もなかったような−です。)

[1397] Re:ACCESSに直接接続したい
投稿者:tacktさん 2002/01/15 13:36:55
バッチリできました。
あとはこれをいじって登録、更新、削除や検索などの機能を充実させていきたいと思います。
ありがとうございました。
因みにコードは以下のように書きました。
また、ご指摘があればよろしくおねがいします。

<%
Dim DB, RS
dim SQL, i

'** ACCESSに接続
Set DB = Server.CreateObject("ADODB.Connection")
DB.Provider="Microsoft.Jet.OLEDB.4.0"
DB.mode=3
DB.ConnectionString="C:\DEMO.mdb"
DB.Open
Application.Lock '同時アクセスを禁止

'** SQL
SQL="SELECT * FROM DEMO"
response.write "<br>" & SQL
set RS=DB.execute(SQL)
do until RS.EOF
response.write("<TR>")
response.write("<TD>" & RS("NO") & "<BR></TD>")
response.write("<TD>" & RS("NAME") & "<BR></TD>")
response.write("<TD>" & RS("PTS") & "<BR></TD>")
response.write("<TD>" & RS("BEG") & "<BR></TD>")
response.write("<TD>" & RS("MSG") & "<BR></TD>")
response.write("<TD>" & RS("TIME") & "<BR></TD>")
response.write("</TR>")
RS.MoveNext
loop

'** レコードセットクローズ
RS.close
DB.close
%>

[1403] Re:ACCESSに直接接続したい
投稿者:noriさん 2002/01/15 18:14:10
noriと申します。
こんにちは

Application.Lockをかけたら
使い終わったらApplication.UnLockを
したほうがいいと思います。

> また、ご指摘があればよろしくおねがいします。
>
> <%
> Dim DB, RS
> dim SQL, i
>
> '** ACCESSに接続
> Set DB = Server.CreateObject("ADODB.Connection")
> DB.Provider="Microsoft.Jet.OLEDB.4.0"
> DB.mode=3
> DB.ConnectionString="C:\DEMO.mdb"
> DB.Open
> Application.Lock '同時アクセスを禁止

---------------中略-------------------
>
> '** レコードセットクローズ
> RS.close
> DB.close
> %>

[1413] Re:DB.mode??
投稿者:TACKTさん 2002/01/16 15:42:12
DB.mode = 3って何なんでしょうか?
どういう用途なんですか。
それと、accessからデータを取り出すSQLは動くのですが、
登録のSQLは途中でとまりaccessが開いたままの状態になって、
「ldb」と「mdb」の2つが常に存在してしまい、
aspで書いたページも動かなくなってしまいます。
accessを取り扱う上でこれらは仕方のないことなのですか?
それともプログラムのせいなんでしょうか?
たぶん、プログラムのせいなんでしょうね・・・
まだまだ初心者の私におしえてください。

[1415] ADO SDK を読みましょう
投稿者:喜平さん の <ホームページ> 2002/01/16 15:59:44
mode プロパティは、データの変更の際に利用できるアクセス権を示します。 詳しくは、URL を見てください。
 ま、通常、このプロパティを設定する必要性を感じたことは
ありませんが・・・

[1419] ピッキング
投稿者:北岳さん 2002/01/16 17:05:39
>それと、accessからデータを取り出すSQLは動くのですが、
>登録のSQLは途中でとまりaccessが開いたままの状態になって、
>「ldb」と「mdb」の2つが常に存在してしまい、
>aspで書いたページも動かなくなってしまいます。
 
登録のSQL文辺りにエラーがあり、ASPが停止し、直そうにも鍵(ロック)が掛かったままです。
開発中には、同時登録しようとする他人がいないから、ロックは不要です。鍵は除いて下さい。(ロック指定行の削除)
次にUPDATEを発行しているSQLのデバッグです。

[1421] Re:ピッキング
投稿者:喜平さん の <ホームページ> 2002/01/16 17:20:21
ASP SDK の引用ですが・・・
Lock メソッドは、Application オブジェクトに格納されている変数をほかのクライアントが変更できないように保護し、一度に 1 つのクライアントだけが Application 変数の交換やアクセスができるようにします

ado 周りには関係のないことでしょう。

[1422] ASP SDK
投稿者:北岳さん 2002/01/16 18:20:22
失礼しました。
ASPからEXCEL.exeを立ち上げてエラーで手を出せなくなった場合と同じ現象、
MSACCESS.exeを起動していないので、ちょっと変とは思いましたが、
ACCESS Applicationの排他・共有モードの話ではなかったのですね。
 
ASP のApplicationオブジェクトは使ったことがなかったのですが、
同様にASP(ADO?) SDK なるサイトも初めて見ました。
ご紹介URLから、それらしきURLを打って遡って
http://activex.adsp.or.jp/default.asp
を見つけましたが、ASPの入口が不明です。(VBScript?)
 
googleで探してもなかなか見つからなかったOLE関連が充実しているご様子ですので、今後立ち寄らせて頂きたいと思います。



TreeBBS For ASP V.0.1.3
Program By YasNet