Access VBA質問箱 IV

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

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


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

【6010】Re:毎年の集計について
発言  小僧  - 05/8/25(木) 14:27 -

引用なし
パスワード
   ▼サチチ さん:
こんにちは。

元のテーブルの詳細がご提示されていませんので、適当に作ってみました。

年度  人数  項目
2005年  1   水虫
2004年  2   高血圧
2003年  2   水虫
2004年  5   心疾患
2003年  4   高血圧
2002年  2   高血圧
2001年  3   心疾患
2001年  3   高血圧


こんな感じのテーブルに対して、以下のSQLを発行します。

TRANSFORM Sum(テーブル名.人数) AS 人数の合計
SELECT テーブル名.項目
FROM テーブル名
GROUP BY テーブル名.項目
PIVOT 1+DateDiff('yyyy',[年度を入力] & '1月1日',
   CDate(テーブル名.年度 & '1月1日')) & '年目'
In ('1年目','2年目','3年目');

「年度を入力」とでるので、「2002年」と答えると、
「2002年」「2003年」「2004年」のデータが表示されます。

フィールド名は「1年目」「2年目」「3年目」と固定なので
こういったクエリを元にすると、1つのフォームで対応が可能かと思われます。
・ツリー全体表示

【6009】毎年の集計について
質問  サチチ  - 05/8/25(木) 12:00 -

引用なし
パスワード
   今回も教えて下さい。

毎年のデータをインポートし、クロス集計で人数を出したいのです。
こんな感じです。

     1900年  1901年  1902年  1903年・・・2005年 ここに次の年が入る
高血圧   1            1
心疾患       1        1
水虫                       4
・・・
 計    1   1        2     4

毎年のデータをつけて増やしていきたいのですが、テーブルに追加していく方法と
見やすくしたいので、フォームを1回作ったら、変更しないで見られる方法を
教えて欲しいのです。今は、上記の様に作成しましたが、2006年が増えると
一回・一回改廃しないとなので・・・。
今現在は、T_疾病管理(職番・名前・診断名・開始年月日〜)からクロス集計で
作成しましたが、今後増えていく時どうしていいか分らないので、ご教授願います。
なお、データは15年分で、15万件です。1年1万件ぐらいです。
よろしくお願いします。
・ツリー全体表示

【6008】Re:数値のみ入力したい場合
お礼  Seri  - 05/8/25(木) 10:28 -

引用なし
パスワード
   ▼YU-TANG さん:
>こんばんは、YU-TANG です。
>
>入力規則で対応できる方法は私も知りませんが、そもそも数値以外
>入力できないようにするという方向性はナシなんでしょうか?
>
>数値以外の入力を許しておきながら、後でダメ出しするのは、設計
>思想として少し?です。

ご意見ありがとうございます。
・ツリー全体表示

【6007】Re:検索用のフォーム作成
回答  小僧  - 05/8/25(木) 9:11 -

引用なし
パスワード
   ▼QOO さん:
おはようございます。

>テーブルもフォームも「1」月(半角)のテキスト型で入力しています。

と言う事でしたら、

>  strFil = "年 = '" & Me.年 & "' AND " _
>      & "月 = '" & Me.月 & "' AND " _
>      & "種別 = '" & Me.種別 & "'"

のままですが、一つ思い当たることが…。

ヘッダに配置している検索用の「年」を表すコンボボックス名の名前を

cmb年
cmb月
cmb種別

として、

  strFil = "年 = '" & Me.cmb年 & "' AND " _
      & "月 = '" & Me.cmb月 & "' AND " _
      & "種別 = '" & Me.cmb種別 & "'"

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

【6006】Re:クエリの抽出条件
回答  クロ  - 05/8/25(木) 8:19 -

引用なし
パスワード
   ▼まっち さん:
>どうしても「データ型が一致しません。」と表示されます。条件は2つです。
>1.Like[Forms]![グラフ期間]![会社コード]!

これも式がおかしいですよ?最後の「!」は要りません。
この式のままですと会社コードを「グラフ期間」フォームで入力する場合
「*11」とか「11*」あるいは「*1*」のように入力することになりますが
それでいいのでしょうか?


>2.Between[Forms]![グラフ期間]![開始日]And[Forms]![グラフ期間]![終了日]


まず、この抽出条件を入れる対象フィールドのデータ型を提示し、実際どのように
格納されていますか?
また「グラフ期間」フォームにある[開始日]と[終了日]の書式も併せて提示く
ださい。
「データ型が一致しません」のメッセージは文字通り「データ型が違うからできない
よ」ということです。
・ツリー全体表示

【6005】クエリの抽出条件
質問  まっち  - 05/8/25(木) 2:46 -

引用なし
パスワード
   どうしても「データ型が一致しません。」と表示されます。条件は2つです。
1.Like[Forms]![グラフ期間]![会社コード]!
2.Between[Forms]![グラフ期間]![開始日]And[Forms]![グラフ期間]![終了日]
1.のみだとうまくいくのですが、2.を追加すると「データ型が一致しません」となります。テキスト通りにしているのですが、どうしたらいいのでしょうか?どなたか教えてください。よろしくお願いします。
・ツリー全体表示

【6004】Re:数値のみ入力したい場合
発言  YU-TANG WEB  - 05/8/24(水) 21:48 -

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

入力規則で対応できる方法は私も知りませんが、そもそも数値以外
入力できないようにするという方向性はナシなんでしょうか?

数値以外の入力を許しておきながら、後でダメ出しするのは、設計
思想として少し?です。
・ツリー全体表示

【6003】Re:検索用のフォーム作成
質問  QOO  - 05/8/24(水) 17:49 -

引用なし
パスワード
   小僧 さん

>
>>→今度は、「Me.txt件数」でアクティブになり
>>「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」
>>となります。
>
>txt件数 は当方が検証するためにフォームにつけた名前です。
>QOO さんのフォームに、合計を表示したいテキストボックスを配置して
>そのテキストボックスの名前にして下さい。

→サンプルの「txt」はフォーム名の一部だったんですね。
てっきりVBA言語かと思ってました。
私のフォーム名も「件数」だったので、これで件数表記うまく表記されました。

>>できればテキスト型で「01」月ではなく「1」月という表記で値リストに
>>「1;2;3;・・・」と入れたいのですが、無理でしょうか?
>
>こちらが良く解らないのですが、
>現在テーブルに入っている値は「1」「01」どちらでしょうか?
>
>テーブルに入っている値が 「01」 で
>コンボボックスに入っている値 「1」 と比較させたいのであれば、
>
>>"月 = '" & Me.月 & "' AND " _
>
>'修正
> "月 = '" & Format(Me.月,"00") & "' AND " _
>
→テーブルもフォームも「1」月(半角)のテキスト型で入力しています。
そのまま上記使っていいですか?
・ツリー全体表示

【6002】Re:数値のみ入力したい場合
発言  Seri  - 05/8/24(水) 17:43 -

引用なし
パスワード
   ▼小僧 さん:
>作成されているフォームは連結フォームなのでしょうか。

連結フォームです。

>
>色々探したのですが、連結フォームにおいて
>Access が発行するメッセージより先にイベントを拾う方法が
>見つかりませんでした。
>
>当方の知識では無理ですので
>引き続き識者の回答をお待ち下さい。

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

【6001】Re:数値のみ入力したい場合
発言  小僧  - 05/8/24(水) 15:06 -

引用なし
パスワード
   ▼Seri さん:
作成されているフォームは連結フォームなのでしょうか。

色々探したのですが、連結フォームにおいて
Access が発行するメッセージより先にイベントを拾う方法が
見つかりませんでした。

当方の知識では無理ですので
引き続き識者の回答をお待ち下さい。
・ツリー全体表示

【6000】Re:数値のみ入力したい場合
発言  Seri  - 05/8/24(水) 14:47 -

引用なし
パスワード
   ▼Gin_II さん:
>>試させていただいたのですが、自作で作ったエラーとは違い
>>アクセス自体のエラーが
>>『このフィールドに入力した値が正しくありません。』
>>                    表示されてしまいます。
>
>入力規則プロパティの近くに、エラーメッセージプロパティというのが
>ありますよ。

エラーメッセージプロパティに入力したメッセージが表示されません。
・ツリー全体表示

【5999】Re:検索用のフォーム作成
発言  小僧  - 05/8/24(水) 14:45 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>→今度は、「Me.txt件数」でアクティブになり
>「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」
>となります。

txt件数 は当方が検証するためにフォームにつけた名前です。
QOO さんのフォームに、合計を表示したいテキストボックスを配置して
そのテキストボックスの名前にして下さい。


>できればテキスト型で「01」月ではなく「1」月という表記で値リストに
>「1;2;3;・・・」と入れたいのですが、無理でしょうか?

こちらが良く解らないのですが、
現在テーブルに入っている値は「1」「01」どちらでしょうか?

テーブルに入っている値が 「01」 で
コンボボックスに入っている値 「1」 と比較させたいのであれば、

>"月 = '" & Me.月 & "' AND " _

'修正
"月 = '" & Format(Me.月,"00") & "' AND " _

のような形になりますね。
・ツリー全体表示

【5998】Re:テーブルのレコード重複チェック方法?
質問  MK&db  - 05/8/24(水) 14:21 -

引用なし
パスワード
   ▼Gin_II さん:
>>テーブルのレコードの重複をチェックするには、どうすればいいでしょうか?
>>ご伝授ください。
>
>>チェック条件:項目A,B,Cが同じであるレコードを抽出し、その結果を
>>クエリAで 出したい。
>
>条件が不足しているような・・
>同じレコードのフィールド間で同じ場合ですか?
>それとも、レコード間でフィールドA・B・Cが同じレコードを抽出したいのでしょうか?
レコード間のフィールドA,B,Cが全部同じの場合は、抽出の対象になります。
よろしくお願いします。
・ツリー全体表示

【5997】Re:数値のみ入力したい場合
質問  Seri  - 05/8/24(水) 14:14 -

引用なし
パスワード
   ▼小僧 さん:
>▼Seri さん:
>こんにちは。
>
>更新前処理の前にAccessの入力規制が働いてしまうので
>設定されているようでしたら外してみてください。

確認したのですが入力規制は設定していませんでした。
テーブルのフィールドが数値型になっているのが原因でしょうか?
・ツリー全体表示

【5996】Re:数値のみ入力したい場合
回答  Gin_II  - 05/8/24(水) 14:09 -

引用なし
パスワード
   >試させていただいたのですが、自作で作ったエラーとは違い
>アクセス自体のエラーが
>『このフィールドに入力した値が正しくありません。』
>                    表示されてしまいます。

入力規則プロパティの近くに、エラーメッセージプロパティというのが
ありますよ。
・ツリー全体表示

【5995】Re:検索用のフォーム作成
質問  QOO  - 05/8/24(水) 14:00 -

引用なし
パスワード
   小僧さん

すいません。またもや・・・。
1個前のレスは「質問」です。
・ツリー全体表示

【5994】Re:検索用のフォーム作成
お礼  QOO  - 05/8/24(水) 13:59 -

引用なし
パスワード
   ▼小僧 さん:


>>>'→追加
>>>  'Me.txt件数 = Me.Recordset.RecordCount
>'→修正
>    Me.txt件数 = Me.RecordsetClone.RecordCount

→今度は、「Me.txt件数」でアクティブになり「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」となります。
>
>>「検索」ボタンをクリックすると、どんな選択をしても、
>>一番上のレコード(最初に入れたID:1のもの)しか絞られてこない
>
>こちらについては再現しませんね。
>
>>  Me.Filter = strFil
>'→追加
>    MsgBox strFil
>>  Me.FilterOn = True
>
>とでもして、変数:srtFil の値が思い通りになっているかを確認されてみて下さい。

→メッセージを確認したところ、月がおかしかったようです。最初のレコードの月が表示されてます。前回教えて頂いたデータ型がテキスト型にしてるのが原因でしょうか?
でも、今から変更してしまうと、レコードが失われたりするので、できればテキスト型で「01」月ではなく「1」月という表記で値リストに「1;2;3;・・・」と入れたいのですが、無理でしょうか?
・ツリー全体表示

【5993】Re:数値のみ入力したい場合
発言  小僧  - 05/8/24(水) 13:57 -

引用なし
パスワード
   ▼Seri さん:
こんにちは。

更新前処理の前にAccessの入力規制が働いてしまうので
設定されているようでしたら外してみてください。
・ツリー全体表示

【5992】Re:数値のみ入力したい場合
発言  Seri  - 05/8/24(水) 13:36 -

引用なし
パスワード
   ▼小僧 さん:
>VBA で行うのであれば、
>
>更新前処理に
>
>IsNumeric関数で
>
>テキストボックスの値がFalseの場合
>
>Cancel = True
>
>でどうでしょうか。

早速のご意見ありがとうございます。
試してみたのですが更新前処理のイベントが発生する前に
アクセスのエラーが表示されてしまいます。
・ツリー全体表示

【5991】Re:数値のみ入力したい場合
発言  小僧  - 05/8/24(水) 13:21 -

引用なし
パスワード
   ▼Seri さん、Gin_II さん:
こんにちは。

VBA で行うのであれば、

更新前処理に

IsNumeric関数で

テキストボックスの値がFalseの場合

Cancel = True

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

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