|
こんばんは、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の書き換え
> > コードでフォームの作成
> >が出来れば良さげな気がしてきました
> のアプローチは変ですか
いえ、別に変ではないですよ。
テーブルによって列構成が違うでしょうから、コントロールをバインド
し直したりするのが面倒くさくないかなーと思っただけなのですが、
既存のプロシージャを外出しにするのも手間は手間ですから、一概に
どっちがいいとも言い切れないですね。
ご自身のやりやすい方でよいのではないでしょうか。
どのみち、自分がレスした時点ではイベント云々の話は出ていませんから、
単純にデータシートの入れ替えを意図しただけです。他に事情があるなら、
その辺を勘案して総合判断なさるのがよろしいかと思います。
それでは。
|
|