Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5991 / 13644 ツリー ←次へ | 前へ→

【47793】ACCESSに接続 みな 07/3/22(木) 16:18 質問[未読]
【47796】Re:ACCESSに接続 neptune 07/3/22(木) 16:29 回答[未読]
【47797】Re:ACCESSに接続 neptune 07/3/22(木) 16:32 回答[未読]
【47799】Re:ACCESSに接続 neptune 07/3/22(木) 16:59 回答[未読]
【47801】Re:ACCESSに接続 みな 07/3/22(木) 17:01 質問[未読]
【47803】Re:ACCESSに接続 Kein 07/3/22(木) 17:18 発言[未読]
【47818】Re:ACCESSに接続 みな 07/3/23(金) 9:02 発言[未読]
【47804】Re:ACCESSに接続 neptune 07/3/22(木) 17:29 回答[未読]
【47819】Re:ACCESSに接続 みな 07/3/23(金) 9:08 質問[未読]
【47811】Re:ACCESSに接続 ウッシ 07/3/22(木) 20:35 発言[未読]
【47817】Re:ACCESSに接続 みな 07/3/23(金) 8:59 質問[未読]
【47821】Re:ACCESSに接続 ウッシ 07/3/23(金) 9:30 発言[未読]
【47825】Re:ACCESSに接続 みな 07/3/23(金) 9:52 お礼[未読]

【47793】ACCESSに接続
質問  みな  - 07/3/22(木) 16:18 -

引用なし
パスワード
   いつもお世話になっております。
VBAでACCESSに接続し、データを取りたいのですが、
テーブルにパスワードがかかれている場合、どのように接続を書けばよいのでしょうか?

ちなみに今はこのような構文を書いています。
下記構文だと、A_DATAに接続するとき(dbRes.Openのとき)にパスワードを
聞いてきます。
Password=ABCDE でパスワードを指定しているつもりなのですが、
パスワードを記入する場所が悪いのでしょうか?

Sub accessDB()
  Dim dbCon As New ADODB.Connection
  Dim dbRes As New ADODB.Recordset
  Dim dbCols As ADODB.Fields
  Dim dbCols2 As ADODB.Fields
  Dim strSQL As String
  
' 接続を確立する
  dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=C:\My Documents\SW_aa.mdb; " & _
       "Jet OLEDB:Database Password=ABCDE;"

'データを取得する
  strSQL = "SELECT 項目 FROM A_DATA WHERE A_PNUM = '99999'"
  dbRes.Open strSQL, dbCon, adOpenKeyset, adLockReadOnly

   ※いろんな処理
 
 ' レコードセット、データベースを閉じる
  dbRes.Close
  Set dbRes = Nothing
  dbCon.Close
  Set dbCon = Nothing 

End Sub

【47796】Re:ACCESSに接続
回答  neptune  - 07/3/22(木) 16:29 -

引用なし
パスワード
   こんにちは

よく見てませんが、
先ず気が付いたのは名前付き引数は
>Password=ABCDE
じゃなく
Password:=ABCDE
と使うはずですが。。。

>下記構文だと、A_DATAに接続するとき(dbRes.Openのとき)にパスワードを
>聞いてきます
の前にエラーになりませんか?

一応書式は以下です。見比べてみてください。かなりおかしい点があるような?
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"

【47797】Re:ACCESSに接続
回答  neptune  - 07/3/22(木) 16:32 -

引用なし
パスワード
   又、気が付いたので追記

>Dim dbCon As New ADODB.Connection
と宣言していると、
set dbCon=nothing
で、又、参照しますから、無意味です。・・・というか書くべきでないです。

【47799】Re:ACCESSに接続
回答  neptune  - 07/3/22(木) 16:59 -

引用なし
パスワード
   ▼neptune さん:
ごめんなさい。うそ書いてました。

>先ず気が付いたのは名前付き引数は
>>Password=ABCDE
>じゃなく
>Password:=ABCDE
>と使うはずですが。。。
は""でくくってない場合でした。文字列の時は、
>>Password=ABCDE
でした。大変失礼しました。

近頃あまり書かないので忘れてました。m(_ _)m

【47801】Re:ACCESSに接続
質問  みな  - 07/3/22(木) 17:01 -

引用なし
パスワード
   ▼neptune さん:
お返事ありがとうございます。

>Password=ABCDE
>じゃなく
>Password:=ABCDE

「:」を追記すると逆にエラーになりました。。。

>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User
ID=userName;Password=userPassword;"

上記のように書いてみたのですが、駄目でした。
もう少し、自分でも考えてみます。

【47803】Re:ACCESSに接続
発言  Kein  - 07/3/22(木) 17:18 -

引用なし
パスワード
   ADOは使わないのでよく知らないのですが、DAOとの比較のために参考にしている
サイト↓にPasswordの指定の仕方が書いてありましたが・・。
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_2.aspx
(URLの先頭4文字を半角に変換)

【47804】Re:ACCESSに接続
回答  neptune  - 07/3/22(木) 17:29 -

引用なし
パスワード
   ▼みな さん:
>上記のように書いてみたのですが、駄目でした。
>もう少し、自分でも考えてみます。
先程は失礼しました。

実際はどう書いてますか?それをUPして下さい。
勿論固有名詞は伏せてくださいね。

【47811】Re:ACCESSに接続
発言  ウッシ  - 07/3/22(木) 20:35 -

引用なし
パスワード
   こんばんは

Sub test()
  Dim dbRes As ADODB.Recordset
  Dim dbCon As ADODB.Connection
  Dim strSQL As String
  Dim mCon  As String
  Dim mArray As Variant
    
  mCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=C:\My Documents\SW_aa.mdb;" & _
       "Jet OLEDB:Database Password=ABCDE"
      
  Set dbCon = CreateObject("ADODB.Connection")
  dbCon.Open mCon
  
  Set dbRes = CreateObject("ADODB.Recordset")
  strSQL = "SELECT 項目 FROM A_DATA WHERE A_PNUM='99999'"
  
  Set dbRes = dbCon.Execute(strSQL, 1, 1)

'   ※いろんな処理

 ' レコードセット、データベースを閉じる
  dbRes.Close
  Set dbRes = Nothing
  dbCon.Close
  Set dbCon = Nothing
End Sub

とするとどうでしょうか?

【47817】Re:ACCESSに接続
質問  みな  - 07/3/23(金) 8:59 -

引用なし
パスワード
   ▼ウッシ さん:
回答ありがとうございます。
回答いただいた通り変更してみたのですが、やはり

>  Set dbRes = dbCon.Execute(strSQL, 1, 1)

のところでパスワードを聞いてきます。
DBを開くときではなく、A_DATA というテーブルを
開くときにパスワードの確認があるのですが、
DBのパスワードとテーブルのパスワードとは違うものなのでしょうか??
DBの知識が薄いもので。。。。
すみません

【47818】Re:ACCESSに接続
発言  みな  - 07/3/23(金) 9:02 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。
添付いただいたサイトは私も一応見ています。
その上で、理解できなくて質問させていただきました。
ほんとに勉強不足ですみません。。。

【47819】Re:ACCESSに接続
質問  みな  - 07/3/23(金) 9:08 -

引用なし
パスワード
   ▼neptune さん:
たびたびの回答ありがとうございます。

>実際はどう書いてますか?それをUPして下さい。
>勿論固有名詞は伏せてくださいね。

始めに載せたプログラムの一部を下記のように変更しましたが、
駄目でした。。。。

' 接続を確立する
  dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=C:\My Documents\SW_aa.mdb;" & _
       "User ID=UNAME;Password=ABCDE;"

【47821】Re:ACCESSに接続
発言  ウッシ  - 07/3/23(金) 9:30 -

引用なし
パスワード
   こんにちは

そのテーブルはリンクテーブルでしょうか?

リンクテーブルならリンク先もAccessMDBでしょうか?

【47825】Re:ACCESSに接続
お礼  みな  - 07/3/23(金) 9:52 -

引用なし
パスワード
   neptune さん、ウッシさん、keinさん

ご回答いただきありがとうございました。
ウッシさんの指摘どおり、リンクテーブルになっており、
ACCESSの方でいろんな制限をかけているようでした。
まずACCESSの方でうまく接続できる環境を整えてみる方向で考えてみます。

みなさまには、伝わりにくい質問にも関らず、親身に回答していただいたことを
本当に感謝しております。
また、わからなくなったときは、皆さんのお知恵をお借りすることもあるかと
思いますが、そのときはよろしくお願いします。
本当にありがとうございました。

5991 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free