Access VBA質問箱 IV

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

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


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

【6656】ツールバーの表示について
質問  ジュン  - 05/10/28(金) 13:55 -

引用なし
パスワード
   印刷プレビューを表示している時に 画面の上にツールバーが表示されていますが、その内の「印刷」と「閉じる」のボタンだけをVBAで表示することはできるのでしょうか。
もし、できるのであればその方法を教えて頂きたいのです。よろしくお願いします。
尚、メニューバーは非表示にしています。
・ツリー全体表示

【6655】Re:クエリ結果をテーブル追加する方法
回答  新米  - 05/10/28(金) 13:52 -

引用なし
パスワード
   たん さん

早々な回答ありがとうございます。

>ただ、クエリでテーブルを指定する際に、テーブルを別名表記しておいて、
>そのクエリをデザインモードで開き、SQL文を表示させ、
>SELECT T1.* FROM TableName AS T1;
>TableName部分を随時、書き換えればチョットましかな?
>(追加クエリも同様。)
># T1が別名表記。


>簡単に言うと、フォームを用意し、フォーム上でテーブル名を
>選択or入力し、それを元にSQL文を動的に発行し、
>サブフォーム部分にSQLの結果を表示させる。

どちらも、SQL文のテーブル名を変えていけばよいのですね。
やってみようと思います。
いろいろありがとうございました。
・ツリー全体表示

【6654】トグルボタンのイベントについて
質問  ウラヌス  - 05/10/28(金) 13:27 -

引用なし
パスワード
   初めて質問させていただきます。
タイムカードを自動計算するプログラムをAccess2000で作成中です。
有給のある/なし、残業ある/なし、早出ある/なしなどの入力するトグルボタンを作成しました。ボタンが押してるかどうかはっきりわかるように表題を■としてボタンを押すイベントで色を分ける方法を考えました。
このトグルボタンが1ヶ月31日に計186個あります。ひとつひとつイベントプロシージャで記述すればよいのですが、まとめてひとつのプロシージャで記述する方法はありますか?
別に「更新」などのコマンドボタンを作成して、コントロールを1から31までまわして、押してあればForeColorプロパティで色を変える、という方法はわかるのですが、この方法ではなくトグルボタンを押したらそのときに色が変わる方法を考えたいのですが。
よろしくお願いします。
・ツリー全体表示

【6653】Re:クエリ結果をテーブル追加する方法
回答  たん  - 05/10/28(金) 12:55 -

引用なし
パスワード
   >やりたいことは、
>1.Aテーブル
>↓
>2.クエリでAテーブルの項目を編集
>↓
>3.Bテーブルに追加で設定
>という感じですがAテーブルが複数あります。(例:A_9月、A_10月・・・)

まず、クエリやテーブルはデータを保存・表示する為のものであり、
データを入力するための画面代わりではありません。

# そういう使い方も出来ない訳ではありませんが、一般的にはイレギュラーです。
# データを入力するのは、入力用の画面を作り、使いましょう。

で、本題。

>なので追加クエリにした場合、Aテーブルのテーブル名が
>変わっていくので行き詰ってしまいました。

当然。1個のクエリは1個の処理しかできません。

ただ、クエリでテーブルを指定する際に、テーブルを別名表記しておいて、
そのクエリをデザインモードで開き、SQL文を表示させ、

SELECT T1.* FROM TableName AS T1;

TableName部分を随時、書き換えればチョットましかな?
(追加クエリも同様。)

# T1が別名表記。

SQL文が分からないなら、今のまま以外ではほぼ無理でしょう。

# 手法は無いわけではないが、サンプルを1個用意するレベルに
# なりそうで、私は、サンプルを提供する気は無いので。
# (悪いとは思うけどね。)

簡単に言うと、フォームを用意し、フォーム上でテーブル名を
選択or入力し、それを元にSQL文を動的に発行し、
サブフォーム部分にSQLの結果を表示させる。
・ツリー全体表示

【6652】Re:クエリ結果をテーブル追加する方法
質問  新米  - 05/10/28(金) 12:19 -

引用なし
パスワード
   たん さん
確かに説明不足だと思います。すみません。

やりたいことは、
1.Aテーブル

2.クエリでAテーブルの項目を編集

3.Bテーブルに追加で設定
という感じですがAテーブルが複数あります。(例:A_9月、A_10月・・・)

なので追加クエリにした場合、Aテーブルのテーブル名が
変わっていくので行き詰ってしまいました。

今は、2.を行って1レコードずつBテーブルに設定しています。
終わったらクエリを削除し、新たなAテーブルを読込むときに
また、選択クエリを作成して1レコードずつよみBテーブルへ設定・・・
を繰り返しています。

クエリとBテーブルとは同一構造なので1行ずつ読むのではなく
一気にBテーブルへ移行できないものかと思い質問しました。

あいまいな質問をしてしまい、すみませんでした。
なにか良い方法があれば教えていただければと思います。
・ツリー全体表示

【6651】Re:複数テーブルのデータ集計2
回答  てっちゃん  - 05/10/28(金) 11:57 -

引用なし
パスワード
   ▼チリ子 さん:
>最新Noが0504であれば、0504にデータが無いので、データ表示しない。
>1000  1    1
>1000  2    2
>1001  2    2
>1001  1    3
>1001  2    1
>1003  2    1
>1003  1    1
>1003  2    3
了解です。

4.のクエリーを次のように変更して下さい。
SELECT Query_union.*,
fxMakeGroup([Query_union]![No],[Query_union]![TB],[Query_union]![区分])
AS G
INTO wkTBL_抽出対象
FROM
(
Query_union LEFT JOIN Query_欠ける最小値 ON
Query_union.[No] = Query_欠ける最小値.[No]
)
INNER JOIN [0504] ON
Query_union.[No] = [0504].[No]
WHERE
(
(Query_union.[No] Is Not Null) AND
(Query_union.TB<[Query_欠ける最小値]![TBの最小])
) OR
(Query_欠ける最小値.[No] Is Null)
ORDER BY Query_union.[No], Query_union.TB;
  テーブル[0504]をくっつけて、[0504]にあるものだけを抽出してます。
  [0504]は、「最新」となるテーブルとして下さい。
  また、fxMakeGroupをここで使い、更にテーブル作成クエリーと
  なってます。
  いくつか試したのですが、最後の集計がうまくいかなかったので、
  ワークテーブル「wkTBL_抽出対象」を作る方法に逃げました(^_^;


5.のクエリーも次のようにして下さい。
SELECT [No], 区分, Count(区分) AS カウント
FROM wkTBL_抽出対象
GROUP BY [No], 区分, G
ORDER BY G;
  集計対象が、「Query_抽出対象」から「wkTBL_抽出対象」に
  変更になり、fxMakeGroupも4.で既に使っているので
  こちらでは必要ありません。


以上です。
4.のテーブル作成クエリーを実行した後、5.のクエリーを実行すれば
結果がでてくると思います。

テーブル作成はダメかな?
・ツリー全体表示

【6650】画面のクリアの方法ですが
質問  中直 E-MAIL  - 05/10/28(金) 11:49 -

引用なし
パスワード
   関数のMe.Clear或いはMe.Refreshを使って
伝票入力画面をクリアしたいのですが関数
使い方がわかりません。
実例を上げていただければ大変たすかります。
よろしくお願いします。
Private Sub cmdUpd_Click()
  '########## [更新] ##########
  'レコードの更新
  DoCmd.OpenQuery ("qu売上伝票更新")
  MsgBox " 更新しました。 ", , ""
  
  ここの部分に入れたいのですが(Me.Clear)

  DoCmd.GoToControl "伝票番号"
End Sub
・ツリー全体表示

【6649】Re:クエリで質問があります
質問  TOMO  - 05/10/28(金) 9:39 -

引用なし
パスワード
   回答頂き有難う御座います。
早速試みてみたのですが、以下の様に式を入れてデータシートビューで
確認したところリストが一つも挙がってきませんでした。
何か問題があるのでしょうか。
ちなみに、商品の寿命はテーブルでフィールドを設けていません。
クエリで新たに追加しても宜しいのでしょうか。
何分独学でACCESSをはじめたところで初歩的な質問をしてしまい
すみません。

▼YU-TANG さん:
>こんばんは、YU-TANG です。
>
>> クエリで、現在の日付から出荷日、又は再出荷日を引いた期間で、
>> 商品の寿命を表示させたいのですがどうしたらいいのでしょうか。
>> なお、出荷日と再出荷日両方に日付が入力されている場合は再出荷日で
>> 計算します。
>
>あくまで一例ですが。
>
>Int( Date() - IIf( IsNull([再出荷日]), [出荷日], [再出荷日] ) )
>
>…みたいな演算フィールドをクエリ上に設けるとか。
>なお、「出荷日と再出荷日両方に日付が入力されてい」ないケースは
>想定していません。
・ツリー全体表示

【6648】Re:複数テーブルのデータ集計2
質問  チリ子  - 05/10/28(金) 9:12 -

引用なし
パスワード
   ▼てっちゃん さん:
このような感じにしたいと思っています。
宜しくお願いします。

>とりあえず、
>   0504 0505 0506 0507 0508 0509
>1000   1   2   2      2   2
>1001   2   2   1   1   1   2
>1003   2   1   2   2   2   
>1004         1   2   2   1
>このようなデータの場合、
>前回の回答では次のように出力されると思います。
>No.  区分 カウント
>1000  1    1
>1000  2    2
>1001  2    2
>1001  1    3
>1001  2    1
>1003  2    1
>1003  1    1
>1003  2    3
>1004  1    1
>1004  2    2
>1004  1    1

>これが、どのように出力されると良いのでしょう?
最新Noが0504であれば、0504にデータが無いので、データ表示しない。
1000  1    1
1000  2    2
1001  2    2
1001  1    3
1001  2    1
1003  2    1
1003  1    1
1003  2    3
最新Noが0509であれば、1003にデータが無いので、データ表示しない。
1000  2    2
1001  2    1
1001  1    3
1001  2    2
1004  1    1
1004  2    2
1004  1    1
>最新は0504? 0509?
このテーブル名は年月を表しています。ここでは最新は0504になっていますが、実際は0509が最新のデータになります。番号を付け直したら、並び替えできるということでしたので、0504が最新ということにしています。0504が最新で大丈夫です。
・ツリー全体表示

【6647】Re:メイン/サブフォーム形式とは
お礼  にしもり  - 05/10/28(金) 8:29 -

引用なし
パスワード
   ▼YU-TANG さん:
こんにちは。
利点はあるが好みに応じてでいいとのこと、よくわかりました。
どうもありがとうございました。
漠然とした質問で申し訳ありませんでした。
・ツリー全体表示

【6646】Re:ログインID、パスワードを自動入力
回答  YU-TANG WEB  - 05/10/28(金) 2:51 -

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

>無条件にログインIDとパスワードを引渡してしまうと、今まで設定して
>いなかった人の端末にも設定されてしまう状態になってしまいます。
>
>これを事前に判別する方法があるのでしょうか?

A)セキュリティを設定しているユーザー用の MDB ファイルと、
  設定していないユーザー用の MDB ファイルを分けて配布する。

B)セキュリティを設定しているユーザーのテーブルを保持し、
  実行環境のマシン名あるいはネットワークユーザー名がテーブルに
  登録されているかどうかで処理を分岐する。

もっとも、ユーザーレベルセキュリティは本来 全端末で適用しないと
意味がないので、これは PG 的な問題というより運用上の問題という
気がしますが。

全員にセキュリティの設定を徹底するか、さもなくばネットワーク上に
MDW を置いといて、この MDB だけは MDW 指定のショートカットから
だけ開かせるとか。
・ツリー全体表示

【6645】Re:アクセスのフィールドサイズについて
お礼  Kaz  - 05/10/27(木) 22:55 -

引用なし
パスワード
   YU-TANG さん
ありがとうございました。
助かりました。
・ツリー全体表示

【6644】Re:メイン/サブフォーム形式とは
回答  YU-TANG WEB  - 05/10/27(木) 21:42 -

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

> (1)メイン/サブフォーム形式にすることと、(2)メインフォームから
> 別のメインフォームに飛ばすことの違いがわかりません。つまり(1)の
> 利点が判りません。
> 端的に言ってメイン/サブフォーム形式はどのような場合に用いるのですか?

好みじゃないんでしょうか。
別に利点が見当たらないのであれば、無理して使う必要はないのでは。

私は子ウィンドウが幾つも開くとウザいので、しばしばサブフォームを
使いますが、幾つも開くのが好きな人は好きな方でやればよいと思います。

あと一対多のテーブル連結であれば、サブフォームの方がプロパティを
設定するだけで勝手に親フォームのレコード移動に連動してくれるという
メリットはあるでしょうね。

もっとも、私は自分の好みに仕上げるためなら多少のコーディングの手間は
厭いませんので、別に上記で省けるていどの手間が決定要因になるとは全然
思いませんが。
・ツリー全体表示

【6643】Re:クエリで質問があります
回答  YU-TANG WEB  - 05/10/27(木) 21:28 -

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

> クエリで、現在の日付から出荷日、又は再出荷日を引いた期間で、
> 商品の寿命を表示させたいのですがどうしたらいいのでしょうか。
> なお、出荷日と再出荷日両方に日付が入力されている場合は再出荷日で
> 計算します。

あくまで一例ですが。

Int( Date() - IIf( IsNull([再出荷日]), [出荷日], [再出荷日] ) )

…みたいな演算フィールドをクエリ上に設けるとか。
なお、「出荷日と再出荷日両方に日付が入力されてい」ないケースは
想定していません。
・ツリー全体表示

【6642】Re:アクセスのフィールドサイズについて
回答  YU-TANG WEB  - 05/10/27(木) 21:21 -

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

> アクセス上にテーブルを作成し、テキスト型のフィールドを作成しました。
> フィールドサイズを2000にしたいのですが、255までしか設定できないのでしょうか。

はい。

> これが仕様であれば仕方が無いのですが、

仕様です。

http://office.microsoft.com/ja-jp/assistance/HP051868081041.aspx

> 255より大きい文字を入力することはできませんか。

メモ型フィールドにすれば、256 文字以上格納できます。
それでは。
・ツリー全体表示

【6641】Re:スピンボタン
回答  YU-TANG WEB  - 05/10/27(木) 21:15 -

引用なし
パスワード
   イベントを間違っているのでは。

> Private Sub テキスト0_Change()

Private Sub テキスト0_AfterUpdate()

あと、

> Private Sub ボタン_Change()

…も、間違っているとは言わないまでも、ふつうは

Private Sub ボタン_Updated(Code As Integer)

…の方を使うというイメージがあるなぁ。
・ツリー全体表示

【6640】アクセスのフィールドサイズについて
質問  Kaz  - 05/10/27(木) 20:59 -

引用なし
パスワード
   アクセス上にテーブルを作成し、テキスト型のフィールドを作成しました。
フィールドサイズを2000にしたいのですが、255までしか設定できないのでしょうか。
これが仕様であれば仕方が無いのですが、255より大きい文字を入力することは
できませんか。

ACCESS2003 SP2です。
宜しくおねがいします。
・ツリー全体表示

【6639】Re:日付の書式について
回答  YU-TANG WEB  - 05/10/27(木) 20:01 -

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

> この現象の原因は何でしょうか?

下記リンク先と関係有るかもしれません。

http://www.ruriplus.com/msaccess/bbscbrw.asp?Root=12948&No=12968
・ツリー全体表示

【6638】Re:複数テーブルのデータ集計2
発言  てっちゃん  - 05/10/27(木) 18:15 -

引用なし
パスワード
   ▼チリ子 さん:
すみません。
>0506・0507とカウントしていき、もし0508にNoが存在しなかったら、
>0509にNoが存在しても0508以降はカウントしないというものです。
こちらのみを考慮して、
>0505(一番新しい)に1000というNoが存在したら、
こちらの条件は考慮してませんでした。

とりあえず、
   0504 0505 0506 0507 0508 0509
1000   1   2   2      2   2
1001   2   2   1   1   1   2
1003   2   1   2   2   2   
1004         1   2   2   1
このようなデータの場合、
前回の回答では次のように出力されると思います。
No.  区分 カウント
1000  1    1
1000  2    2
1001  2    2
1001  1    3
1001  2    1
1003  2    1
1003  1    1
1003  2    3
1004  1    1
1004  2    2
1004  1    1

これが、どのように出力されると良いのでしょう?
最新は0504? 0509?
・ツリー全体表示

【6637】Re:クエリ結果をテーブル追加する方法
回答  たん  - 05/10/27(木) 16:45 -

引用なし
パスワード
   >いろいろ試してみたのですが行き詰ってしまいました。

何を試したのか全然書いていませんが、

# 公開されていないものは、相手には「何もやってない」と
# 取られても仕方がありません。

選択クエリをコピーして、追加クエリに変更し、
追加クエリとして実行させれば良いのでは?
・ツリー全体表示

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