Access VBA質問箱 IV

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

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


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

【3874】Re:コンボボックスの連携がうまくいきませ...
回答  クロ  - 04/11/19(金) 9:21 -

引用なし
パスワード
   2つのコンボボックスが同フォーム(仮にフォームAとします)上に
あると仮定します。

テーブル:部署マスタ
 部署ID:数値型 (主キー)
 部署名:テキスト型
 ※予めレコードを入れておくこと

テーブル:社員マスタ(担当者マスタでも可)
 社員ID:数値型(主キー)
 社員名:テキスト型
 部署ID:数値型
 ※予めレコードを入れておくこと

部署選択用コンボボックスをウィザードで作成してください。
作成後、プロパティの「名前」を「cmb部署」としてください。
同プロパティで以下を確認してください。
値集合タイプ:テーブル/クエリ
値集合ソース:部署マスタ…テーブル名です。
列数:2
連結列:1

担当者選択用コンボボックスを作成します。
ウィザードで初めに開くダイアログでキャンセルを押してください。
コンボボックスがフォーム上にできので、プロパティに...
名前:cmb担当者
値集合タイプ:テーブル/クエリ
値集合ソース:SELCT 社員ID, 社員名 FROM 社員マスタ WHERE 部署ID = Forms!フォームA!部署ID
列数:2
連結列:1
とします。
※このときフォーム上に社員名を表示したいなら非連結テキストボックスを作成し
 コントロールソースを「=cmb担当者.Column(1)」としてください。

最後に部署選択用コンボボックスのプロパティ/イベント/「更新後処理」に
Me.cmb担当者.Requery
とすればできあがりです。
・ツリー全体表示

【3873】Re:文字列になっている計算式の動かし方に...
お礼  しゃお  - 04/11/19(金) 8:58 -

引用なし
パスワード
   ▼クロ さん:
>Eval関数で解決?
>Debug.Print Eval("10+5/2")
>で7.5が返ると思います。

遅くなりましてすみません。確認できました。
ありがとうございます。
本当に助かりました。
・ツリー全体表示

【3872】コンボボックスの連携がうまくいきません
質問  なべなべ  - 04/11/18(木) 21:37 -

引用なし
パスワード
   Accessの初心者です。お願いします。

見積書に部署名と担当者名を入力したいと思います。
部署名を決定するとそれにひもづいた担当者名だけを入力できるようにしたいのですがやり方がよくわかりません。
2004/4/9のトピックをみたのですが、部署名が100個くらいあるものを作りたいと思っているので、100条件も入力できません。

なにか、簡単な方法はないでしょうか?

すいませんお願いします。
WindowsXp
Access2000
・ツリー全体表示

【3871】コンボボックスのリストにフィルタはかけ...
質問  B-BOSS  - 04/11/18(木) 18:13 -

引用なし
パスワード
    はじめまして、リレーションシップの概念がいまいち掴めず、苦労しております。
現在、会社のトップからAcceesを使え言われて、いろいろチャレンジしているのですが、
わからない事だらけです。 どなたか、教えてください。

 われわれの会社は製造業で、受注生産です。いろいろな部品を組み合わせて
製品を作っているのですが、一度に完成品を作るのではなく、ブロック毎に組立て
最終的にそのブロックを合体させて、完成品が出来る形です。
 そのブロックの事をAssyといいます。このAssyはモデル毎にさまざま物があります。

さて、この生産結果を日報として、Acceesに入力するために下記の様なテーブルを作成
しました。
・受注テーブル
 受注コード/受注No,/モデルコード/etc

・モデルテーブル
 モデルコード/モデル名/etc

・Assyテーブル
 Assyコード/モデルコード/Assy名/etc

 これらのテーブルをモデルコードでリレーションしまいた。
最終的に各受注No,の各Assyに固有の生産管理No,が必要な為、
下記の様なテーブルを作成しました。
・生産管理No,テーブル
 生産管理No,コード/受注コード/Assyコード
 
後はこの「生産管理No,テーブル」の入力フォームを作成しました。

 生産管理No,コードはオートNo,フィールドです。
受注コード(コンボボックス)を入力後、Assyコード(コンボボックス)を
入力したいのですが、Assyコードを入力する際、Assyテーブルの全てのデーターが
リストとして表示され、このAssyコードのコンボボックスのリストにフィルタを掛ける
事はできないのでしょうか?
 つまり、受注コードを入力すると、Assyコードのコンボボックスリストには
該当するAssyコードのみがリストとして出る様に出来ないでしょうか?

 わかる方、いらっしゃいましたら教えてください。
  よろしくお願いします。
・ツリー全体表示

【3870】Re:文字列になっている計算式の動かし方に...
回答  クロ  - 04/11/18(木) 18:03 -

引用なし
パスワード
   Eval関数で解決?
Debug.Print Eval("10+5/2")
で7.5が返ると思います。
・ツリー全体表示

【3869】Re:文字列になっている計算式の動かし方に...
質問  しゃお  - 04/11/18(木) 16:12 -

引用なし
パスワード
   ▼クロ さん:
>計算式パターンは3つ以外にあるのでしょうか?

回答ありがとうございます。
計算式パターンは3つ以上あります。
というのも使用する計算式や項目が多い上に今後運用していく上でも増えていく
可能性があるとの事で、内部的に計算式を持たせず計算式そのものをマスタの中
に登録してしまおうと思いこのような形としました。
・ツリー全体表示

【3868】Re:文字列になっている計算式の動かし方に...
発言  クロ  - 04/11/18(木) 15:17 -

引用なし
パスワード
   計算式パターンは3つ以外にあるのでしょうか?
・ツリー全体表示

【3867】文字列になっている計算式の動かし方につ...
質問  しゃお  - 04/11/18(木) 14:19 -

引用なし
パスワード
   はじめまして。
Access2000にてデータベースを作成しているのですが下記の症状の解決方法が
わかりません。
どなたか分かる方いましたらご教授下さい。

とあるマスタのフィールドに計算式自体を登録し、その計算で求められた数値を
表示させたいのです。

計算式マスタ     項目マスタ          入力データ
ID  | 計算式   項目Code | 項目名   DataNo |項目Code| 値
001 | "(A+B)/C"    001 |  A     00001 |  001 | 10
002 | "(A+C)-B"    002 |  B     00001 |  002 |  5
003 | "A+B+C"     003 |  C     00001 |  003 |  2

実際には入力データに計算に必要な各項目の数値をそれぞれ入れていき入力
データに対応した計算式を計算式マスタより取り込み計算させようとしています。

上にある例として入力される入力データのDataNo「00001」に対する計算式は、
計算式マスタ「001」を使用しるとします。
この場合項目Aには10、項目Bには5、項目Cには2が入ってるので(10+5)/2となり
求めたい値が7.5になります。

VBAで行った処理として、計算式マスタ001の計算式文字列である"(A+B)/C"をLoop文で頭から1文字ずつ回しAやBの部分を値の10や5へと変換し結果的に"(10+5)/2"
という文字列へ変換しています。
あとはこの文字列になってしまっている計算式を動かして答えである7.5を導き
たいのですが方法がわかりません。

何か良い手はありますでしょうか?
分かりにくい説明で申し訳ありませんがよろしくお願い致します。
・ツリー全体表示

【3866】Re:パラメータクエリの条件を変数化したい
お礼  山田  - 04/11/18(木) 13:02 -

引用なし
パスワード
   出来た!!!!!!!!
うまく出来ました。
ほんとに有難うございます。
謝謝!
助かりました。
・ツリー全体表示

【3865】Re:パラメータクエリの条件を変数化したい
回答  hatena  - 04/11/18(木) 12:40 -

引用なし
パスワード
   >クエリで、kKINGAKUフィールドの隣に HANTEIフィールドを追加し
>HANTEI:pX() としました。
>
>そして
>
>Function paramX()
>   pX = IIf([KINGAKU] > 1000, "BIG", "SMALL")
>End Function
>
>としてクエリを実行すると。
>コンパイルエラーとなり「指定した名前では定義されていません」と表示されます

標準モジュールからは、クエリのフィールドは見えません。
引数で渡す必要があります。
他にもおかしなところがありますね。

Function paramX(V)
  paramX = IIf(V > 1000, "BIG", "SMALL")
End Function

クエリでは、

HANTEI: paramX([KINGAKU])

でどうでしょうか。
・ツリー全体表示

【3864】Re:パラメータクエリの条件を変数化したい
お礼  山田  - 04/11/18(木) 11:08 -

引用なし
パスワード
   条件抽出では成功しました。有難うございました。
フィールドへの設定は下記のようにしましたがうまくいきません。

クエリで、kKINGAKUフィールドの隣に HANTEIフィールドを追加し
HANTEI:pX() としました。

そして

Function paramX()
   pX = IIf([KINGAKU] > 1000, "BIG", "SMALL")
End Function

としてクエリを実行すると。
コンパイルエラーとなり「指定した名前では定義されていません」と表示されます

何か間違っているでしょうか?ご教授下さい。
・ツリー全体表示

【3863】Re:パラメータクエリの条件を変数化したい
回答  hatena  - 04/11/18(木) 9:35 -

引用なし
パスワード
   >パラメータクエリは実行の都度、条件をダイアログボックスから入力しますが、
>予め、変数に条件を代入しておき、クエリを実行させる方法は無いのでしょうか?
>プログラミングすれば済む事ですが、(簡単便利な?)クエリを使って実行したいのです。
>「聞くところによると、dBASE では@を付ければ変数として認識してくれた」?そうですが、Accessでは出来ないのでしょうか?

標準モジュールに簡単な関数を作製すれば可能です。

Public X

Function GetX()
  GetX = X
End Function

クエリで抽出条件欄で

GetX()

と記述する。
・ツリー全体表示

【3862】パラメータクエリの条件を変数化したい
質問  山田  - 04/11/18(木) 9:29 -

引用なし
パスワード
   Access2002 mdb での質問です。
パラメータクエリは実行の都度、条件をダイアログボックスから入力しますが、
予め、変数に条件を代入しておき、クエリを実行させる方法は無いのでしょうか?
プログラミングすれば済む事ですが、(簡単便利な?)クエリを使って実行したいのです。
「聞くところによると、dBASE では@を付ければ変数として認識してくれた」?そうですが、Accessでは出来ないのでしょうか?
ご教授お願いします。
・ツリー全体表示

【3861】Re:開いているクエリをDoCmdを使って閉じ...
お礼  yamada  - 04/11/17(水) 14:39 -

引用なし
パスワード
   ▼かみちゃん さん:

>DoCmd.Close acQuery, "クエリ名"
>でだめですか?

なるほど、Closeにはこういう使い方もあるんですね、ヘルプの引き方が
悪かったようです。
便乗して、OpenQueryもなにか引数を指定できそうなので、少し探してみます。
Accessは奥が深いですね。

ありがとうございました。
・ツリー全体表示

【3860】Re:開いているクエリをDoCmdを使って閉じ...
回答  かみちゃん  - 04/11/17(水) 12:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>DoCmd.openQuery "クエリ名" で出したデータシートを
>プログラム内で消したいのですが、上手くいきません。

DoCmd.Close acQuery, "クエリ名"
でだめですか?
・ツリー全体表示

【3859】Docmdについて
質問  yamada  - 04/11/17(水) 12:02 -

引用なし
パスワード
   いつもお世話になっております。

DoCmd.openQuery "クエリ名" で出したデータシートを
プログラム内で消したいのですが、上手くいきません。
ヘルプやCtrl+スペースでそれらしい単語を引っ張ってきたのですが
上手くいきません。

DoCmd.ObjectDelete
DoCmd.Close

前者の記述では、何も起こらず、後者ではFormそのものが閉じてしまいました。

どうすれば呼び出したデータシートを消去できるでしょうか?
・ツリー全体表示

【3858】Re:全てのプロシージャをテキストファイル...
回答  MJ  - 04/11/15(月) 14:38 -

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

Moduleオブジェクトで、
ProcStartLine、ProcCountLines、ProcBodyLine、Lines プロパティ等を
用いて、テキストに出力されては如何でしょう。
詳細は、ヘルプをご参照下さい。

AC2000であれば、
SaveAsText メソッドを用いる方法もあります。
これは、オブジェクトをテキストに出力しますので、
クラスモジュールの場合、オブジェクトのプロパティ値も出力されます。
あと、ヘルプには記載されていません。

構文は、以下の通りとなります。
SaveAsText ObjectType As AcObjectType, ObjectName As String, FileName As String

例: SaveAsText acModule,"Module1","C:\Module1.txt"

ObjectType: acForm,acMaclo,acModule,acQuery,acReport
テーブルの場合だけは、6を指定します。
但し、オブジェクトの指定は無視され、
全テーブルのデータ込みで出力されます。
・ツリー全体表示

【3857】Re:クエリを保存する方法
お礼  yamada  - 04/11/15(月) 13:31 -

引用なし
パスワード
   遅くなりましたが、無事できました。
とりあえず、上司に確認してもらえそうです。
ありがとうございました。
・ツリー全体表示

【3856】全てのプロシージャをテキストファイルに...
質問  ハドデガ  - 04/11/15(月) 11:16 -

引用なし
パスワード
   全てのフォームモジュール、標準モジュール、クラスモジュール
レポートモジュール(って言葉あるのかな?)
に記述されたプログラムをテキストファイルに出力する方法を教えて下さい。

↑これが実現できたら、プロジェクトで宣言した、全ての変数、定数を
抜き出そうと思ってます。
・ツリー全体表示

【3854】Re:ACCESS 主キー情報取得方法
お礼  Wハリケーン  - 04/11/14(日) 0:55 -

引用なし
パスワード
   YU-TANG さん

回答ありがとうございます。Wハリケーンです。
以下の方法で無事解決致しました。早々の回答ありがとうございました。

Private Sub GetPrimaryKeyFields (TableName As String)
Dim db As DAO.DATABASE
Dim tbd As DAO.TableDef
Dim idx As DAO.Index
Dim fld As DAO.Field
Set db = CurrentDb
Set tbd = db.TableDefs(TableName)
For Each idx In tbd.Indexes
  If idx.Primary = True Then
    For Each fld In idx.Fields
      Debug.Print fld.Name
    Next
  End If
Next
End Sub
・ツリー全体表示

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