Access VBA質問箱 IV

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

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


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

【3894】Re:なぜDSUMができないんでしょうか?
回答  YU-TANG WEB  - 04/11/25(木) 18:37 -

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

> 累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & [収支年月日] & "#"))

累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & Format$([収支年月日],"yyyy\/mm\/dd") & "#"))

…とか。
・ツリー全体表示

【3893】Re:AutoExec
お礼  にしもり  - 04/11/25(木) 18:11 -

引用なし
パスワード
   ▼MJ さん:
初歩的な質問にもかかわらず、ありがとうございました。
・ツリー全体表示

【3892】Re:AutoExec
回答  MJ  - 04/11/25(木) 17:48 -

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

マクロ名を AutoExec とすると、
MDBを開いた当初に、自動的に起動します。

通常、ユーザーに使用を開始させる前に、
処理すべき内容を、このマクロで指定します。
・ツリー全体表示

【3891】なぜDSUMができないんでしょうか?
質問  えなりん  - 04/11/25(木) 17:17 -

引用なし
パスワード
   初歩∞な質問で大変恥ずかしいですが・・・DSUM関数が使いこなせないのです。
累計を求めたいのに、なぜか全体の合計ばかりが表示されます。
ご伝授ください!
(ACCESS2000)

【収支台帳】テーブル
ID 収支年月日 科目 金額
1  04-10-10 雑費 30,000
2  04-10-27 雑費 20,000
3  04-11-10 雑費 30,000
4  04-11-11 雑費   500
5  04-11-11 雑費   500
6  04-11-13 雑費 10,000

クエリーで収入年月日を元にした累計を求めようと、
累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & [収支年月日] & "#"))
というフィールドを作りました。
すると、
収支年月日 科目 金額  累計
04-10-10 雑費 30,000 91,000
04-10-27 雑費 20,000 91,000
04-11-10 雑費 30,000 91,000
04-11-11 雑費   500 91,000
04-11-11 雑費   500 91,000
04-11-13 雑費 10,000 91,000
という結果になりました。
・ツリー全体表示

【3890】AutoExec
質問  にしもり  - 04/11/25(木) 16:30 -

引用なし
パスワード
   こんにちは。
初歩的質問ですみません。
どなたかAutoExecと普通のマクロの違いを教えてください。
・ツリー全体表示

【3889】Re:アクセスがインストールされていない端...
回答  Gin_II  - 04/11/24(水) 22:54 -

引用なし
パスワード
   >OLEや

Excelで組むときにも、CreateTable("Access.Application") とかを
使わなければ。
・ツリー全体表示

【3888】Re:アクセスがインストールされていない端...
回答  Gin_II  - 04/11/24(水) 22:52 -

引用なし
パスワード
   >現在MSAccess2000を使用してプログラミングし、
>OLEやADOなど利用してMSExcel2000からアクセスし

結局、どちらでプログラムを組んでいるんですか?
Excelですべて組めば、Accessのアプリは必要ないと思いますけど。
・ツリー全体表示

【3887】アクセスがインストールされていない端末...
質問  tak  - 04/11/24(水) 18:38 -

引用なし
パスワード
   ものすごく初心者の質問で申し訳ありません。

現在MSAccess2000を使用してプログラミングし、
OLEやADOなど利用してMSExcel2000からアクセスし結果出力するツールを
作成しようと考えております。
作成したプログラムをリリースする端末にはAccessがインストールされていません。
mdbファイルとExcelをコピーしただけで稼動しますでしょうか?

教えてください。
・ツリー全体表示

【3886】Re:連続Query
質問  Chou  - 04/11/23(火) 16:51 -

引用なし
パスワード
   ちゅう吉さん、早速のお返事有難う御座いました。

当方のコードミスが有れば御容赦願いますが、
Executeを利用した場合、転送先のデーターベースに
テーブルが無ければ問題無い様ですが二度目の折には
エラーが出る様です。
その為にTableDefsにて転送先のデーターベースのテーブルを
予め探して、インポートするテーブルが存在する場合には
レコードを削除してからExecuteメソッドを行っておりました。
現在、此れを簡素化中です。

又、Accessは2002を利用致しております。
最初の説明不足で誠に申し訳有りませんでした。
御容赦願います。

尚、追加説明ですがインポートするテーブルは20程になり、
インポート後にはこれらのテーブルを利用して新規テーブルを
作成して必要レコードを転記致しております。
3年ほど前のデーターベースに新規機能を追加したくて
再構築中です。

余談かも知れませんがAccess95,97の時には問題なくコードが
走った様な気がしますが、思い違いでしょうかね・・・・・。

当方、全て独学で基礎が不足致してるかと自覚致しており
お手を煩わせて申し訳有りませんが最善策が有りましたら
御教授願います。

以上。
・ツリー全体表示

【3885】Re:連続Query
回答  ちゅう吉  - 04/11/23(火) 14:27 -

引用なし
パスワード
   >現状の説明:レコードセットを開く前にメッセージボックスを開いて、
>次のコードとの間にタイムラグを取る様にしてエラーを
>回避致しております。
>
>皆様はどの様にされておられるのでしょうか?。
>最善策が有りましたら御教授願います。


クエリの実行は非同期の DoCmd.RunSQL は使用せず CurrentDb.Execute を使用しています。(DAO)

DoCmd.RunSQL strSQL

CurrentDb.Execute strSQL
・ツリー全体表示

【3884】連続Query
質問  Chou  - 04/11/23(火) 12:23 -

引用なし
パスワード
   御教授願います。

他のDatabaseよりテーブルをインポートして、連続して
このテーブルをレコードセットで開いた時にエラーが
発生致します。

例:DAO DatabaseとADOのConnection等は設定されている条件下。
Dim db As DAO.Database
  Set db = CurrentDb
Dim strSQL as String
  strSQL "Select * Into Table_B From Table_A In (他のデータベースパス)"
  DoCmd.RunSQL strSQL

Dim rst As New ADODB.Recordset
  rst.Open "Table_B", cn

現状の説明:レコードセットを開く前にメッセージボックスを開いて、
次のコードとの間にタイムラグを取る様にしてエラーを
回避致しております。

皆様はどの様にされておられるのでしょうか?。
最善策が有りましたら御教授願います。
以上。
・ツリー全体表示

【3883】Re:コンボボックスの連携がうまくいきませ...
お礼  なべなべ  - 04/11/23(火) 5:43 -

引用なし
パスワード
   クロさんへ
お世話になっております。
いろいろとご迷惑をおかけしてまいりましたが、お陰さまで問題が解決しました。
どうもありがとうございました。

また、質問することがあると思いますがその節もよろしくお願い申し上げます。

それにしてもAccessは難しいですね。これからもっと精進したいと思います。

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

【3882】罫線
質問  かず  - 04/11/22(月) 14:26 -

引用なし
パスワード
   レポートに縦罫線を引きたいのですが、セクションやサブレポートの部分に罫線が無くなってしまいます。
何か良い方法はないものでしょうか?
・ツリー全体表示

【3881】サブレポート表示について
質問  かず  - 04/11/22(月) 11:30 -

引用なし
パスワード
   請求書(A4)を作成しているのですが数量の桁数によりサブレポートを3個ほどさくせいして、各フッターに入れています。
すると一番上位のフッターのサブレポートにデータが無い場合次のサブレポートが次のページに表示されてしまいます。(できれば詰めて印刷したいのですが・・・)
VBAでなんとかしようと思うのですが、だれか教えてください。
・ツリー全体表示

【3880】Re:コンボボックスの連携がうまくいきませ...
回答  クロ  - 04/11/22(月) 10:50 -

引用なし
パスワード
   >SELECT 社員ID, 社員名 FROM 社員マスタ WHERE 部署ID = Forms!フォームA!cmb部署
>と修正したらうまく行きました。フォームA上のコンボボックスの名前が「cmb
>部署」としているからではないかと考えています。

仰るとおりです。申し訳ないm(__)m
しかも、SELECT のスペル間違えているし...(鬱

>これらの結果を踏まえ、見積もり書に入力できるよう作成しているのですが、
>入力はできるのですが、新規レコードに今までと違う部署名を選択すると
>今までの担当者名が見えなくなってしまいます。
>(例えば、「営業1課 佐藤」を作成したレコードの次に、「営業2課 鈴木」を
>入力すると、「営業1課 佐藤」→「営業1課    」となってしまいます)。
>見積もり書のテーブルには「営業1課 佐藤」の記録は残っているので、フォーム
>上での表示の問題だと思うのですが、よい解決策はないものでしょうか?

この現象はコンボの値集合ソースの1列目以外をコンボに表示すると
起きます。
※この表示方法も私的には特殊と思っています。実際は数値型の社員IDに対して
 テキスト型の社員名を表示しているわけですから...

cmb担当者に対してRequery行わなければ件の絞り込みはできませんし、行うと
この現象が起きることになります。
現状のままで回避する方法は私的には思いつきません。

1つは案としては
現在入力されているフォームのレコードソースはテーブル(テーブルAとします)と
なっていると思います。このレコードソースを以下のように変更して

SELECT テーブルA.*, 社員マスタ.社員名
FROM 社員マスタ RIGHT JOIN テーブルA ON 社員マスタ.社員ID=テーブルA.社員ID;

して、テーブルAの社員IDと結合した社員名を表示できるようにします。

cmb担当者のプロパティで
列幅を0.5cm;2.54cm
としてcmb担当者には「ID」を表示するようにします。
cmb担当者の隣にテキストボックスを配置し、コントロールソースを「社員名」に
します。このテキストボックスのプロパティの「使用可能」を「いいえ」として
「編集ロック」を「はい」にしておけば弄られることはないと思います。

如何でしょうか?
・ツリー全体表示

【3879】Re:コンボボックスの連携がうまくいきませ...
質問  なべなべ  - 04/11/21(日) 21:13 -

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

>では、cmb部署のプロパティで
>列幅の1列目を0cmにしてください。
>例) 0cm;2.54cm

→これはバッチリでした。ありがとうございました。


>cmb担当者のプロパティは
>値集合ソースはやはり、
>SELCT 社員ID, 社員名 FROM 社員マスタ WHERE 部署ID = Forms!フォームA!部署ID
>で問題ないと思います。

→これは見直してみましたが、ダメでした。
しかしながら、
SELECT 社員ID, 社員名 FROM 社員マスタ WHERE 部署ID = Forms!フォームA!cmb部署
と修正したらうまく行きました。フォームA上のコンボボックスの名前が「cmb
部署」としているからではないかと考えています。

あと、前回、うまく行かなかったのは「=cmb担当者.Column(1)」を新規テキスト
ボックスではなく、担当者選択用コンボボックスに入力していたことが原因と思
います。ご迷惑をおかけしました。

これらの結果を踏まえ、見積もり書に入力できるよう作成しているのですが、
入力はできるのですが、新規レコードに今までと違う部署名を選択すると
今までの担当者名が見えなくなってしまいます。
(例えば、「営業1課 佐藤」を作成したレコードの次に、「営業2課 鈴木」を
入力すると、「営業1課 佐藤」→「営業1課    」となってしまいます)。
見積もり書のテーブルには「営業1課 佐藤」の記録は残っているので、フォーム
上での表示の問題だと思うのですが、よい解決策はないものでしょうか?

これが解決できれば、終わりだと思っています。

以上、ご多忙中とは存じますがご回答をお願いします。
・ツリー全体表示

【3878】Re:コンボボックスのリストにフィルタはか...
お礼  b-boss E-MAIL  - 04/11/20(土) 9:51 -

引用なし
パスワード
   クロ さん:
ありがとうございました。
少し、戸惑いましたがうまくいきました。
SQLの勉強が必要ですね!
またよろしくお願いします。
・ツリー全体表示

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

引用なし
パスワード
   >あと、部署名をプルダウンした場合、オートナンバーと部署名の両方が見える
>ようになり、選択するとオートナンバーが表示されます。これを部署名のみに
>したいのですが、良い方法はないものでしょうか?

では、cmb部署のプロパティで
列幅の1列目を0cmにしてください。
例) 0cm;2.54cm

注意してほしいのが、社員マスタのルックアップウィザードで作成した部署IDです。
データ型は「数値型」なのに表記はテキストになっていませんか?
これは対象となる(値集合ソース)テーブルに主キーがある場合にこのようになります。
他人に説明するときは特に注意してください。

cmb担当者のプロパティは
値集合ソースはやはり、
SELCT 社員ID, 社員名 FROM 社員マスタ WHERE 部署ID = Forms!フォームA!部署ID
で問題ないと思います。

こちらも列幅を1列目を0cmにしてください。
そうすれば担当者名がコンボ内に表示されるはずです。

ただし、両コンボともに表示されているのは部署名/担当者名ですが、実際に連結しているのは
1列目の各IDとなりますので注意してください。
・ツリー全体表示

【3876】Re:コンボボックスの連携がうまくいきませ...
質問  なべなべ  - 04/11/19(金) 21:58 -

引用なし
パスワード
   返信ありがとうございます。しかしながら今一歩のところでうまく行き
ませんでした。

テーブル:部署マスタ
 部署ID:数値型 (主キー)←オートナンバーにしました
 部署名:テキスト型

テーブル:社員マスタ
 社員ID:数値型(主キー)←オートナンバーにしました
 社員名:テキスト型
 部署ID:数値型 ←ルックアップウィザードで作成しました。

部署選択用コンボボックスはご指示通り作成しました。
担当者選択用コンボボックスはご指示通り作成しましたが、担当者名
が空白になったので次のように修正したところ、表示されるようには
なりました。

SELECT [社員マスタ].[社員ID], [社員マスタ].[社員名] FROM 部署マスタ INNER JOIN 社員マスタ ON [部署マスタ].[部署ID]=[社員マスタ].[部署ID] WHERE ((([部署マスタ].[部署ID])=[Forms]![フォームA]![cmb部署]));

更新後処理もご指示通り作成しました。

これで部署名を選択すると担当者名がプルダウンで表示されるようには
なったのですが、選択することができません。

あと一歩だと思うのですが、よい解決策はないものでしょうか?

あと、部署名をプルダウンした場合、オートナンバーと部署名の両方が見える
ようになり、選択するとオートナンバーが表示されます。これを部署名のみに
したいのですが、良い方法はないものでしょうか?

以上、いろいろとありますが、ご協力をよろしくお願い申し上げます。


>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
>とすればできあがりです。
・ツリー全体表示

【3875】Re:コンボボックスのリストにフィルタはか...
回答  クロ  - 04/11/19(金) 9:52 -

引用なし
パスワード
   http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=3872;id=access
上が参考になります。

受注コンボボックスは
値集合ソース:受注テーブル
その他のプロパティは適宜に...
このときモデルコードは3列めにあるとします。

「Assy」コンボボックスは
値集合ソース:Assyテーブル
その他のプロパティは適宜に...
としてください。

クエリ上では「Column プロパティ」が使えないので受注コンボボックスの
更新後処理のイベントで値集合ソースを代入します。

Me.Assyコンボ名.RowSource = "SELECT Assyコード" & _
              " FROM Assyテーブル" & _
              " WHERE モデルコード='" & _
              Me.受注コンボ名.Column(2) & "';"
Me.Assyコンボ名.Requery

※モデルコードか数値型の場合は「'シングルクォーテーション」を
 取ってください。

こんな感じでしょうか?
・ツリー全体表示

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