お世話になっております。

フォーム上に関連性のないサブフォームがあります。

フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。

このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。

Me.FilterOn = True
Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')"

サブフォームでフィルタリングできる方法を教えていただければ幸いです。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サブフォームコントロール名とサブフォームの関係について


http://oshiete1.goo.ne.jp/qa4752536.html
の#3を参照してみてください。


サブフォームコントロール名を使わない方法もありますが、わかりますでしょうか。
一応以下に1例を書いておきます。

(1)準備

標準モジュール先頭にグローバル変数を宣言

Public objFSUB As Object


(2)サブフォーム起動時に自身を変数に代入&終了時に開放

サブフォームの「読み込み時」イベントで代入
Private Sub Form_Load()
  Set objFSUB = Me
End Sub

サブフォームの「閉じる時」イベントで解放
Private Sub Form_Close()
  Set objFSUB = Nothing
End Sub


(3)objFSUB を使用した設定等

objFSUB.Filter = "・・・・"
objFSUB.FilterOn = True

など、サブフォームに設定したいことは objFSUB を使用して設定/参照できます。
書き方は、サブフォーム内で、Me.xxxx と書くように、Me の部分を objFSUB に書き換えるだけです。
やりたい操作、記述をサブフォーム側で書いて、それをコピー、貼り付けし、
Me 部分を objFSUB に書き換えます。


※この方法はサブフォームに限らず、フォーム間での設定/参照にも使用できます。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございました。

Me.サブフォーム名.Form.Filter = "サブフォームにあるフィルタしたい部分の名前 Like '*" & Me.テキストボックス & "*'"

両方の名前は同じでしたので、記述はこれで合っていることがわかりましたが、フィルタは実現できませんでした。

サブフォームコントロール名を使わない方法というのは私の知識では理解できませんでした。
サブフォームになるだけで一気に難しくなるのですね。
何度もありがとうございました。

お礼日時:2009/05/19 09:20

> フィルタリングできる方法


の基本は、フォームのレコードソースに指定したテーブル/クエリのフィールド名が、左側の記述になります。

例えば、「F1」というフィールド名に対して
Me.Filter = "[F1] Like '*" & Me.テキストボックス1 & "*'"
とか、
これを記述するのが、メイン(親)フォーム側であったら
Me.FSUB.Form.Filter = "[F1] Like '*" & Me.テキストボックス & "*'"

(FSUBは親フォームに配置したサブフォームコントロール名)

記述が子フォーム側であったら、
Me.Filter = "[F1] Like '*" & Me.Parent.テキストボックス & "*'"
とか
Me.Filter = "[F1] Like '*" & Forms!親フォーム名!テキストボックス & "*'"

元々子フォームのレコードソースに指定したクエリに、
[Forms]![親フォーム名]![テキストボックス] を用いた条件記述にしていた場合は、

Me.FSUB.Form.Requery とか Me.Requery で最新の表示にできます。

※ テキストボックス1は、子フォーム側にあったとして
  テキストボックスは、親フォーム側にあったとして

※ テキストボックスのところを、コンボボックスに変えても同様です。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございました。

テキストボックスと検索ボタンはメインフォームにありますので、下記のように書いてみました。
しかし、反応はありませんでした。

Me.サブフォーム.Form.Filter = "サブフォームにあるフィルタしたい部分の名前 Like '*" & Me.テキストボックス & "*'"

サブフォームコントロール名というのがサブフォーム!テキストボックスのようになるのかと思いやってみましたが、エラーになりました。

基本的なことがわかっていませんので実現できませんでした。
ありがとうございました。

お礼日時:2009/05/18 22:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2007のフォームウイザードでデータシートを作りたいが方法が分からない

Access2003では、フォームウイザードでデータシートを作れたが。
Access2007では、フォームウイザードでは単票のフォームしか作れない様だ。

どうやって、作るのだろうか。操作が分からない。

Aベストアンサー

どういう帳票が欲しいかわかりませんが一応例として....
まずAccess上部にある作成をクリックします。
フォームウィザードをクリックして使用するテーブルとフィールドを選択します。
次に表形式を選択すれば帳票形式でフォームが作成されます。

もう1つはその他のフォームから複数のアイテムを選択すれば帳票形式でフォームが作成されます。

Qサブフォームからメインフォームのフィールドにエンターキーで移動したい

ACCESS2000です。
フォームの中にサブフォームを作っています。
入力される都合で、フォームの中途にサブフォームがあります。このサブフォームのレコードの数は固定しています。(今は19です)
サブフォームは帳票形式です。
サブフォームの最後のレコードでエンターキーやTABキーが押された時、メインフォームの指定するフィールドに移動するには、どうすれば良いでしょう。
使用者に特殊なキー操作を強要したくないので、VBAで記述したいのですが。

Aベストアンサー

安直なのはショートカットキーを利用することです。
ショートカットキーは、多用しますので<共通記号定数>モジュールにまとめるといいです。

Private Sub s_name_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
    SendKeys conGotoMain, False
    KeyAscii = 0
  End If
End Sub

' ----------------------------------------------------------------------------------------
' 共通記号定数
' ----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit

'
' ショートカットキー
'
Public Const conGotoMain = "^(+({HOME}))"
Public Const conGotoSub = "^(+({HOME})){UP}{TAB}"
Public Const conDefaultValue = "^(%({ }))"
Public Const conPreviousValue = "^("")"
Public Const conClearField = "+({UP}){DELETE}+({DOWN}){DELETE}"
Public Const conRestoreField = "{ESC}"
Public Const conNextField = "{TAB}"
Public Const conPreviousField = "+({TAB})"
Public Const conNextRecord = "^({PGDN})"
Public Const conPreviousRecord = "^({PGUP})"
Public Const conRequery = "+({F9})"
Public Const conNewRecord = "^({+})"
Public Const conDropDown = "{F4}"

安直なのはショートカットキーを利用することです。
ショートカットキーは、多用しますので<共通記号定数>モジュールにまとめるといいです。

Private Sub s_name_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
    SendKeys conGotoMain, False
    KeyAscii = 0
  End If
End Sub

' ----------------------------------------------------------------------------------------
' 共通記号定数
' -----------------------------------------------------------------------...続きを読む

Q【Access】複数フォームを閉じる時の、選択処理について

Access Ver. : 2003
Windows Ver.: XP

Accessフォームの「閉じる時」処理で、下記のような工夫をした
いと考えております。

・フォームがひとつしか開かれていないとき、Accessを終了する
・複数のフォームが開かれている時、そのフォームのみを閉じる

そんなVBAコードがありましたら、教えてください。
何か参考になるページでも、かまいません。
どうぞ、宜しくお願いいたします。

Aベストアンサー

forms.count で開いているフォーム数を得て分岐
Application.quit

Access VBE のヘルプで、CurrentProject オブジェクト を見てみたら?

QAccess 帳票フォームのコンボボックス

こんにちは。
Accessの帳票フォームに得意先のコンボボックスを配置し、入力の手助けをしたいと思います。
しかし、名前が良く似ているため、一部を入力したらリストが絞り込まれるようなものにしたいのです。
単票フォームに同じようなものがあり、非連結のテキストボックスに入力をしたら、コンボボックスに絞り込まれたリストが自動的にドロップダウンされるようなものを作っています。
帳票フォームでこういうことをすることが、難しいことは今までいろいろな方の質問で分かっています。
 Access2003
 Q:得意先:得意先ID、得意先名、検索カナ
 検索カナの一部を入力したら、得意先名のリストが自動的に表示されるようにしたい。
 帳票フォームでこのようなことは可能でしょうか?
無理でしたら、無理と言っていただけると諦めがつきます。
よろしくお願いします。
 

Aベストアンサー

【要旨】
一部の特殊パターンを除き一般的には無理ですが、代替策があります。


【詳細】

> 帳票フォームでこのようなことは可能でしょうか?

コンボボックスの値が、値集合ソースに指定したテーブル/クエリに存在しない
場合、その値自体が表示されたと思いますので、「コンボボックスに格納された
値がテキスト」(で、『入力チェック』プロパティが「いいえ」)なのであれば、
ご質問の動作も可能です。

ですが、既にそうされていると思いますが、コンボボックスの選択肢となるデータ
を別のテーブルに分割(→正規化)している場合は、コンボボックスに格納される
のはID(数値)の類になりますので、「検索条件に指定したものに合致しない
レコードの当該フィールドの表示が一時的に変になっても構わない」という
ことでもない限り、無理ということになります。


ただ、考え方を少し変えて、【検索条件に合致したものだけ、コンボボックスの
リストに表示】ではなく、【検索条件に合致したものをコンボボックスのリストの
前半に、合致しなかったものを同じく後半に、それぞれまとめて表示】とすれば、
条件に合致しなかったレコードのデータが非表示になることなく、『入力支援』
という目的を果たすことができるかと思います。

また、別の方法としては、別途ポップアップフォームを作成して、「検索条件
を指定する非連結テキストボックス」と「合致したデータを表示する非連結
リストボックス」(と取消用の「閉じる」コマンドボタン)を用意しておき、リスト
ボックスのダブルクリックで呼出元のフォームにリストボックスの値を渡す
(そして自動で閉じる)、というものもあり得るかと思います。
(ポップアップフォームのOpenイベントで、「Dim objFrm As Form」と変数を
 宣言した上で、「Set objFrm = Screen.ActiveForm」としてやれば、
 呼出元で「Me!得意先」とするのと同様の操作を、「objFrm!得意先」と
 いった式を使って行えます)
※呼出元からのポップアップフォームの呼び出しには、コマンドボタンを新設
 してもいいですし、運用上問題ないようなら(→入力担当者次第)、当該
 コンボボックスのダブルクリックなどで開くようにしてもいいかと思います。
 (当該コンボボックスからの起動なら、フォームではなくコントロールを参照
 する変数を宣言して、Screen.ActiveControlを使用すると更に楽です)


後者の方が簡単(なはず)ですが、そちらはご自身で組めるのではないかと
推測して、以下では前者の手段で、非連結テキストボックスの名前を
『条件欄』とした場合のサンプルコードを提示してみます:
※お勧めの手段は、あくまで後者(ポップアップフォーム)です。

Private Sub 条件欄_AfterUpdate()
On Error GoTo エラー処理

  Dim dbs As DAO.Database, DRS As DAO.Recordset
  Dim sVal As String, sRS As String, iTemp As Integer, sOrd As String
  
  '※『得意先』コンボボックスの既定の『値集合ソース』を定数として宣言
  ' (『得意先』コンボボックスの連結フィールドが『得意先ID』という想定)
  Const BaseRS As String = "Select 得意先名, 得意先ID, 検索カナ From Q:得意先"
  '※『Q:得意先』クエリ(?)に存在しない『得意先ID』を定数として宣言
  ' (→条件合致なしだった場合の、データの上書き回避に使用)
  Const cDefID As Integer = -1   '『得意先ID』の最小値を「0」と想定


  '◆『条件欄』に入力された検索条件に合わせて、コンボボックスの
  ' 『値集合ソース』の並べ替えを切替
  sVal = Nz(条件欄, "")
  
  Select Case True
    
    '空白の場合は『検索カナ』だけで並べ替え
    Case sVal = ""
      sOrd = "検索カナ;"
      '※『得意先名』で並べ替える場合は以下を有効にします:
      ' (言うまでもないとは思いましたが(汗)、次のCaseとの
      '  対比させる意味で、明示することにしました)
      'sOrd = "得意先名;"
      
    '検索条件が「*」つきの場合は、それをそのまま使用
    '(「曖昧検索/前方一致/後方一致/部分一致」の任意指定に対応)
    Case InStr(1, sVal, "*", vbBinaryCompare)
      sOrd = "(Nz(検索カナ) Like '" & sVal & "'), 検索カナ;"
      '※合致分の中での並べ替えを『得意先名』にする場合は以下:
      ' (この時も第1条件は「Nz(検索カナ)~」のままの点に注意)
      'sOrd = "(Nz(検索カナ) Like '" & sVal & "'), 得意先名;"
      
    '検索条件が「*」を含まない場合は曖昧検索用に「*」を追加
    Case Else
      sVal = "*" & sVal & "*"
      sOrd = "(Nz(検索カナ) Like '" & sVal & "'), 検索カナ;"
      '※既定動作を「先頭一致」にしたい場合は以下:
      'sOrd = "(Nz(検索カナ) Like '" & sVal & "*'), 検索カナ;"
      
  End Select
  sRS = BaseRS & vbCrLf & "Order by " & sOrd


  '◆検索条件に合致するものがあれば、その先頭の値を取得
  Set dbs = CurrentDb
  Set DRS = dbs.OpenRecordset(sRS)
  iTemp = cDefID   '初期化
  With DRS
    '抽出条件なし(並べ替え条件のみ)なので「レコードなし」はない
    'とは思いますが、一応念のためにEOFを確認
    If .EOF = False Then
      .MoveFirst
      '先頭レコードが条件に合致していたら、その得意先IDを変数に記録
      If (!検索カナ Like sVal) Then
        iTemp = Nz(!得意先ID, cDefID)
      End If
    End If
  End With

  '◆合致ありの場合はその値を代入、なければ現在の値のままで、
  ' ドロップダウンリストを表示
  With 得意先
    .RowSource = sRS
    '条件に合致する得意先があった場合は、記録した得意先IDを代入
    '(代入不要なら、以下の行は削除でOk)
    If (iTemp <> cDefID) Then .Value = iTemp
    'ドロップダウンリストを表示
    '(フォーカスを持たせないとDropdownはエラーになります)
    .SetFocus
    .Dropdown
  End With


終了処理:
  '念のため、明示的にメモリを解放
  If Not (DRS Is Nothing) Then DRS.Close
  Set DRS = Nothing
  Set dbs = Nothing
  
  '全レコードの非連結テキストボックスで同じ値が表示されるのを
  '避けたい場合は、以下の1行を有効化させます:
  '条件欄=Null
  
  Exit Sub

エラー処理:
  MsgBox Err.Number & ":" & Err.Description
  Resume 終了処理

End Sub


・・・長くなりましたが(汗)、以上です。



【全くの余談(汗)】
かなり昔に回答したものですが、末尾の『「.」は無用』というのは
間違いでしたので、ここでお詫びの上、訂正させて戴きます。
(当時「RecordsetClone」プロパティと「Recordset」オブジェクトは
 知っていましたが、後者に「Clone」メソッドがあることを知らなかった
 ため、「無用」としてしまいました)

大変失礼致しました(汗)

http://oshiete.goo.ne.jp/qa/5509319.html

【要旨】
一部の特殊パターンを除き一般的には無理ですが、代替策があります。


【詳細】

> 帳票フォームでこのようなことは可能でしょうか?

コンボボックスの値が、値集合ソースに指定したテーブル/クエリに存在しない
場合、その値自体が表示されたと思いますので、「コンボボックスに格納された
値がテキスト」(で、『入力チェック』プロパティが「いいえ」)なのであれば、
ご質問の動作も可能です。

ですが、既にそうされていると思いますが、コンボボックスの選択肢となるデータ
を別のテーブルに分割(→...続きを読む

QACCESSフォームのボタン表示

ACCESSフォームのボタン表示

ACCESS2000で作成したフォームのボタンはACCESS2007でも変わりません。
ACCESS2007で一から作成したMDBは、ボタンの表示スタイルが異なります。
※ボタンの角が丸く、マウスカーソルをボタンの上に当てるだけで色が変わる。
ACCESS2000で作成したMDBをACCESS2007で上記のように表示させる設定は
あるのでしょうか?
いろいろ見ても、見当たらないのです。
よろしくお願いします。

Aベストアンサー

[Office ボタン] - [Accessのオプション] - [カレントデータベース] で
「フォーム上のコントロールに Windows のテーマを使用する」にチェック。

QAccsee2003 フォームのコンボボックスの同期について

Access2003のフォームのコンボボックスで困っています。

フォームのコンボボックスで都道府県を選んだ次のコンボには該当都道府県の市町村を表示させたいのですが、うまくできません。

都道府県テーブルには都道府県のみ、市町村テーブルには市町村のみが入っていまして、都道府県IDでリレーションシップしてあります。

同じような質問がありまして何度かやってみましたが、エラーが出て実現できませんでした。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=233843
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1969695

ご教授いただければ幸いです。よろしくお願いいたします。

Aベストアンサー

No1です。

仮に
市町村テーブル名=[T_市町村]
市町村テーブルのフィールド名 = [市町村ID]、[都道府県ID]、[市町村名]、、、
フォームの名前=[フォーム名]
フォーム上のコンボボックスの名前を [コンボ都道府県]、[コンボ市町村] であるとします。

[コンボ市町村] のプロパティで
値集合タイプに    テーブル/クエリ
値集合ソースに    SELECT [T_市町村].[市町村名] FROM [T_市町村] WHERE [T_市町村].[都道府県ID] = [FORMS]![フォーム名]![コンボ都道府県]

[コンボ都道府県]の更新後処理のイベントに

ME.コンボ市町村.VALUE = ""
ME.コンボ市町村.REQUERY

とすればできると思います。

エラーの原因については、コンボボックスの名前が正しく記述されていないのだと思いますが、
1.コンボボックスのイベントの更新後処理のところが
[イベント プロシージャ]
となっていますか? これはビルだの選択のときに
コードビルダを選んでください。
2.コンボボックスの名前が
me.xxxxxx.requery の xxxxxx の部分となっていることを確認してください。 

No1です。

仮に
市町村テーブル名=[T_市町村]
市町村テーブルのフィールド名 = [市町村ID]、[都道府県ID]、[市町村名]、、、
フォームの名前=[フォーム名]
フォーム上のコンボボックスの名前を [コンボ都道府県]、[コンボ市町村] であるとします。

[コンボ市町村] のプロパティで
値集合タイプに    テーブル/クエリ
値集合ソースに    SELECT [T_市町村].[市町村名] FROM [T_市町村] WHERE [T_市町村].[都道府県ID] = [FORMS]![フォーム名]![コンボ都道府県]

[コンボ都道府県]の更新...続きを読む

QExcelで作成されたフォームをAccessにコンバージョンしたいので

Excelで作成されたフォームをAccessにコンバージョンしたいのですが、フォームのインポートはできないのでしょうか?
Accessのフォーム作成画面から、インポートを選択していって、Excelファイルを開くのですが、シートしか選択できません。
コントロールのコピペもできないみたいですが。。。
Excelで作成されたフォームはAccessにはインポートできないのですか?
コーディングをそっくり使用することはできなくても、せめてフォームのデザインはコピーしたいのですが。。。(> <)
よろしくお願いします。m(_ _)m

Aベストアンサー

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはどうでしょう。
http://www.accessclub.jp/bbs2/0080/beginter24987.html
同じ発想の人はいることはいるが。
ーー
VBAとVBのフォームはコードで扱う上で微妙に違うし、アクセスVBAとエクセルVBAでは違う点も多い。
またコントロールの生成もコードで行う方法は隠して、易しいD&Dやマウスによる移動、プロパティボックスでの入力にして易しくしています。
エクセルのUserForm1のフォームも本格的なものではないサービスのような気がする。エクセルで第3者を巻き込んだ業務の開発までは予定して無いように推測する(何でもエクセル的な過大期待が横行している)。
それにエクセルでのセルとの連携をつけた機能LinkedCell、FillいstRangweなどはエクセル特有で、RecordSourceのSQL指定やフォーム指定はアクセス特有と思います。
外観を決めるサイズや書式関係は(エクセルでフォームやコントロールの)プロパティーメモー(アクセスでのフォームやコントロールの)プロパティ設定でやや似せて移せるかもしれない。
エクセルバージョン内の相違、エクセル・アクセルで使えるコントロールの種類の相違などもあります。

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはど...続きを読む

Qサブフォームでのテキストとコンボ連動について

ACCESS2002でDBを構築している初心者です。

メインフォームに2つのサブフォーム(サブ1、サブ2)埋め込みを
サブフォーム同士を連動させたフォームを作成中です。

2つのサブフォームのうちのサブ1にテキストボックスを基に
コンボボックスでSQLを実行して抽出結果を
コンボボックスに表示させています。

下記でaの値が変更されるとbにその値を送っています。
Private Sub a_AfterUpdate()

DoCmd.Requery "b"

Me!a.Requery

End Sub

その後bの値集合ソースでSQLを実行しております。
SQLの抽出条件「forms!サブ1!a」として、上記で取得した
テキストボックスaを使用しております。

サブ1をメインフォームで開き上記を実行すると値を抽出します。

しかしサブフォームで実行した際に、「パラメータの入力」が
出てきて手動で入力しなくてはいけません。

サブフォーム上で実行する際に、イベントプロシージャや
SQLの抽出条件を更新しなくてはならないのでしょうか。

お手数おかけいたしますが、ご教授よろしくお願いいたします。

ACCESS2002でDBを構築している初心者です。

メインフォームに2つのサブフォーム(サブ1、サブ2)埋め込みを
サブフォーム同士を連動させたフォームを作成中です。

2つのサブフォームのうちのサブ1にテキストボックスを基に
コンボボックスでSQLを実行して抽出結果を
コンボボックスに表示させています。

下記でaの値が変更されるとbにその値を送っています。
Private Sub a_AfterUpdate()

DoCmd.Requery "b"

Me!a.Requery

End Sub

その後bの値集合ソースでSQLを実行しております。
SQLの抽出...続きを読む

Aベストアンサー

> SQLの抽出条件「forms!サブ1!a」として、上記で取得した
> テキストボックスaを使用しております。
>
> サブ1をメインフォームで開き上記を実行すると値を抽出します。

Forms!メインフォーム名!サブフォームコントロール名.Form!a

としてください。

あるいは、単純に、[a] とするだたけでもOKです。Formsの指定がない場合は自分自身のフォームから探しますので。また、この方法だと単独で開いても、サブフォームとして開いても正常に動作しますのでお勧めです。

QVBからmdbファイル(Access2000)の特定のフォームを開きたい?

VisualBasicのフォームに配置したコマンドボタンをクリックすることで、特定のmdbファイルをAccess2000で開き、開くと同時に特定のフォームが表示されるようにしたいのですが、こんなことできますか?できるとすればどのようにすればよいのですか?

例えば、C:\商品管理\在庫一覧.mdbにフォーム商品があるとしたとき、
Form1のcommand1をクリックすると、C:\商品管理\在庫一覧.mdbがAccess2000で開き、フォーム商品が最初に表示されるようにしたいのですが・・・
ちなみに、Access2000の起動時の設定では他のフォームが最初に開くようになっています。
よろしくお願いします。

Aベストアンサー

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visible = True

'表示させたいフォームを開く
acs.OpenForm "フォーム名"


こんな感じで。

最後に、Accessを終わらせるときは

'オブジェクトの開放
Set acs = Nothing

で、オブジェクトを開放してください。

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visibl...続きを読む

Qアクセスのフォームのコンボボックスに表示させる対象をユーザーNo. で絞りたいのですが、どうすればよいでしょうか?

Access2003を使用しています。
フォームに配したコンボボックスのことで教えてください。
フォームには、ユーザーNoを入れるテキストボックスがあります。
その下にはユーザーが所有している商品番号を入れるコンボボックスがあります。
ユーザーナンバーを手打ちで入力すると、商品番号のコンボボックスにはそのユーザーが所有している番号だけが表示されるようにしたいのです(商品番号は1000個ぐらいあります)。

ユーザーが所有している商品番号は、商品リストと顧客名簿というテーブルを連結させたクエリで出来上がっています。

どのようにしたらよいのでしょうか?
ご教示をお願いいたします。

Aベストアンサー

>そのフォームのユーザNO全てが同一のものになってしまいました。
非連結だからでしょう
ソーステーブルにユーザーNoフィールドを設け、連結してください

また帳票フォームでコンボの絞込みを行うと
カレントレコード以外の表示がおかしくなります
これを正しく表示するようにするにはまた別のテクニックが要ります
調べてみて分からなければ別の質問を立てて下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報