
こんにちは。どうぞ、お願いします。
Access2000についてです。
ファイル名とテーブル名を取得して、フォーム上に、表示したいのですが、
どうしたら良いのでしょう。
・現在開いているファイルのファイル名から
拡張子(.mdb)を取り除いて、取得したいのです。
(「平成14年.mdb」から平成14年を取り出したい。)
・現在編集中のテーブル名を取り出したい。
(同じフォームで[01月]~[12月]というテーブルの中から
選んで入力するようにしていますが、現在入力中のテーブル名を
取り出したいのです。)
それで、ラベルなどに、入力し、表示できないだろうかと思います。
無理でしょうか? 可能ならば、
フォーム上に、"平成14年08月"という編集作業の年月が表示できるのですが。
(私の考えている希望なのです。)
どうぞ、お願い申し上げます。
No.7ベストアンサー
- 回答日時:
> まず、ファイルを開く時に、別のフォームを開いて、
> コマンドボタンをテーブルの数だけ作成し、クリック時のイベントに、
>
> DoCmd.OpenForm "Total"
> Forms!Total.RecordSource = "01月"
> のようにしてます。(そして、このフォームは閉じるようにしています。)
とのことですので、
まず、モジュールを新規作成して下さい。
VBAのウィンドウが開くので以下をコピーして下さい。
Option Compare Database
Public input_mm
ここまで。
次に、クリック時のイベント内の、
DoCmd.OpenForm "Total"
の上に以下の一行を追加してください。
input_mm = "01月"
で、前回の回答の
ラベル.caption = myName
を、
ラベル.caption = myName & input_mm
に変更します。
保存して、フォームを開いてみて下さい。
ラベルに表示されると思います。
不明な点があれば、また返信下さい。
# 少し遅くなるかもしれませんが。
出来ました~!
input_mm = "01月"を
input_mm = "12月"まで、書き込んで、
動作を確認しました。ありがとうございました。
本当に、スイマセンでした。お礼申し上げます。
No.6
- 回答日時:
再びmaruru01です。
誰の方法でもいいですが、最初のフォームのLoadイベントでファイル名を取得し、グローバル変数に格納しておきます。
グローバル変数は、標準モジュールに、
Public AppFileName As String
などとPublicで宣言します。
こうすると、プログラム中のどこでも使用出来ます。
あとは、"Total"フォームに、表示用のラベル[lbl年月]があるとして、
"Total"フォームのLoadイベントに、
Me!lbl年月.Caption = AppFileName & Me.RecordSource
コンボボックス("Total"フォーム上にあるんですよね)の更新後のイベントの、最後に以下を追加、
Me!lbl年月.Caption = AppFileName & Me![cboTableName].Text
maruru01さん、ありがとうございました。ラベル名を"lbl年月"としました。
私のスキル不足で、上手く行きませんでした。スイマセン。
どうぞ、お許しくださいませ。以下のようにしましたが、エラーが出ました。
Module1を新規作成し、
Option Compare Database
Public AppFileName As String
--------------
Private Sub Form_Load()
Me!lbl年月.Caption = AppFileName & Me.RecordSource
End Sub
--------------
Private Sub cboTableName_AfterUpdate()
Me.RecordSource = Me![cboTableName].Text
Me!lbl年月.Caption = AppFileName & Me![cboTableName].Text
End Sub
--------------
これで、コンボボックスからテーブルを選ぶと、
実行時エラー '2185':
コントロールがフォーカスを取得していないときに、
コントロールのプロパティまたはメソッドを参照することはできません。
デバッグ押下>以下を指し示します。
Me!lbl年月.Caption = AppFileName & Me![cboTableName].Text
--------------
それで、フォームのラベル"lbl年月"には、
テーブル名だけが表示されています。
これから、ご助言を参考にして、努力し、
解決したいと思います。ありがとうございました。
No.5
- 回答日時:
こんにちは。
maruru01です。ファイル名は、
Application.CurrentProject.FullName
で取り出せます。(ただし、フルパス付き)
このフルパスからファイル名(拡張子抜き)を取り出すのは、
InStrRev関数で後ろから"\"を探して、その後ろだけ取り出し、その後さらにInStrRev関数で後ろから"."を探して、その前だけを取り出します。
または、Path系APIを使っても出来ます。
http://homepage1.nifty.com/nishikawa/laboratory/ …
http://plaza5.mbn.or.jp/~heropa/vb122.htm#PathFi …
http://plaza5.mbn.or.jp/~heropa/vb122.htm#PathRe …
テーブル名は現在のプログラム次第です。
>同じフォームで[01月]~[12月]というテーブルの中から
>選んで入力するようにしていますが
ということなら、フォームのレコードソースをあるタイミングで変更していると思いますので、その時にレコードソースに設定するテーブル名をついでに拾えばいいと思いますが。
あとは、2つを繋げて、ラベルで表示するなり、フォームのキャプションに設定すればいいでしょう。
この回答への補足
maruru01さん、お願いします。
2つの方法で、テーブルを選んでいます。
まず、ファイルを開く時に、別のフォームを開いて、
コマンドボタンをテーブルの数だけ作成し、クリック時のイベントで、
テーブルを指定しています。
--------------
もう1つは、入力するフォームに、
コンボボックスを作り、選択するようにしています。
この2つを満足させるのは、難しいですか。
これが、Accessを用いて作る最初のファイルですので、
なにが、難しいのかわからないというのが、正直な所なんです。
どうぞ、お願いします。
No.4
- 回答日時:
現在開いているアプリケーションのフルパスはCurrentdb.Nameで取れます。
Dim strFileName As String
strFileName = CurrentDb.Name
strFileName = Mid(strFileName, InStrRev(strFileName, "\", , vbTextCompare) + 1, Len(strFileName))
strFileName = Left(strFileName, Len(strFileName) - 4)
ちなみにInStrRev関数はAccess2000以上対応です。
また現在編集中のテーブルはMe.RecordSourceで取れます。
クエリーがレコードソースだとクエリーの名前になって
しまいますが…。
No.3
- 回答日時:
>・現在編集中のテーブル名を取り出したい。
> (同じフォームで[01月]~[12月]というテーブルの中から
> 選んで入力するようにしていますが、現在入力中のテーブル名を
> 取り出したいのです。)
どうやって選んでいますか?
場合によっては、選んだ時に名称取得ができると思います。
この回答への補足
20020718さん、お世話になっています。
2つの方法で、テーブルを選んでいます。これも、問題でしょうか。
でも、1つに統合できません。
まず、ファイルを開く時に、別のフォームを開いて、
コマンドボタンをテーブルの数だけ作成し、クリック時のイベントに、
DoCmd.OpenForm "Total"
Forms!Total.RecordSource = "01月"
のようにしてます。(そして、このフォームは閉じるようにしています。)
--------------
もう1つは、入力するフォームに、
コンボボックスを作り、
更新後のイベントを以下のようにしています。
Private Sub cboTableName_AfterUpdate()
Me.RecordSource = Me![cboTableName].Text
End Sub
そして、値ソースに
"01月";"02月";"03月";"04月";"05月";"06月";"07月";"08月";"09 月";"10月";"11月";"12月"
を加えています。
--------------
というような次第なのですが、
テーブルの選び方が、二つあるので、難しいでしょうか?
どうぞ、よろしく、ご指導くださいませんでしょうか。お願い申し上げます。
まずは、お礼を申し上げます。ありがとうございます。
それで、テーブルの選び方なのですが、
1つに纏めたほうがいいと思い、
変更しようと思います。テーブルを選ぶ時は、
申し上げたうちの1つである、フォームを開いて、
コマンドボタンをクリックする方法にしたいと思います。
どうぞ、ご指導ください、お願いします。
No.2
- 回答日時:
yama3desuさんがどの程度お分かりかわかりませんが。
。。>・現在開いているファイルのファイル名から
> 拡張子(.mdb)を取り除いて、取得したいのです。
> (「平成14年.mdb」から平成14年を取り出したい。)
↑とりあえずこれだけ。
フォームに、
「ラベル」という名前のラベルを作成して下さい。
フォームのプロパティの「読み込み時」
の「▼」を押して、[イベント プロシージャ]としてください。
「▼」の横の「...」を押して下さい。
VBAのウィンドウが開くので以下をコピーして下さい。
Private Sub Form_Load()
Dim myPath
Dim myName
myPath = CurrentDb.Name
myName = Left(Dir(myPath), Len(Dir(myPath)) - 4)
ラベル.caption = myName
End Sub
ここまで。
保存して、フォームを開いてみて下さい。
ラベルに表示されると思います。
ファイル名を表示出来ました。ありがとうございます。
初心者なので、20020718様のように、
具体的に言っていただけると、助かります。
正直言うと、フォームのプロパティと言うのが、
上手く出なくて、戸惑いましたが。(~o~)
後は、テーブル名を解決するようにします。
ありがとうございました。お礼申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS フォームで入力データ...
-
Accessフォームが入力できません。
-
フォームのテキストボックス→ク...
-
access別のテーブルを参照して...
-
前のレコードの値を自動で入れたい
-
Accessでフォームに自動入力し...
-
「バリアント型でない変数に Nu...
-
入力した値をコンボボックスに...
-
インデックスまたは主キーにはn...
-
ACCESSで定型入力の〒が表示さ...
-
Accessでデータを更新したらそ...
-
エクセルで、抽出したデータだ...
-
動画編集アプリvllo抽出エラー
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
ACCESSのクエリー抽出条件にIIF...
-
未審査請求包袋抽出表作成とは...
-
X-Ripperというフリーウェアに...
-
Excel 文字列から6桁の数値の抽出
-
帳票フォームでのあるコンボボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
Accessでフォームに自動入力し...
-
入力した値をコンボボックスに...
-
インデックスまたは主キーにはn...
-
アクセスでコードを入れると名...
-
Accessフォームが入力できません。
-
access別のテーブルを参照して...
-
テキスト型のフィールドでハイ...
-
AccessVBAの値によっ...
-
ACCESS フォームで入力データ...
-
ACCESSでフォームのチェックボ...
-
ACCESS2000の帳票フォームでテ...
-
「バリアント型でない変数に Nu...
-
エクセル フィルタの抽出結果...
-
access ダブリ登録を防止したい
-
DELPHIでSQLテーブルを読み込み...
-
アクセスでの登録ボタンでの処...
-
ACCESS コンボボックスの絞込...
-
フォームのテキストボックス→ク...
おすすめ情報