Access VBA質問箱 IV

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

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


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

【11522】データシート形式でのフォームについて pon 10/3/11(木) 16:01 質問[未読]
【11526】Re:データシート形式でのフォームについて pon 10/3/13(土) 1:16 発言[未読]
【11527】Re:データシート形式でのフォームについて YU-TANG 10/3/13(土) 1:30 回答[未読]
【11530】Re:データシート形式でのフォームについて pon 10/3/14(日) 23:27 質問[未読]
【11531】Re:データシート形式でのフォームについて YU-TANG 10/3/15(月) 1:21 回答[未読]
【11547】Re:データシート形式でのフォームについて pon 10/3/26(金) 14:53 お礼[未読]

【11522】データシート形式でのフォームについて
質問  pon  - 10/3/11(木) 16:01 -

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

よろしくお願いいたします

フォームにデータシート形式のサブフォームコンとロールを貼って使用しています

参照している サブフォームのテーブル、クエリの入れ替えは
サブフォームSBF01、SBF02等を
Forms("MAINF1").Controls("CNT01").SourceObject = "SBF02"
とかすれば、入れ替えできるのですが

Set Forms("SBF01").Form.Recordset = rs
みたいにしてRecordsetの入れ替えだけでデータシート形式のフォームが更新出来ないかと
思っています


ただ、サブフォームをデザインでみれば
フィールドのコントロールが必ず貼ってあるので(表示させるためには当然かと思いますが)
Recordsetの入れ替えだけでは無理な希望かなとも思えます


ググッてはみましたが
Recordsetの入れ替えの記述は見かけるのですが
データシート表示部分 についての 記載のあるものは見つけられませんでした

データシートを表示させるサブフォームコンとロールの部分はどう処理すればいいのでしょうか
あるいは、こんなことは不可能なのでしょうか

わかり難いと思いますが、アドバイスよろしくお願いいたします

【11526】Re:データシート形式でのフォームについて
発言  pon  - 10/3/13(土) 1:16 -

引用なし
パスワード
   追記です

>ただ、サブフォームをデザインでみれば
>フィールドのコントロールが必ず貼ってあるので(表示させるためには当然かと思いますが)

自分で書いていてなんなんですが
 RecordSourceの書き換え
 コードでフォームの作成
が出来れば良さげな気がしてきました

手が届くか自身がありませんが
チャレンジしてみます

【11527】Re:データシート形式でのフォームについて
回答  YU-TANG  - 10/3/13(土) 1:30 -

引用なし
パスワード
   こんばんは、YU-TANG です。

▼pon さん:
>フォームにデータシート形式のサブフォームコンとロールを貼って使用しています
>
>参照している サブフォームのテーブル、クエリの入れ替えは
>サブフォームSBF01、SBF02等を
>Forms("MAINF1").Controls("CNT01").SourceObject = "SBF02"
>とかすれば、入れ替えできるのですが

えーと、データシート形式ですよね。
ということは、ふつうにテーブルやクエリを開いた状態と一緒ですから、

.SourceObject = "テーブル.テーブル名"

とか、

.SourceObject = "クエリ.クエリ名"

とすれば、特にサブフォームを用意しなくてもよい気がしますが。
意図と違いますかね?

それでは。

【11530】Re:データシート形式でのフォームについて
質問  pon  - 10/3/14(日) 23:27 -

引用なし
パスワード
   ▼YU-TANG さん:
ありがとうございます

>ということは、ふつうにテーブルやクエリを開いた状態と一緒ですから、
>.SourceObject = "テーブル.テーブル名"
>とか、
>.SourceObject = "クエリ.クエリ名"

うう
知りませんでした
コントロールだから出来そうな気はしていたのですが・・・
勉強になります

ただ
.SourceObject = "テーブル.テーブル名"
テーブルって、こんな日本語使用のVBAのコードの記載見たことが無いような・・・
試しに
Me.Controls("埋め込み0").SourceObject = "Table.テーブル名"
としたら
実行時エラー '2124':
指定したフォーム名は Microsoft Access オブジェクトの名前付け規則に従っていません。
と怒られてしまいました
英語版では通りそうな気もするんですが・・・・どうなんでしょう


>とすれば、特にサブフォームを用意しなくてもよい気がしますが。
>意図と違いますかね?

なんですが
埋め込みコントロールのイベントは
フォーカス取得時
フォーカス喪失時
しかありませんでした

動作的には、抽出後、データシートのレコードを選択し
左の三角ボタンで処理したいのですが・・・

今まで、同様な操作では、サブフォームを使用していたのですが
無駄にフォームが増えて管理しにくいため(作りこみが悪いような気もしますが)
この辺もう少し簡単に出来ないものかと思って今回の質問になりました

サブフォームでの切り替えは出来ています


まだ知らべていませんが
> RecordSourceの書き換え
> コードでフォームの作成
>が出来れば良さげな気がしてきました
のアプローチは変ですか

上記、別アプローチ等あれば、あわせてアドバイス頂けるとうれしいです
よろしくお願いいたします。

【11531】Re:データシート形式でのフォームについて
回答  YU-TANG  - 10/3/15(月) 1:21 -

引用なし
パスワード
   こんばんは、YU-TANG です。

▼pon さん:
> Me.Controls("埋め込み0").SourceObject = "Table.テーブル名"
> としたら
> 実行時エラー '2124':
> 指定したフォーム名は Microsoft Access オブジェクトの名前付け規則に従っていません。
> と怒られてしまいました

いえ、"Table.テーブル名" ではなく、"テーブル.テーブル名" です。
というか、ふつうにサブフォーム コントロールのプロパティシート上で
[ソースオブジェクト] プロパティのコンボボックスをドロップダウン
すると、リストの下の方に出てきませんか?
Access 2003 では出てくるのですが。
古いバージョンだとサポートされていないのかもしれませんが、どの辺の
バージョンからサポートされたのか、ちょっと自分は記憶にないです。

別に変な使い方ではなく、ふつうの使い方だと思いますよ。
下記でも説明されてますし。

ht tp://www.moug.net/tech/acvba/0100006.htm
ht tp://www.accessclub.jp/samplefile/samplefile_117.htm

> 埋め込みコントロールのイベントは
> フォーカス取得時
> フォーカス喪失時
> しかありませんでした

サブフォーム コントロール自体はそうですが。
サブフォーム コントロールのソース オブジェクト側はふつうのフォーム
ですから、そっちには一通りイベントがありますよ。

> 動作的には、抽出後、データシートのレコードを選択し
> 左の三角ボタンで処理したいのですが・・・

たとえば、

Private Sub 運送会社を表示_Click()
  埋め込み0.SourceObject = "テーブル.運送会社"
  埋め込み0.Form.OnClick = "=Foo()"
End Sub

のようにすると、サブフォームのクリック時に、標準モジュールの
Public な Function プロシージャ Foo() が呼び出されます。
このようにすれば、既存のプロシージャを外出しにすることは可能です。

> > RecordSourceの書き換え
> > コードでフォームの作成
> >が出来れば良さげな気がしてきました
> のアプローチは変ですか

いえ、別に変ではないですよ。
テーブルによって列構成が違うでしょうから、コントロールをバインド
し直したりするのが面倒くさくないかなーと思っただけなのですが、
既存のプロシージャを外出しにするのも手間は手間ですから、一概に
どっちがいいとも言い切れないですね。
ご自身のやりやすい方でよいのではないでしょうか。

どのみち、自分がレスした時点ではイベント云々の話は出ていませんから、
単純にデータシートの入れ替えを意図しただけです。他に事情があるなら、
その辺を勘案して総合判断なさるのがよろしいかと思います。

それでは。

【11547】Re:データシート形式でのフォームについて
お礼  pon  - 10/3/26(金) 14:53 -

引用なし
パスワード
   ▼YU-TANG さん:
ありがとうございます

大変遅くなりました


>どのみち、自分がレスした時点ではイベント云々の話は出ていませんから、
>単純にデータシートの入れ替えを意図しただけです。他に事情があるなら、
>その辺を勘案して総合判断なさるのがよろしいかと思います。
申し訳ありませんでした

>いえ、別に変ではないですよ。
ありがとうございます
方向性が見えました

最終的な目的は
アプリMDB と DT.MDB の分離と
DT.MDBの共有?書き込み(排他検知で?)
みたいな物でした


今回の質問と絡めて調査しているうちに大変遅くなってしまいました
申し訳ありませんでした

MDBの分離作業の中で、
データシート形式のフォームを作成している中で
初回、リンクテーブルを設け
データシートフォームを作成後、リンクテーブル削除
を行ったのですが、この時間が長いため

動的に
>Set Forms("SBF01").Form.Recordset = rs
>みたいにしてRecordsetの入れ替えだけでデータシート形式のフォームが更新出来ないかと
>思っています
は無理かなと勝手に思って、ここでテストは中止しています

時間が取れたときに
チャレンジしてみたいと思います

わがままで申し訳ありません

ありがとうございました

今後もよろしくお願い致します

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