Access VBA質問箱 IV

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

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


225 / 500 ページ ←次へ | 前へ→

【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を参照するのかと...

やはり、「あるソフト」や稼働環境を知る必要があります.
・ツリー全体表示

【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に手動で値を設定してみましたが、同じエラーがでました。

何かいい方法がありましたら、よろしくご指導お願いいたします。
・ツリー全体表示

【8757】フォーカスの有無の取得
質問  飛ばない豚  - 06/10/31(火) 17:58 -

引用なし
パスワード
   コントロールにフォーカスが当たっているかどうかを調べることはできますか?

具体的にはテキストボックス(box_AAA)です。
このbox_AAAにフォーカスがない場合は、そのまま、
box_AAAにフォーカスがある場合は、次のコントロールにSetFocusした後、
box_AAAの可視プロパティを「いいえ」に変更したいと思ってます。


フォーカスが当たっているかどうかを取得する方法をご存知でしたら、
よろしくお願いします。
・ツリー全体表示

【8756】型numeric から 型decimal への変換エラー
質問  桃姫  - 06/10/31(火) 10:56 -

引用なし
パスワード
   こんにちわ お世話になります

型numeric から 型decimal への変換エラー

このようなエラーメッセージがでました。

どのようにしてエラーの意味を探したら

良いでしょうか? ヘルプに入れると

意味がわかりませんとなります。

宜しくお願いします
・ツリー全体表示

【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
とすると、設定できます。


いずれにしても「あるソフト」の情報がないと、回答も付きにくいかと思います。
・ツリー全体表示

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

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

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

【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どうしならできるのですが、他のソフトとのやりとりになるとだめみたいです。
ちなみにエクセルのユーザーフォームでも同じエラーがでました。
・ツリー全体表示

【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ファイルの連結フォーム

という図式のようです.回答ではあっても解決になってなくてごめんなさい.
・ツリー全体表示

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

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

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

としてみて下さい。(^・ω・^)
・ツリー全体表示

【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
・ツリー全体表示

【8748】Re:ファイルの表示についての質問
お礼  なんたろう  - 06/10/28(土) 20:05 -

引用なし
パスワード
   ▼まさ7251 さん:
返信が遅くなりすみません。
教えていただいた、内容は本を見ながら理解している最中で、
もう少し、時間がかかりそうです。
また、いきずまったら、質問させていただきます。
今回はどうもありがとうございました。
・ツリー全体表示

【8747】Re:ファイルの表示についての質問
回答  まさ7251  - 06/10/28(土) 16:48 -

引用なし
パスワード
   >>Shell関数には、実行ファイルを指定する必要があります。
>>Adobe Reader 7.0なら、例えば、
>>"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
>
>上記の実行ファイルですがAdobe Reader のバージョンを試しに
>変えてみたら、エラーが出ました。

EXEまでのフルパスが異なるからエラーになりますね。
また、端末によってインストール先が異なる場合もエラーですね。

>Adobe Reader のバージョンは関係なく開けるようにする方法って
>あるのでしょうか?

1.ShellExecute(API関数)を使うか。
2.start コマンドを使うか。(Windows2000より前は使用不可だと思います。)

1.
参考 http://www.dokidoki.ne.jp/home2/masa7251/tips/api/api00002.html
ただし、Me.hwnd は、application.hWndAccessApp に変更。(未確認)

2.
AppID = Shell("cmd /c ""start " & ApName & """", vbNormalFocus)
・ツリー全体表示

【8746】Re:ファイルの表示についての質問
発言  なんたろう  - 06/10/28(土) 14:31 -

引用なし
パスワード
   まささん
ありがとうございます!動きました。

>Shell関数には、実行ファイルを指定する必要があります。
>Adobe Reader 7.0なら、例えば、
>"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"

上記の実行ファイルですがAdobe Reader のバージョンを試しに
変えてみたら、エラーが出ました。
Adobe Reader のバージョンは関係なく開けるようにする方法って
あるのでしょうか?
・ツリー全体表示

【8745】Re:ファイルの表示についての質問
回答  まさ7251  - 06/10/28(土) 7:31 -

引用なし
パスワード
   >Private Sub 表示_Click()
>Dim AppID, ApName As String
>
> ApName = "C:\Documents and Settings\***\デスクトップ\AAA.pdf"
> AppID = Shell(ApName, vbNormalFocus) ←ここでデバッグ
> AppActivate AppID

Shell関数には、実行ファイルを指定する必要があります。
Adobe Reader 7.0なら、例えば、
"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"

AppID = Shell("""C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"" " & ApName, vbNormalFocus)
・ツリー全体表示

【8744】Re:ファイルの表示についての質問
質問  なんたろう  - 06/10/27(金) 22:19 -

引用なし
パスワード
   まささんスミマセン。
先程のデバッグの位置とコードが間違ってました。

Private Sub 表示_Click()
Dim AppID, ApName As String

ApName = "C:\Documents and Settings\***\デスクトップ\AAA.pdf"
AppID = Shell(ApName, vbNormalFocus) ←ここでデバッグ
AppActivate AppID

End Sub

実行時エラー5
プロシージャの呼び出し又は引数が不正です。

というのがでてきました。
・ツリー全体表示

【8743】Re:ファイルの表示についての質問
質問  なんたろう  - 06/10/27(金) 21:51 -

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

>Shell関数で良いと思いますよ。
>どのように書いたのかがあれば、アドバイスがつきやすいかと思います。

下記のコードを書いてみました。本に載っていたとおりに書いてみたのですが、
デバッグはフルパス名の行ででてきます。

Private Sub 表示_Click()

Dim AppID,ApName As String

ApName="フルパス名"
AppID=Shell(ApName,vbNormalFocus)
AppActive AppID

End Sub

いかがなものでしょうか?
・ツリー全体表示

【8742】Re:ファイルの表示についての質問
発言  まさ7251  - 06/10/27(金) 21:22 -

引用なし
パスワード
   >クリックするとPDFが開くという形にしたいのですが、うまくいきません。
>(出来る内容かもわからないのですが…)
>VBAは得意ではないので、マクロでと思いましたが、どうやらできないようで、
>VBAの本を買ってみましたが、いまいちどれが該当するコードかがわかりません。
>
>Shell関数というのは試してみましたが(エラーコード5)というのが出てきました。(失敗したと思って書いたコードは消してしまいました。必要であれば再度書いて表示致します)

Shell関数で良いと思いますよ。
どのように書いたのかがあれば、アドバイスがつきやすいかと思います。

何もない状態では、ヘルプとかWEBで検索するとかで
使用方法を確認してください。としか言いようが無いですが。
・ツリー全体表示

【8741】ファイルの表示についての質問
質問  なんたろう  - 06/10/27(金) 19:29 -

引用なし
パスワード
   こんばんは。
現在医薬品のDBを作成中です。
薬に関する文献(PDF)を一緒に管理できないのかな?と思い試しています。

テーブル1
医薬品の情報テーブル

テーブル2
文献の保存先(フルパス)テーブル

の二つのテーブルを作り、
テーブル2はテーブル1のサブフォーム(帳票フォーム)として表示しています。
テーブル2のサブフォームにコマンドボタンを付け、
クリックするとPDFが開くという形にしたいのですが、うまくいきません。
(出来る内容かもわからないのですが…)
VBAは得意ではないので、マクロでと思いましたが、どうやらできないようで、
VBAの本を買ってみましたが、いまいちどれが該当するコードかがわかりません。

Shell関数というのは試してみましたが(エラーコード5)というのが出てきました。(失敗したと思って書いたコードは消してしまいました。必要であれば再度書いて表示致します)

ちなみに、ウィンドウズXPでアクセス2000を使用しています。
VBAの本は買ったので、使用するコードのヒントなど教えていただけないでしょうか?
よろしくお願いします。
・ツリー全体表示

【8740】Re:コンボボックスの重複データ非表示の設...
お礼  やよい  - 06/10/27(金) 16:11 -

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

>コンボボックスの連動という話なのであれば、
>こちらの管理人には申し訳ありませんが、
>AccessClubさんのコンテンツに例が載っているので、
>そちらを確認されるべきでしょう。

はい、あちこち見てみましたが、ちょっとずつ内容が違うので、上手く応用しきれませんでした。
ですが、その後たんさんにご指摘頂いたことを考え直してみて、Microsoftのホームページの中の例を参考にしましたら、できました。
各コントロールのレコードソースは1フィールドだけを指定し、なおかつグループ化にしておいて、更新後処理のイベントで他のコントロールにフィルタをかけるやり方で、可能になりました。
ありがとうございました。
・ツリー全体表示

【8739】Re:コンボボックスの重複データ非表示の設...
回答  たん  - 06/10/25(水) 16:13 -

引用なし
パスワード
   >顧客名のみで集計クエリを作ると例えば部署名を先に選んだときに顧客名を絞り込むことができなくなるので、あのような記述になったのですが、他に方法がありますでしょうか?

コンボボックスの連動という話なのであれば、
こちらの管理人には申し訳ありませんが、
AccessClubさんのコンテンツに例が載っているので、
そちらを確認されるべきでしょう。
・ツリー全体表示

225 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084632
(SS)C-BOARD v3.8 is Free