Access VBA質問箱 IV

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

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


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

【7690】Re:レポート作成について
回答  ミオナ  - 06/4/13(木) 21:24 -

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

私は、詳細セクションに以下のようにテキストボックスを設置し、
 +−−−+ +−−−−−−−+
 |種類 | |品名     |
 +−−−+ +−−−−−−−+
[種類]テキストボックスのプロパティの設定で「重複データ非表示:はい」にしています。
その結果、こちらでは
  A  りんご  みかん  パイナップル 桃 いちご
     びわ   メロン
  B  きゃべつ たまねぎ なす
と表示されるようになっています。

そちらでは[種類]テキストボックスはどういうふうに設定されていますか?
・ツリー全体表示

【7689】Re:期間の引き算
回答  小僧  - 06/4/13(木) 18:51 -

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

>ムーンと申します。
>
>早速ですが、期間の引き算につきまして、どなたかご教授願えませんでしょうか?

Datediff関数を使うと、結果が導きだせると思われます。


>2004/04/01〜2004/10/31
>
>この間が何ヶ月経過しているかを計算させたいのです。

求めたい結果は○ヶ月○日、という様な結果でなく、
○ヶ月だけで良いのでしょうか。

また日数までも求めたい場合、
例えば2006年4月13日〜2006年4月14日までを1日経過と見るのでしたら、

Sub 日付の差を求める()
Const SDay As Date = #4/1/2004#
Const EDay As Date = #10/31/2004#
Dim FDay As Date

  FDay = CDate(Format(EDay, "yyyy/mm") & "/1")

   Debug.Print DateDiff("m", SDay, EDay) & "ヶ月"
   Debug.Print DateDiff("d", SDay, EDay) & "日"
   Debug.Print DateDiff("m", SDay, EDay) & "ヶ月" _
        & DateDiff("d", FDay, EDay) & "日"
  
End Sub


上記コードをモジュールに記載し、
結果をイミディエトウィンドウにて確認されてみてください。
・ツリー全体表示

【7688】期間の引き算
質問  ムーン  - 06/4/13(木) 16:06 -

引用なし
パスワード
   ムーンと申します。

早速ですが、期間の引き算につきまして、どなたかご教授願えませんでしょうか?

2004/04/01〜2004/10/31

この間が何ヶ月経過しているかを計算させたいのです。
期間によりまして月の最終日が違いますが、その辺も
考慮させたいと思っております。

宜しくお願い致します。
・ツリー全体表示

【7687】Re:レポート作成について
質問  SINO  - 06/4/13(木) 14:25 -

引用なし
パスワード
   こんにちは。
ミオナさんありがとうございます!
複数列の表示、出来ました。

ただ問題が1つあります。列数以上にデータがある場合に、

 種類:品名
  A :りんご  みかん  パイナップル 桃 いちご
     びわ   メロン
  B :きゃべつ たまねぎ なす


とならずに


 種類:品名
  A :りんご  みかん  パイナップル 桃 いちご
  びわ   メロン
  B :きゃべつ たまねぎ なす

となります。

品名の行頭をそろえることはできないのでしょうか?
私が思いつく限り色々試してみたのですが、どうしても上手くいきませんでした。
方法をご存知でしたら知恵をお貸しください。
宜しくお願いします。
・ツリー全体表示

【7686】Re:レポート作成について
回答  ミオナ  - 06/4/13(木) 11:19 -

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


>これをレポートにしたときに、「種類」を頭にしてその横に「品名」を5個ずつ並べたいのです。   (下記参照)
> 種類:品名
>  A :りんご  みかん  パイナップル 桃 いちご
>     びわ   メロン
>  B :きゃべつ たまねぎ なす

現在は「種類」でグループ化されてるんですね?
「種類」ヘッダーのプロパティの設定の「書式」に「改段」という項目がありますから、そこの設定を「カレント セクションの前」にしておいてください。

次に「ページ設定」で「レイアウト」のところで以下のように設定してください。

  行列設定
    列数: 5        行間隔: 適宜設定
    列間隔: 適宜設定

  サイズ
    幅: 適宜設定      高さ : 適宜設定
    [ ] 実寸(A)

  印刷方向
    [●] 上から下へ

「サイズ」の「幅」や「高さ」はそちらの用紙サイズがわかりませんので、具体的な数値を書けません。
1枚に収まるよう、いろいろ試行錯誤してみてください。(^_^;)

http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B231806
上記ページが参考になるかと思います。(機械的な翻訳なので微妙に日本語が変ですが…)
・ツリー全体表示

【7685】Re:6ヵ月後の日付
お礼  ムーン  - 06/4/13(木) 8:45 -

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

ありがとうございました。
役に立ちました。


▼Gin_II さん:
>解決されているようですが、参考までに。
>
>日付の加算・減算をする場合には、DateAdd 関数というものも使えます。
>
>Microsoft Office アシスタント: DateAdd 関数
>http://office.microsoft.com/ja-jp/assistance/HP010431071041.aspx
・ツリー全体表示

【7684】Re:データの並べ替えについて
お礼  SinjiM  - 06/4/13(木) 7:51 -

引用なし
パスワード
   チェック忘れました
・ツリー全体表示

【7683】Re:データの並べ替えについて
質問  SinjiM  - 06/4/13(木) 7:49 -

引用なし
パスワード
   小僧さん
おはようございます。
問題解決!
本当にありがとうございました。
・ツリー全体表示

【7682】Re:6ヵ月後の日付
回答  Gin_II  - 06/4/12(水) 19:42 -

引用なし
パスワード
   解決されているようですが、参考までに。

日付の加算・減算をする場合には、DateAdd 関数というものも使えます。

Microsoft Office アシスタント: DateAdd 関数
http://office.microsoft.com/ja-jp/assistance/HP010431071041.aspx
・ツリー全体表示

【7681】Re:6ヵ月後の日付
お礼  ムーン  - 06/4/12(水) 16:18 -

引用なし
パスワード
   ムーンです。

皆さんの今までの書き込みをみて
DateSerial関数で解決できました。
お騒がせしました・・

▼ムーン さん:
>ムーンと申します。
>
>さっそくですが、
>1.契約開始日付:yyyy/mm/ddがわかっており
>2.契約終了日付:yyyy/mm/ddを自動算出したいのですが、
>
>1.に6ヶ月を加算して2.を求めるにはどう指定すればいいでしょうか?
>日数なら、以下のように+180でもいいのですが、正確に求めたいのです。
>
>  Do Until rs.EOF
>    
>   If rs![契約開始日] <> 0 Then
>    rs.Edit
>      rs![契約終了日].Value = rs![契約開始日] + 180
>    rs.Update
>  
>   End If
>  
>    rs.MoveNext
>  Loop
>  
>  rs.Close
>
>以上簡単かもしれませんが、宜しくお願い致します。
・ツリー全体表示

【7680】Re:顧客コードの頭に定型の番号を振る
発言  TB1  - 06/4/12(水) 15:26 -

引用なし
パスワード
   ▼The-Third-Man さん:
ご教授ありがとうございます。
こんなぼよよんとした質問内容にご丁寧に教えていただき感謝です。
今、詳しく拝見、実行する時間が無くて申し訳ありません。実行した結果を必ず報告いたしますのでしばし時間をください。
ありがとうございました。
・ツリー全体表示

【7679】6ヵ月後の日付
質問  ムーン  - 06/4/12(水) 15:11 -

引用なし
パスワード
   ムーンと申します。

さっそくですが、
1.契約開始日付:yyyy/mm/ddがわかっており
2.契約終了日付:yyyy/mm/ddを自動算出したいのですが、

1.に6ヶ月を加算して2.を求めるにはどう指定すればいいでしょうか?
日数なら、以下のように+180でもいいのですが、正確に求めたいのです。

  Do Until rs.EOF
    
   If rs![契約開始日] <> 0 Then
    rs.Edit
      rs![契約終了日].Value = rs![契約開始日] + 180
    rs.Update
  
   End If
  
    rs.MoveNext
  Loop
  
  rs.Close

以上簡単かもしれませんが、宜しくお願い致します。
・ツリー全体表示

【7678】Re:顧客コードの頭に定型の番号を振る
回答  The-Third-Man  - 06/4/12(水) 14:39 -

引用なし
パスワード
   会員番号の自動採番を行いたいんですよね。
正規会員コードとありますが、そうでない方も同じテーブルに入力されているのでしょうか?
取り敢えず、コードについて書きますね。

>Private Sub Form_BeforeInsert(Cancel As Integer)
>  If DCount("正規会員コード", "会員情報") = 0 Then
>  Me![正規会員コード] = "222200000001"
 
 まず、この部分ですが条件分岐させるために、Dcountで件数を拾い、件数が「0」つまり、まだ誰も会員登録されてなければ、めでたく第1号として「22220 00 00001」の初期値が与えられるんですよね。
 ここで気づくことは、店番号の選択がされていないことです。
 このコードのままでは、すべてのレコードを拾って、1件もなければ店番号「00」(そういう店番号はないと思いますが)の会員を初期化することになります。
 ですから、このままでは不都合なのでDcount関数に条件を設定しなければなりません。

  If DCount("正規会員コード", "会員情報","店番号=02") = 0 Then
  Me![正規会員コード] = "2222 02 000001" 
                ↑↑(スペースを入れたのは強調するためです。実際には連続数字でよいです)

 これで店番号「02」の会員のみがDcountで拾われ、誰も登録していなければ、第1号として登録されるはずです。
 店が複数ある場合は、コンボボックスなりで選択するようにすればいいかもしれません。
 その場合は、

  If DCount("正規会員コード", "会員情報","店番号=' & Me.cmb店番号 & "'") = 0 Then
  Me![正規会員コード] = "22220" & me.cmb店番号 & "00001"

で、よいかと思われます。(「cmb店番号」こちらが勝手につけたもので、任意の名前でかまいません。「Me」は入力するフォームを指します) 
 次に、もしすでに同じ店で会員登録されていた場合ですが、ここは、Dcount()ではなくDMax関数を使うべきだと思います。

  Else
   me![正規会員コード] =Fromat(DMax("正規会員コード","会員情報","店番号=02")+1,"000000000000")
  End If
End Sub
 
 これで対象とする店から正規会員の最大コード番号を選ぶことになり、それに「1」を加算することによって、常に新規番号が振られることになります。
 店番号を変化させたい場合は、最初のコードを参考にしてください。
 
考え方を示しただけで、実際にコードは走らせていませんので、不具合があったらご勘弁ください。
 定義集域関数は、覚えると便利な関数なのでヘルプ等を参照することをお奨めします。
・ツリー全体表示

【7677】レポート作成について
質問  SINO  - 06/4/12(水) 14:38 -

引用なし
パスワード
   こんにちは。
ご指導のほど宜しくお願いします。

レポート作成に関してなのですが、まず「商品」というテーブルがあるとします。「商品」テーブルには「種類」と「品名」というフィールドがあり、下記のようなデータをもっているとします。

 種類:品名
  A :りんご
  A :みかん
  A :パイナップル
  A :桃
  A :いちご
  A :びわ
  A :メロン
  B :キャベツ
  B :たまねぎ
  B :なす

これをレポートにしたときに、「種類」を頭にしてその横に「品名」を5個ずつ並べたいのです。   (下記参照)

 種類:品名
  A :りんご  みかん  パイナップル 桃 いちご
     びわ   メロン
  B :きゃべつ たまねぎ なす

まず「種類」をグループ化させてみると「種類」の表示は1個でその横に縦に「品名」の一覧が表示されますが、それを横に並べる方法がどうしても分かりません。

どうか宜しくお願いします。
・ツリー全体表示

【7676】Re:データの並べ替えについて
回答  小僧  - 06/4/12(水) 9:54 -

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

>例えば、FLD1、FLD2、FLD3ともにゼロのレコードを除外する場合

当方が思いつく限りですが、方法は2通りあると思われます。

1) Unionクエリを作る前の段階で除外

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.Code
FROM [
SELECT テーブル名.Code,
テーブル名.Name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
]. AS P
GROUP BY P.Code
PIVOT P.FLD0


2)Unionクエリ結合後に除外

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.code
FROM [
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
]. AS P
INNER JOIN テーブル名
ON (P.code = テーブル名.Code) AND (P.Name = テーブル名.Name)
WHERE
([テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0)=False
GROUP BY P.code,
[テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0
PIVOT P.FLD0;


条件抽出に「FLD1=0」かつ「FLD2=0」かつ「FLD3=0」が偽(笑)という
何とも複雑な SQL文を書いておりますが、
例えば 各FLDの値はマイナスにならない、という仕様があれば

FLD1 + FLD2 + FLD3 > 0

のような単純な WEHRE句 も使えるかと思われます。
・ツリー全体表示

【7675】Re:サブフォーム日付にフォーカス移動
お礼  ユミちゃん  - 06/4/11(火) 16:50 -

引用なし
パスワード
   小僧さん
度々の質問に快くお答えをいただきまして有難うございました。
DoCmd.FindRecord CDate(Me.cmb日付), , True, , True
のコマンドで問題なくできました。
私自身、まだまだ勉強不足を痛感しております。
またよろしくお願いいたします。
・ツリー全体表示

【7674】Re:データの並べ替えについて
質問  SinjiM  - 06/4/11(火) 12:45 -

引用なし
パスワード
   小僧さん
こんにちは。「TRANSFORM Max(P.FLD1)」役割の説明について、
ありがとうございました。
下記のコードに判断条件を設ける場合は、どのように対応
したら、よいでしょうか?よろしくお願いします。

例えば、FLD1、FLD2、FLD3ともにゼロのレコードを除外する場合

>TRANSFORM Max(P.FLD1) AS FLD1の最大
>SELECT P.code
>FROM [
>SELECT
>テーブル名.code,    
>テーブル名.name & "_" & テーブル名.FLD1 AS FLD0,
>テーブル名.FLD1
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD2 AS 式1,
>テーブル名.FLD2
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD3 AS 式1,
>テーブル名.FLD3
>FROM テーブル名
>]. AS P
>GROUP BY P.code
>PIVOT P.FLD0;
>
>上記 SQL をクエリの SQL ビューに貼り付けて結果を確認されてみて下さい。
・ツリー全体表示

【7673】Re:顧客コードの頭に定型の番号を振る
発言  まさ7251  - 06/4/11(火) 12:44 -

引用なし
パスワード
   >  me![正規会員コード] ="22220" & format(dcount("店番", "会員情報"), _
>  ("会員番号", "会員情報") + 1, "000000000000")
>>
>>Format関数に3つも引数があるのはなぜですか?
>>2番目の引数部分、何をしようとしているのですか?
>投稿したとおり、以下のようなつもりでした。
> 考え方は、頭に22220という整数をつけ、会員情報テーブルの店コードを拾い、
> オリジナルの5桁会員番号を入力すると、会員情報テーブルの正規会員コードに
> 12桁のコードが生成される、というつもりでした。000000000000は12桁を指定するものです。

・”頭に22220という整数をつけ”というのは問題ないかと思います。
(整数なのか、文字列なのかという観点は放っておくとして。)

・”会員情報テーブルの店コードを拾い”というのは、
 ”dcount("店番", "会員情報")”この部分でやろうとしていますか?
 もしそうなら、これでは、会員情報というテーブルのデータ数が返ってくるだけです。
 中身や構成が判らないので、一概にダメかどうかは判りませんが。
 DLookUpの方が適しているのではないかと思います。
 ちなみに、何らかの条件も要るような気がしますが。(あるいは1件しかない?)

・”オリジナルの5桁会員番号を入力する”とは?
 ”("会員番号", "会員情報") + 1”この部分でやろうとしているのでしょうか?
 コレだけでは構文エラーなので、何ともコメントのしようがありませんが。
 ”入力する”とあるので、画面から入力されているのでしょうか?

・”12桁のコードが生成される”とありますが、先頭に5桁固定で付加しているので、
 format関数へ000000000000を指定するのはおかしいと思います。

※上記全てのことを1行で処理しようとする前に、
 1つづつのことを分けて記述し、1つづつ解決していったほうが
 判りやすいかと思いますよ。 


追伸:
 私の発言にて不快に感じられたようですので、申し訳ありません。
 何をどういっても、関係ない方向に発展するだけですので、
 これ以上は特に触れません。
・ツリー全体表示

【7672】Re:顧客コードの頭に定型の番号を振る
発言  TB1  - 06/4/11(火) 11:28 -

引用なし
パスワード
   ▼まさ7251 さん:
>>会員情報というテーブルを使って下記のようなコードを書いたのですが、間違ってました。
>>
>>Private Sub Form_BeforeInsert(Cancel As Integer)
>>  If DCount("正規会員コード", "会員情報") = 0 Then
>>  Me![正規会員コード] = "222200000001"
>>  Else
>>  me![正規会員コード] ="22220" & format(dcount("店番", "会員情報"), _
>>  ("会員番号", "会員情報") + 1, "000000000000")
>>  End If
>>End Sub
>
>どこの部分でエラーになっているかくらいは、質問者がきっちりと
>明記すべきかと思いますけど。

  me![正規会員コード] ="22220" & format(dcount("店番", "会員情報"), _
  ("会員番号", "会員情報") + 1, "000000000000")
この部分が赤でした。

>
>Format関数に3つも引数があるのはなぜですか?
>2番目の引数部分、何をしようとしているのですか?
投稿したとおり、以下のようなつもりでした。
 考え方は、頭に22220という整数をつけ、会員情報テーブルの店コードを拾い、
 オリジナルの5桁会員番号を入力すると、会員情報テーブルの正規会員コードに
 12桁のコードが生成される、というつもりでした。000000000000は12桁を指定す るものです。


>考え方とコードを見比べてみても、
>どこでどの何をやろうとしているのかがまったくわかりません。

>上記コードだと。
>1.会員情報が0件(空っぽ)の場合、
> 正規会員コード="222200000001"
>2.それ以外
> エラーと思われる行。
> (何をしようとしているのか不明)
>
>>コードは赤くなってました。ろくに知識無いままやっております。
>
>コンパイルエラーくらいは、ヘルプや使用例を見て、
>ご自分でなんとかするべきかとは思いますけど。
ここはなんとかします。


>適当に書いたコードを投稿して直してもらおうという
>考え方自体がおかしいと感じますけど、どうでしょうか。

サンプルを改造してのことなので適当ではないと思いますが、まささんにはおかしいと感じていらっしゃる。

分からないことは分からないと正直に書いているつもりですが、何がしたいかまったくわからない、と言われるなら、まささんには無理に回答いただかなくても結構です。丸投げではなく、とっかかりがこれしか書けない、ということもあります。
それで無視されても仕方の無いことだと覚悟してのことです。

「初心者の質問も大歓迎です」とここのポリシーにも書いてあります。
「質問者を批判しないでください」ともあります。が、この気持ちは少なからず理解は出来ます。


どなたか、こんな奴でもヒントを与えてやろう、という方がいらしたら宜しくお願いします。
・ツリー全体表示

【7671】Re:顧客コードの頭に定型の番号を振る
発言  まさ7251  - 06/4/10(月) 22:52 -

引用なし
パスワード
   >会員情報というテーブルを使って下記のようなコードを書いたのですが、間違ってました。
>
>Private Sub Form_BeforeInsert(Cancel As Integer)
>  If DCount("正規会員コード", "会員情報") = 0 Then
>  Me![正規会員コード] = "222200000001"
>  Else
>  me![正規会員コード] ="22220" & format(dcount("店番", "会員情報"), _
>  ("会員番号", "会員情報") + 1, "000000000000")
>  End If
>End Sub

どこの部分でエラーになっているかくらいは、質問者がきっちりと
明記すべきかと思いますけど。

Format関数に3つも引数があるのはなぜですか?
2番目の引数部分、何をしようとしているのですか?

>考え方は、頭に22220という整数をつけ、会員情報テーブルの店コードを拾い、
>オリジナルの5桁会員番号を入力すると、会員情報テーブルの正規会員コードに
>12桁のコードが生成される、というつもりでした。

考え方とコードを見比べてみても、
どこでどの何をやろうとしているのかがまったくわかりません。

上記コードだと。
1.会員情報が0件(空っぽ)の場合、
 正規会員コード="222200000001"
2.それ以外
 エラーと思われる行。
 (何をしようとしているのか不明)

>コードは赤くなってました。ろくに知識無いままやっております。

コンパイルエラーくらいは、ヘルプや使用例を見て、
ご自分でなんとかするべきかとは思いますけど。

適当に書いたコードを投稿して直してもらおうという
考え方自体がおかしいと感じますけど、どうでしょうか。
・ツリー全体表示

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