Access VBA質問箱 IV

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

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


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

【3939】Accessのヴァージョン
質問  しゅう  - 04/12/2(木) 1:48 -

引用なし
パスワード
   少し場違いな質問ですがご容赦ください。

これから新しくAccessをインストールしてツールの作成試みているのですが、インストールするヴァージョンを悩んでいます。

現在の環境は、OSはWindowsNT4.0でExcelは97を使用しています。
私としては「Excelが97なのでAccessも97がいいのかな。」と思っているのですが、「使用上の不具合などがなければ最新のヴァージョン(XP?)でもいいかな。」とも思っています。XPだと、一つのPCにAccessをインストールすれば、同じサーバー上のPCには、Accessをインストールしなくてもツールが使用できる機能があるという噂も聞きましたし。

訳のわからない質問かと思いますが、皆さんのご意見等をよろしくお願い致します。
・ツリー全体表示

【3938】Re:帳票フォームで交互に色をつけるには
質問  GEN E-MAIL  - 04/12/1(水) 23:29 -

引用なし
パスワード
   ▼クロ さん:
>※テーブル名:テーブルA
> 固有IDフィールド:フィールド1(テキスト型/数値型)
> とした場合
>
>フォームのレコードソースとなるものがテーブルの場合
>1.レコードソースの[…]でビルダを開くとクエリのデザインビューみたいなものが開きます。
>2.必要フィールドを追加
> フィールド1で並べ替えを「昇順」にします。
>3.最後のフィールドに
> テキスト型の場合
> 式1: DCount("[フィールド1]","テーブルA","[フィールド1] <='" & [フィールド1] & "'")
> 数値型の場合
> 式1: DCount("[フィールド1]","テーブルA","[フィールド1] <=" & [フィールド1])
> とします。
>4.あとは「条件付き書式」を[式1] Mod 2=0 (レコード二行目の条件となります)適宜に

早速のご回答ありがとうございました。
私の質問が不十分だった様です。
並べ替えをしても常に交互になっているものを作りたいので
その方法を教えていただければ幸いです。
よろしくお願いします。
・ツリー全体表示

【3937】Re:いいフォームの作り方をアドバイス願い...
回答  クロ  - 04/12/1(水) 15:16 -

引用なし
パスワード
   サブフォーム(c)のレコードソースは発注テーブルそのものですよね?

先にサブフォーム化するためのサブフォーム(c)を作成しましょう。
発注テーブルを元に「単票」か「帳票」で作成してください。
ヘッダ/フッダーを表示し何れかにコマンドボタンを作成してください。
※コマンドボタン作成はウィザードが動きますので最初ダイアログで
 キャンセルすれば「コマンド**」の空ボタンができます。
コマンドボタンは空のままで結構ですが
課題:更新
名前:cmbUP
としておきましょう

適当にメインフォーム(a)に先程のサブフォーム(c)を配置してください。

メインフォーム(a)をデザインビューからフォームビューにするとサブフォーム(c)
にすべてのレコードが表示されます。

次にサブフォーム(c)のレコードソースを「発注テーブル」から
SELECT 発注テーブル.*
FROM 発注テーブル
WHERE (((発注テーブル.発注年月日)=[Forms]![メインフォーム(a)名]![サブフォーム(b)].[Form]![発注年月日]));
と書き換えてください。

これでサブフォーム(b)を抽出条件としてたレコードのみを表示するようになります。


私が提示した案の操作は
1.メインフォーム(aフォーム)で検索年(数値)、検索月(数値)を入力
2.サブフォーム(b)がリストアップされます。
ここまではできていますよね?

サブフォーム(b)内の「発注年月日」のフォーカス取得時のイベントにコードで
Me.Parent!サブフォーム(c)名.Requery
としてください。
※サブフォーム(b)の「発注年月日」にフォーカスが移動したときに自分(Me)の
 上階層(メインフォーム(a))にあるサブフォーム(c)をリクエリします。

最後にサブフォーム(c)にある更新コマンドボタンに息をいれます。
クリック時のイベントにコードで
Me.Parent!サブフォーム(b).Requery
としてください。
※この処理でサブフォーム(c)内の更新されたレコードがサブフォーム(b)に反映されます。

最後にここで「サブフォーム(b)」「サブフォーム(c)」と書いているのは
メインフォーム(a)上のコントロール名です。
フォームとしてのオブジェクト名でないことに注意してください。
コントロール名はメインフォーム(a)をデザインビュー確認してください。
・ツリー全体表示

【3936】Re:いいフォームの作り方をアドバイス願い...
質問  えなりん  - 04/12/1(水) 14:37 -

引用なし
パスワード
   クロさん
さっそくのアドバイスありがとうざいます!
クロさんに教えていただいた1つのフォームにまとめる案を実行したいのですが、どうもうまくいきません。
私の作り方が悪いんですけどね。

フォームのことだけで済むと思ってたのでフォームの説明しかしなかったのですが、
ここでテーブルのことも説明させてください。

X)検索テーブル←これがaフォームの元
  検索年(数値)、検索月(数値)
Y)発注テーブル
  発注年月日、取引先名、商品名、発注金額
Z)発注クエリー(発注テーブルを使ってます)←これがbフォームの元
  発注年月日、取引先名、商品名、発注金額、
  発注年:Year(発注年月日)、発注月:Month(発注年月日)

そして、aフォーム検索年=bフォーム発注年、aフォーム検索月=bフォーム発注月でサブフォームを作りました。
そしてbフォーム(帳票形式)にサブフォームを作れないためcを独立したフォームにしてレコード移動時イベントでOPENFORMしようと考えていました。

でもcフォームをaフォームのサブフォームにするには、このままだと連結データ型が一致しないし、Xテーブルに新たに「検索年月日」フィールドを作って、bフォームのレコード移動時イベントで年月日を取得するようにした「つもり」がうまくいきません。
(検索年月日とcフォーム発注年月日を連結させようと考えたのですが)

なんだか根本的な質問ですが、どうしたらいいのでしょう。
基本の基本から教えてください。
すみません、すみません。
・ツリー全体表示

【3933】Re:ユニオンクエリの並び替え
お礼  あお  - 04/12/1(水) 12:00 -

引用なし
パスワード
   ▼クロ さん:
>ORDER BY 商品名
>ではダメでしょうか?

お返事ありがとうございます
早速やってみたところ,
「指定したフィールド"商品名"はSQLステートメントのFROM句にある
 複数のテーブルを参照しました.」
とでてしまい出来ませんでした.

質問内容と違いますが
レスがなかなか得られずこまってしまったので
よそのサイトで同じ質問をしてしまいました
削除しようとこちらに戻ると,ありがたいことにお返事がきてました。
マルチのような形になってしまい申し訳ありませんでした。
・ツリー全体表示

【3932】Re:ユニオンクエリの並び替え
回答  クロ  - 04/12/1(水) 11:54 -

引用なし
パスワード
   ORDER BY 商品名
ではダメでしょうか?
・ツリー全体表示

【3931】ユニオンクエリの並び替え
質問  あお  - 04/12/1(水) 9:50 -

引用なし
パスワード
   こんにちは。よろしくお願いします

3つのクエリ(上からA,B,C)をユニオンクエリで1つのクエリにまとめる際,
クエリAの元となったテーブル(Aテーブル)の商品名順に並べ替えたいので
クエリAの下に「ORDER BY [Aテーブル].商品名;」
とやりましたがどうも並びかわっていないようです。
どうも1番左のフィールド順に並びかわっているようです
クエリAのみのときは同じ文できちんとできたので、
ユニオンクエリの際は何か違うのでしょうか?
よろしくお願いします.

詳細です.

テーブルは、一連番号(キー)、商品名、商品番号、担当、完了状況など
50フィールドくらいから成っています
Aテーブルは商品名頭がAのもの、Bテーブルは商品名頭B、Cテーブルは商品名頭C

クエリではそのうち担当,商品名など10フィールドほど抜き出し,
順番も入れ替わっています(担当が1番左)
縦のデータ数も完了したもので絞込みを入れています

A→B→Cの順に並べたので商品名もAA,AB,AC・・・,BA,BB,BC・・・CA,CB,CC・・・
となるはずがAA,BC,CA,AB,BA・・・といったようにばらばらです。
(多分1番左の担当順に並び替わっているため)

初心者で,説明も下手で申し訳ないのですが
よろしくお願いします.
・ツリー全体表示

【3930】Re:帳票フォームで交互に色をつけるには
回答  クロ  - 04/12/1(水) 8:28 -

引用なし
パスワード
   ※テーブル名:テーブルA
 固有IDフィールド:フィールド1(テキスト型/数値型)
 とした場合

フォームのレコードソースとなるものがテーブルの場合
1.レコードソースの[…]でビルダを開くとクエリのデザインビューみたいなものが開きます。
2.必要フィールドを追加
 フィールド1で並べ替えを「昇順」にします。
3.最後のフィールドに
 テキスト型の場合
 式1: DCount("[フィールド1]","テーブルA","[フィールド1] <='" & [フィールド1] & "'")
 数値型の場合
 式1: DCount("[フィールド1]","テーブルA","[フィールド1] <=" & [フィールド1])
 とします。
4.あとは「条件付き書式」を[式1] Mod 2=0 (レコード二行目の条件となります)適宜に
・ツリー全体表示

【3929】帳票フォームで交互に色をつけるには
質問  GEN E-MAIL  - 04/12/1(水) 5:10 -

引用なし
パスワード
   はじめまして。
帳票フォームで交互に色をつける方法を教えてください
レコードの番号がわかればあとは、条件付書式などで何とかなるのですが、..
・ツリー全体表示

【3927】Re:いいフォームの作り方をアドバイス願い...
発言  クロ  - 04/11/30(火) 17:14 -

引用なし
パスワード
   1つ案だけ...
cフォームもaフォームのサブフォームにします。

サブフォームbの発注年月日のフォーカス取得時のイベントに
Me.Parent!aフォーム内のcフォームのコントロール名.Requery
とします。

サブフォームcのコマンドボタンのクリック時のイベントに
Me.Parent!aフォーム内のbフォームのコントロール名.Requery
とします。

これでフォームは1つ(aフォーム)だけで済むかな?

※aフォーム内の★フォームのコントロール名はaフォームをデザインビューで
 開いた状態でツールバーの「オブジェクト」で確認してください。
・ツリー全体表示

【3926】Re:いいフォームの作り方をアドバイス願い...
発言  クロ  - 04/11/30(火) 16:48 -

引用なし
パスワード
   正確には2つのフォームですよね。bはaのサブフォームと書かれているので...
良い悪いは利用する方(ご自身かも)が使いやすければいいので何とも言えません。

> また、cでデータを追加・修正・削除した時に、すぐにbに反映するにはどうしたらいいのでしょうか。

これについてはcフォームにコマンドボタンかなにかでリクエリしてあげればいいと思います。
例)コマンドボタンのクリック時のイベント
Forms!aフォーム名.aフォーム内のbフォームのコントロール名.Requery
・ツリー全体表示

【3925】いいフォームの作り方をアドバイス願います
質問  えなりん  - 04/11/30(火) 16:04 -

引用なし
パスワード
   みなさん こんにちは
センスのない私に「いいフォームの作り方」のアドバイスをよろしくお願いします。

ACCESS2000で発注データベースを作っています。
フォームを3つ作成し(常にこの3つのフォームが表示されている状態にしたい)
a.【検索】フォーム:発注年、発注月の入力

b.【一覧】フォーム(サブフォームにしてaに連結)
  aで入力した発注年、発注月に該当する一覧(発注年月日、発注金額)を表示
   ※発注金額は、発注年月日でSUMしたもの

c.【詳細】フォーム
  bにレコード移動時イベントを設定し、該当する発注年月日データをOPENFORMする
  発注年月日、取引先名、商品名、発注金額を表示

でも、他にもっといい方法があるのでは?と思っています。
また、cでデータを追加・修正・削除した時に、すぐにbに反映するにはどうしたらいいのでしょうか。
(今のフォームの作り方だと、フォームを閉じないと反映しないのです)
・ツリー全体表示

【3924】Re:なぜDSUMができないんでしょうか?
お礼  えなりん  - 04/11/30(火) 15:41 -

引用なし
パスワード
   お礼が大変遅くなりまして申し訳ございませんでした。

ご説明、とても納得いたしました。
「100へぇ〜」な感じです。(古い?)

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

【3923】Re:アクセスがインストールされていない端...
お礼  tak  - 04/11/29(月) 10:09 -

引用なし
パスワード
   YU-TANG様
ご回答ありがとうございます。
現在のまま開発を行うと動作しないことが判明しました。
ありがとうございました。

どうしても動かしたい場合、
vbのランタイムと同様
ms-accessのランタイムは(フリー?)でダウンロードするってことですね。
テストとか考えるとどうしようか迷うなぁ〜。。。


▼YU-TANG さん:
>こんにちは、YU-TANG です。
>横レス失礼します。
>
>> ユーザーインタフェース部分はExcelで作成予定です。
>> ただしメインロジック部分はmdbファイルに作りこみを行おうと思っております。
>
>「メインロジック部分」が仮にフォーム、レポート、モジュールを指して
>いるのであれば、Access で組んでしまうと、配布先環境に Access の
>通常版かランタイム版がインストールされていない限り動作しません。
>
>テーブル、クエリー、ビューであれば、Access がインストールされて
>いなくても、DAO や ADO などのミドルウェアを介して接続できます。
・ツリー全体表示

【3921】Re:連番
回答  Chou  - 04/11/28(日) 16:18 -

引用なし
パスワード
   では、ADOから。
フォームのコードモジュール画面のツールバーの
ツール→参照設定をクリックして出てきたWindowsの
中からMicrosoft ActiveX Data Object 2.x(最新版)
Libraryにチェックが入っているか確認下さい。
チェックが入っていなければチェックを入れて
OKを押してください。
これでADOが利用可能となります。

次に、動作確認の為に適当なフォーム(新規でも可)に
コマンドボタンを追加してこのコマンドボタンのプロパティー
からクリック時のイベントでコードモジュール画面を
開いて下記のコードをCopy若しくは入力下さい。

  Dim cn As New ADODB.Connection
    Set cn = CurrentProject.Connection
  
  Dim rst As New ADODB.Recordset
  Dim Num As New ADODB.Recordset

    (テーブルの名前は仮に「連番」と致しましたので
    正規のテーブル名に変更願います。
    又、フィールド名の実際の名前に変更下さい)

    rst.Open "Select 氏名 From 連番 Group By 氏名", cn
  
  Dim str_Name As String
  Dim strSQL As String
  Dim intX As Integer
  
    Do Until rst.EOF
      str_Name = rst!氏名
        strSQL = "Select * From 連番 Where 氏名 = '" & str_Name & "' Order By" _ (strSQLからここまで一行です)
            & " 日付 ASC"
        Num.Open strSQL, cn, adOpenStatic, adLockOptimistic
        
        intX = 1
        
          Do Until Num.EOF
            Num!番号 = intX
            Num.Update
              intX = intX + 1
            Num.MoveNext
          Loop
          
        Num.Close
        Set Num = Nothing
        strSQL = ""
        
      rst.MoveNext
      
    Loop
    
    rst.Close
    Set rst = Nothing

フォームのこのコマンドボタンをクリックすれば
上記のコードが走ります。
結果は下記の通りです。
氏名    日付    番号
ツヨシ    2004/6/30    1
タケシ    2004/8/15    1
ツヨシ    2004/11/4    2
タケシ    2004/11/25    2
タケシ    2004/12/24    3

以上ですが、分からない処があれば質問下さい。
・ツリー全体表示

【3920】Re:アクセスがインストールされていない端...
回答  YU-TANG WEB  - 04/11/28(日) 15:25 -

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

> ユーザーインタフェース部分はExcelで作成予定です。
> ただしメインロジック部分はmdbファイルに作りこみを行おうと思っております。

「メインロジック部分」が仮にフォーム、レポート、モジュールを指して
いるのであれば、Access で組んでしまうと、配布先環境に Access の
通常版かランタイム版がインストールされていない限り動作しません。

テーブル、クエリー、ビューであれば、Access がインストールされて
いなくても、DAO や ADO などのミドルウェアを介して接続できます。
・ツリー全体表示

【3919】Re:連番
発言  ハッピー  - 04/11/28(日) 11:34 -

引用なし
パスワード
   Chouさん、ご回答ありがとうございました。
よろしくお願いします。

>レコード数はどれ位有るのですか?。
約1000件です。

>氏名、日付、番号のフィールドは同一テーブルに
>有るのでしょうか?。
あります。

>ADO若しくはDAOを利用すれば可能かと思いますが、
>問題無いですか?。
ADOとかDAOとかの意味が分からないためお答えできません。
すみません!!
・ツリー全体表示

【3918】Re:Requeryについて
回答  Gin_II  - 04/11/28(日) 0:28 -

引用なし
パスワード
   > それならば、サブフォームを使わずとも、フォームヘッダーにコントロールを
> 作成し、詳細セクションに表示させるようにすればいいと思いますが。

これじゃ、ダメなんですか?
・ツリー全体表示

【3917】Re:Requeryについて
質問  キッコーマン  - 04/11/27(土) 22:27 -

引用なし
パスワード
   ▼Gin_II さん:
ごもっともです。
メインフォームに条件入力用の非連結のコントロールを置いてます。
で、サブフォームに表示させたいと考えております。

しかし、途中経過としてテーブルには検索した結果データが入っているにもかかわらず、フォームでは1レコードしか表示されないという状況です。
・ツリー全体表示

【3916】Re:Requeryについて
回答  Gin_II  - 04/11/27(土) 22:22 -

引用なし
パスワード
   >内容が1レコードしか表示されません。これは”Requery”のせいですか?

これだけでは、状況がよく分かりません。
メインフォームには、条件入力用の非連結のコントロールを置いてあるのでしょうか?

それならば、サブフォームを使わずとも、フォームヘッダーにコントロールを
作成し、詳細セクションに表示させるようにすればいいと思いますが。
・ツリー全体表示

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