Access VBA質問箱 IV

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

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


1109 / 2272 ツリー ←次へ | 前へ→

【8749】外部接続とコンボボックスのデータソースの設定 すず 06/10/30(月) 15:46 質問[未読]
【8750】Re:外部接続とコンボボックスのデータソー... 飛ばない豚 06/10/30(月) 18:39 回答[未読]
【8752】Re:外部接続とコンボボックスのデータソー... すず 06/10/31(火) 9:21 お礼[未読]
【8755】Re:外部接続とコンボボックスのデータソー... 飛ばない豚 06/10/31(火) 10:40 発言[未読]
【8758】Re:外部接続とコンボボックスのデータソー... すず 06/10/31(火) 18:27 質問[未読]
【8762】Re:外部接続とコンボボックスのデータソー... keiのおトン 06/10/31(火) 21:30 回答[未読]
【8764】Re:外部接続とコンボボックスのデータソー... すず 06/11/1(水) 14:16 お礼[未読]
【8751】Re:外部接続とコンボボックスのデータソース... keiのおトン 06/10/30(月) 19:02 回答[未読]
【8753】Re:外部接続とコンボボックスのデータソース... すず 06/10/31(火) 9:25 質問[未読]
【8759】Re:外部接続とコンボボックスのデータソース... keiのおトン 06/10/31(火) 18:38 発言[未読]
【8765】Re:外部接続とコンボボックスのデータソース... すず 06/11/1(水) 14:19 お礼[未読]

【8749】外部接続とコンボボックスのデータソース...
質問  すず  - 06/10/30(月) 15:46 -

引用なし
パスワード
   こんにちは。すずと申します。
あるソフトのユーザーフォームから、ACCESS2000の「sentaku」というデータベースの「選択」テーブルを参照し、「レベル1」のフィールドを「コンボ1」のデータソースにしたいのですが、下記のような記述では、データソースが表示されません。
あちこち探しましたが、解決方法が見つかりません。どなたかご指導をよろしくお願いいたします。

Private Sub コンボ1_BeforeUpdate(Cancel As Integer)
  
  Dim cnn As New ADODB.Connection
  Dim rec As New ADODB.Recordset
  
  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=O:\sakakibara\sentaku.mdb;"

  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
  
  コンボ1.RowSource = "SELECT 選択.レベル1 FROM 選択"
  
End Sub

【8750】Re:外部接続とコンボボックスのデータソー...
回答  飛ばない豚  - 06/10/30(月) 18:39 -

引用なし
パスワード
   ▼すず さん:
#VBAではありませんが、
コンボボックスのプロパティにて、

値集合タイプ:テーブル/クエリ
値集合ソース:SELECT 選択.レベル1 FROM 選択 IN 'O:\sakakibara\sentaku.mdb';

としてみて下さい。(^・ω・^)

【8751】Re:外部接続とコンボボックスのデータソー...
回答  keiのおトン E-MAIL  - 06/10/30(月) 19:02 -

引用なし
パスワード
   ▼すず さん:
>こんにちは。すずと申します。
>あるソフトのユーザーフォームから、ACCESS2000の「sentaku」というデータベースの「選択」テーブルを参照し、「レベル1」のフィールドを「コンボ1」のデータソースにしたいのですが、下記のような記述では、データソースが表示されません。
>あちこち探しましたが、解決方法が見つかりません。どなたかご指導をよろしくお願いいたします。
>
>Private Sub コンボ1_BeforeUpdate(Cancel As Integer)
>  
>  Dim cnn As New ADODB.Connection
>  Dim rec As New ADODB.Recordset
>  
>  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>       "Data Source=O:\sakakibara\sentaku.mdb;"
>
>  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
>  
>  コンボ1.RowSource = "SELECT 選択.レベル1 FROM 選択"
>  
>End Sub

すずさん,こんばんワ.
実は私,最近DAOで作成していたアプリをADOで作り直したのですが,
どこにもハッキリとは書いてないのですが,現時点では,mdbファイル内の
フォームやコントロールはADOレコードセットの連結フォーム(コントロール)
にはなれないようです.

DAOレコードセット←→mdbファイルの連結フォーム
ADOレコードセット←→adpファイルの連結フォーム

という図式のようです.回答ではあっても解決になってなくてごめんなさい.

【8752】Re:外部接続とコンボボックスのデータソー...
お礼  すず  - 06/10/31(火) 9:21 -

引用なし
パスワード
   ▼飛ばない豚 さん、お答えありがとうございます。

>#VBAではありませんが、
>コンボボックスのプロパティにて、
>
>値集合タイプ:テーブル/クエリ
>値集合ソース:SELECT 選択.レベル1 FROM 選択 IN 'O:\sakakibara\sentaku.mdb';
>
>としてみて下さい。(^・ω・^)

プロパティのRowSourceのところに教えて頂いたコードを書いてみましたが、
「Couldn't set the RowSource property. Invalid property value.」というエラーが出てしまいました。
Accessどうしならできるのですが、他のソフトとのやりとりになるとだめみたいです。
ちなみにエクセルのユーザーフォームでも同じエラーがでました。

【8753】Re:外部接続とコンボボックスのデータソー...
質問  すず  - 06/10/31(火) 9:25 -

引用なし
パスワード
   ▼keiのおトン さん:
>すずさん,こんばんワ.
>実は私,最近DAOで作成していたアプリをADOで作り直したのですが,
>どこにもハッキリとは書いてないのですが,現時点では,mdbファイル内の
>フォームやコントロールはADOレコードセットの連結フォーム(コントロール)
>にはなれないようです.
>
>DAOレコードセット←→mdbファイルの連結フォーム
>ADOレコードセット←→adpファイルの連結フォーム
>
>という図式のようです.回答ではあっても解決になってなくてごめんなさい.

DAOでもADOでもデータのやりとりができれば、どちらでもよいのですが、なぜかDAOだと上手く動きませんでしたので、ADOでやってみました。
DAOでできる方法があれば教えてください。よろしくお願いいたします。

【8755】Re:外部接続とコンボボックスのデータソー...
発言  飛ばない豚  - 06/10/31(火) 10:40 -

引用なし
パスワード
   ▼すず さん:
>プロパティのRowSourceのところに教えて頂いたコードを書いてみましたが、
>「Couldn't set the RowSource property. Invalid property value.」というエラーが出てしまいました。
>Accessどうしならできるのですが、他のソフトとのやりとりになるとだめみたいです。
>ちなみにエクセルのユーザーフォームでも同じエラーがでました。

失礼しました。

Accessではなかったのですね。

ちなみに「あるソフト」とは何なのでしょう?
(Access)VBAは動くのでしょうか?
recordsetの取得は可能なのですよね?

手動で設定するときはどのように設定するのでしょうか?
Accessのように、"1,a,2,b,3,c,,,,,"と設定できますか?
出来るのであれば、recordsetの値を変換してセットできそうな気もします。
(recordsetが取得できる事が前提ですが)


エクセルの場合、変数(myDATA()など)に格納し、フォームのInitializeイベントで
Me.コンボボックス.List = myDATA
とすると、設定できます。


いずれにしても「あるソフト」の情報がないと、回答も付きにくいかと思います。

【8758】Re:外部接続とコンボボックスのデータソー...
質問  すず  - 06/10/31(火) 18:27 -

引用なし
パスワード
   ▼飛ばない豚 さん、お答えありがとうございます。

>エクセルの場合、変数(myDATA()など)に格納し、フォームのInitializeイベントで
>Me.コンボボックス.List = myDATA
>とすると、設定できます。

下記のように修正しました。ところがやはり
「Couldn't set the RowSource property. Invalid property value.」
とエラーがでました。


Private Sub UserForm_Initialize()

  Dim cnn As New ADODB.Connection
  Dim rec As New ADODB.Recordset
  Dim mydata As Variant
  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=O:\sakakibara\sentaku.mdb;"

  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
  
  mydata = "SELECT レベル1 FROM 選択 IN 'O:\sakakibara\sentaku.mdb'"
  ComboBox1.RowSource = mydata

End Sub

>ちなみに「あるソフト」とは何なのでしょう?
>(Access)VBAは動くのでしょうか?
>recordsetの取得は可能なのですよね?

Accessへの接続まではできているようです。
ソフトはCATIAというCADソフトです。

>手動で設定するときはどのように設定するのでしょうか?
>Accessのように、"1,a,2,b,3,c,,,,,"と設定できますか?
>出来るのであれば、recordsetの値を変換してセットできそうな気もします。
>(recordsetが取得できる事が前提ですが)

プロパティのrowsourceに手動で値を設定してみましたが、同じエラーがでました。

何かいい方法がありましたら、よろしくご指導お願いいたします。

【8759】Re:外部接続とコンボボックスのデータソー...
発言  keiのおトン E-MAIL  - 06/10/31(火) 18:38 -

引用なし
パスワード
   すずさん

Private Sub コンボ1_BeforeUpdate(Cancel As Integer)
  
  Dim cnn As New ADODB.Connection
     ・  
     ・  
End Sub

を見て,私も「飛ばない豚」さん同様,AccessVBAのイベントだと思い込んでました.
ただ,例えば,「すず.mdb」内で,sentaku.mdbを参照するのかと...

やはり、「あるソフト」や稼働環境を知る必要があります.

【8762】Re:外部接続とコンボボックスのデータソー...
回答  keiのおトン E-MAIL  - 06/10/31(火) 21:30 -

引用なし
パスワード
   ▼すず さん:
>▼飛ばない豚 さん、お答えありがとうございます。
>
>>エクセルの場合、変数(myDATA()など)に格納し、フォームのInitializeイベントで
>>Me.コンボボックス.List = myDATA
>>とすると、設定できます。
>
>下記のように修正しました。ところがやはり
>「Couldn't set the RowSource property. Invalid property value.」
>とエラーがでました。
>
>
>Private Sub UserForm_Initialize()
>
>  Dim cnn As New ADODB.Connection
>  Dim rec As New ADODB.Recordset
>  Dim mydata As Variant
>  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>       "Data Source=O:\sakakibara\sentaku.mdb;"
>
>  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
>  
>  mydata = "SELECT レベル1 FROM 選択 IN 'O:\sakakibara\sentaku.mdb'"
>  ComboBox1.RowSource = mydata
>
>End Sub
>
>>ちなみに「あるソフト」とは何なのでしょう?
>>(Access)VBAは動くのでしょうか?
>>recordsetの取得は可能なのですよね?
>
>Accessへの接続まではできているようです。
>ソフトはCATIAというCADソフトです。
>
>>手動で設定するときはどのように設定するのでしょうか?
>>Accessのように、"1,a,2,b,3,c,,,,,"と設定できますか?
>>出来るのであれば、recordsetの値を変換してセットできそうな気もします。
>>(recordsetが取得できる事が前提ですが)
>
>プロパティのrowsourceに手動で値を設定してみましたが、同じエラーがでました。
>
>何かいい方法がありましたら、よろしくご指導お願いいたします。

-------------------------------------------------------------------
Excelでですが,RowSourceにこだわらず,とにかく動けばいいのでしたら
以下のようにすれば動きますが...


Private Sub UserForm_Initialize()
  
  Dim cnn As New ADODB.Connection
  Dim rec As New ADODB.Recordset
  Dim mydata As Variant
  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=C:\temp\sentaku.mdb;"

  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
  rec.MoveFirst
  'ComboBox1.Clear
  While Not (rec.EOF)
   ComboBox1.AddItem rec.Fields("レベル1")
   rec.MoveNext
  Wend
 
End Sub

【8764】Re:外部接続とコンボボックスのデータソー...
お礼  すず  - 06/11/1(水) 14:16 -

引用なし
パスワード
   ▼keiのおトン さん、ありがとうございました。
教えていただいたとおりに記述してみたら、できました。
大変助かりました!
また、わからないことがありましたら、どうぞよろしくお願いいたします。

>Excelでですが,RowSourceにこだわらず,とにかく動けばいいのでしたら
>以下のようにすれば動きますが...
>
>
>  rec.Open "選択", cnn, adOpenKeyset, adLockOptimistic
>  rec.MoveFirst
>  'ComboBox1.Clear
>  While Not (rec.EOF)
>   ComboBox1.AddItem rec.Fields("レベル1")
>   rec.MoveNext
>  Wend

【8765】Re:外部接続とコンボボックスのデータソー...
お礼  すず  - 06/11/1(水) 14:19 -

引用なし
パスワード
   ▼keiのおトン さん:

>私も「飛ばない豚」さん同様,AccessVBAのイベントだと思い込んでました.
>ただ,例えば,「すず.mdb」内で,sentaku.mdbを参照するのかと...
>
>やはり、「あるソフト」や稼働環境を知る必要があります.

ご指導ありがとうございます。
フォームはAccessでしか使ったことがなかったので、自分自身がごちゃまぜになっております。説明不足ですいません。
CATIAというソフトのユーザーフォームを使う場合は、EXCELのユーザーフォームと同じでよいみたいですね。

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