147177

hatena の Microsoft Access 掲示板



[7295] 複数抽出条件について Name:jun Date:2017/08/21(月) 21:29 [ 返信 ]
製品を取り扱っており、場所や検査を記号で管理しています。
Fの日付があり、次のレコードまたは2つ下のレコードがKのみ(日付がnull)抽出がしたいです。

テーブル1
製品番号、製品名
テーブル2
製品番号、番号、記号、場所、日付(実行した日)
記号の種類・・・A(A倉庫)、F(工場)、M(M倉庫)、K(検査)

クエリ テーブル1&2
例)
NO10 くぎ 1 A A倉庫 7/1
NO10 くぎ 2 M M倉庫 7/2
NO10 くぎ 3 A A倉庫 7/3
NO10 くぎ 4 F 工場 7/4
NO10 くぎ 5 K 検査 

NO11 ねじ 1 A A倉庫 7/1
NO11 ねじ 2 M M倉庫 7/2
NO11 ねじ 3 F 工場 7/3
NO11 ねじ 4 A A倉庫 
NO11 ねじ 5 K 検査 

NO12 ボルト 1 A A倉庫 7/1
NO12 ボルト 2 F 工場 7/3
NO12 ボルト 3 M M倉庫 7/5

希望の抽出 Fの次または次の次がKでKの日付が空白の場合
結果
NO10 くぎ F 工場 7/4
NO12 ねじ F 工場 7/3


お手数ですがよろしくお願いします。

[7279] フォームのフォーカスが移動しないようにしたい Name:ななーし Date:2017/08/08(火) 13:40 [ 返信 ]
お世話になります。ななーしです。
現在、組図検索システムの改修をしているのですが、少しつまずいてしまいどうしたらよいかご相談致します。

内容はPDF表示用フォームを作成し、検索フォームからそのPDF表示フォームを開き、2つのフォームで検索したレコードのPDFをその表示フォームで見せるといったものを作成しました。

PDF表示フォームはMicrosoft Web Browserを使用し、以下のフォームのタイマーを利用して表示を更新しています。
Private Sub Form_Timer()
On Error GoTo ErrorTrap
If pdfUrl <> "" Then
Dim pdfCrl As String
pdfCrl = Me.OpenArgs

WB0.Navigate pdfUrl
WB0.Tag = pdfUrl
While WB0.ReadyState <> 4 Or WB0.Busy = True
DoEvents
Wend
pdfUrl = ""
End If
'Forms(pdfCrl).SetFocus
ErrorTrap:
End Sub

仕組みはpdfUrlはグローバル関数として定義し、各検索フォームにて行が移動した際にイベントでpdfUrlに値を入れます。その値を確認し値が入っていれば表示を更新し、pdfUrlの値をなくします。

現在の問題は行を更新した際にPDF表示フォームがタイマーによりフォーカスがそちらに移動するため、いちいち行を移動するのにフォームを戻って選択する必要がある状態です。改善としてはPDF表示フォームにフォーカスがいかず元の検索フォームにフォーカスを固定したいです。

以上、よろしくお願い致します。

[7280] RE:フォームのフォーカスが移動しないようにしたい Name:hatena Date:2017/08/08(火) 23:30
PDF表示フォームのタイマー時のコードもグーバル変数も不要です。
検索フォームから直接、PDF表示フォームの Web Browser を操作すればいいでしょう。

検索フォームのレコード移動時に下記のコードを設定。

Private Sub Form_Current()

  With Forms!PDF表示フォーム.WB0
    .Navigate Me.PDFフィールド
    While .ReadyState <> 4 Or .Busy = True
      DoEvents
    Wend
  End With
End Sub


フォーム名、フィールド名は実際のものに変更。

[7281] RE:フォームのフォーカスが移動しないようにしたい Name:ななーし Date:2017/08/09(水) 12:42
だいぶよくなりました。ありがとうございます。
PDF表示ボタンでもすぐその行が表示されるようにサブ関数にして組み込みました。帳票フォームのためなのかセットフォーカスをしても元の検索フォームにフォーカスがいかず、うまくいきません。検索項目のドロップダウンの方はドロップダウンを行うとフォーカスが移動したのですが><
何かいい方法はございますか?

Private Sub tglOpenDetail_AfterUpdate() 'PDF表示ボタン
On Error GoTo E
  If Me.tglOpenDetail Then
    DoCmd.OpenForm "PDF表示", , , , , , "S_AAA"
    Call pdfChange(Nz(Me.PDFPASS), False)
  Else
    DoCmd.Close acForm, "PDF表示"
  End If
E:
End Sub

Private Sub Form_Current()
On Error GoTo E
  If Me.tglOpenDetail Then Call pdfChange(Nz(Me.PDFPASS), False)
E:
End Sub

Private Sub pdfChange(pUrl As String, Optional PNameChk As Boolean = True)
  With Forms!PDF表示.WB0
    .Navigate pUrl
    While .ReadyState <> 4 Or .Busy = True
      DoEvents
    Wend
  End With
  If PNameChk = True Then
    pdfName = Me.U番号.Value & Me.工番号 & "_" & Me.登録番号 & ".pdf"
    Me.工番号.SetFocus
    Me.SetFocus
  End If
End Sub

[7282] RE:フォームのフォーカスが移動しないようにしたい Name:hatena Date:2017/08/09(水) 13:41
> 帳票フォームのためなのかセットフォーカスをしても元の検索フォームにフォーカスがいかず、うまくいきません

帳票フォームということは関係ありません。
コードが間違っているのです。
「想定通りに動かないときは、まずは自分のコードを疑え」
「プログラムは思った通りに動かない。書いた通りに動く。」
というプログラマー格言があります。


デバッグ方法で、ステップ実行というのはご存知でしょうか。

想定と違う動作になるときは、ステップ実行で1行ずつコードを実行して、原因を追求するといいでしょう。


とりあえず、下記を参考にして、pdfChange関数の先頭行にブレークポイントを設定して、ステップ実行してみるといいでしょう。

デバッグの意味と基本的なデバッグ手法 - Excel VBA

[7283] RE:フォームのフォーカスが移動しないようにしたい Name:ななーし Date:2017/08/11(金) 17:31
ブレークポイントのことは知っているのですが、毎回ブレークポイントを解除しても再度記憶され残ってしまう現象が発生することが多く使用していません。サーバー管理の問題なのかACCESS側なのかわかりませんが、すべてのブレークポイントの解除をしても戻らないケースが多くてよくわからず使っていませんでした。一応該当行を消せばよいみたいなのですが・・・

下記の両方をやってもダメでした。PDFが表示されたタイミングで必ずPDF表示のフォームがアクティブになります。
'Forms!フォーム名.SetFocus
DoCmd.SelectObject acForm, "フォーム名"

PDF表示フォームのVBAを書いておきます。

[7284] RE:フォームのフォーカスが移動しないようにしたい Name:hatena Date:2017/08/11(金) 18:35
> ブレークポイントのことは知っているのですが、毎回ブレークポイントを解除しても再度記憶され残ってしまう現象が発生することが多く使用していません。サーバー管理の問題なのかACCESS側なのかわかりませんが、すべてのブレークポイントの解除をしても戻らないケースが多くてよくわからず使っていませんでした。一応該当行を消せばよいみたいなのですが・・・

そうなんですか。それは困りますね。ステップ実行できないと、デバッグ作業が捗りませんので。

ブレークボイントの代わりに、Stopステートメントを使う方法もあります。

コードの途中に

Stop

と記述するとそこでコードが止まり、以降、F8キーなどでステップ実行できます。


一応、フォーカス移動しない原因は下記です。

pdfChangeを呼び出すときに、

Call pdfChange(Nz(Me.PDFPASS), False)

というように第2引数(PNameChk)にFalseを設定しています。
で、pdfChangeでは下記のように記述してます。

  If PNameChk = True Then
    pdfName = Me.U番号.Value & Me.工番号 & "_" & Me.登録番号 & ".pdf"
    Me.工番号.SetFocus
    Me.SetFocus
  End If

PNameChk がFalseのときには、If内のコードは実行されません。
当然、フォーカス移動はしません。

[7291] RE:フォームのフォーカスが移動しないようにしたい Name:朱色 Date:2017/08/16(水) 22:16
本題には関係ないのですが、ちょっと情報提供に。

> ブレークポイントのことは知っているのですが、毎回ブレークポイントを解除しても再度記憶され残ってしまう現象が発生することが多く使用していません。

ブレイクポイントを設定し、解除しないままにAccessやExcelを終了してしまうと、次回立ち上げ時にはブレイクポイントの表示が消えます。
ただし、何らかの情報が残ってはいるらしく、マクロを実行するとストップする...という現象は私も何度か確認しています。
もう一度ブレイクポイントをつけた上で解除して保存するとか、なんかガチャガチャしてたら直った記憶があります。

必ず発生するのかとかどうやって解除するのかという情報について、確定した回答は持ってないです...申し訳ない。

[7293] Accessファイルの動作がおかしくなったら、 Name:hatena Date:2017/08/17(木) 14:55
> ブレイクポイントを設定し、解除しないままにAccessやExcelを終了してしまうと、次回立ち上げ時にはブレイクポイントの表示が消えます。
> ただし、何らかの情報が残ってはいるらしく、マクロを実行するとストップする...という現象は私も何度か確認しています。
> もう一度ブレイクポイントをつけた上で解除して保存するとか、なんかガチャガチャしてたら直った記憶があります。

おかしな動作をするようになったら、
とりあえず最適化、それでだめなら、デコンパイル。

デコンパイル – アクセス使い倒し講座

それでだめなら、新規データベースファイルを作成して、そこに、問題のあるデータベースファイルから、すべてのオブジェクトをインポートする。

というようにしています。経験上、これで大抵の不具合は解消されます。

それでも、駄目な場合もあるので、定期的にバックアップを取っておいて、バックアップから戻します。(最近はここまでいったことはないですが)

[7294] RE:フォームのフォーカスが移動しないようにしたい Name:ななーし New! Date:2017/08/21(月) 12:32
朱色様、hatena様回答ありがとうございます。
夏季休暇で返信が遅くなり申し訳ございません。

まさに朱色様の言った通りの症状で、一度消して再度付け直し、消すと治ります。プログラム上、実際に保存して、動作を確認する必要があるためです。(Accessウィンドウを表示しない方法にて枠を消しているため、保存しないと変な感じになってしまうので、一度保存して終了し、再度確認してます。)
http://hatenachips.blog34.fc2.com/blog-entry-178.html

※変な感じとは、
左にユーザー設定の各フォームと表の一覧とリボンが表示された状態で設定したフォームサイズにリサイズしてしまい、変な感じで表示される。

少し時間がとれなくなったため、再度時間がある際に修正します。

[7287] コントロールのコピーについて Name:ふじ Date:2017/08/16(水) 16:30 [ 返信 ]
VBAをやったことのない初心者です。
現在、プロジェクトでACCESS VBAを使用して受け入れチェックというものを作成することになりました。

それで質問です。
DBの属性を取得し下記のようなイメージで表示したいのですが、
デザインビューに下記のようなレコードをテキストボックスやコンボボックスで作成してそれをグループ化しDBの属性分ループさせてコピーして表示させたいのですが可能でしょうか?

イメージ
|項番|項目名|属性|桁数|属性チェック|エラー区分|
-----------------------------------------------
|1  |社員名|全角|25 |全角チェック|エラー  |

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ここから下にテーブルのレコードの数同じものを追加していくイメージ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

access vbaは触ったことが無く知識がほぼゼロの状態から作成しているため苦戦しております。
教えて頂けないでしょうか?

環境
Access2010 VBA
MDB形式で作成する

[7288] RE:コントロールのコピーについて Name:hatena Date:2017/08/16(水) 17:56
> access vbaは触ったことが無く知識がほぼゼロの状態から作成しているため苦戦しております。

vba以前に、Accessの基本機能は理解していますか。

下記の用語について理解できていますか。

連結フォーム
帳票フォーム
フォームウィザード

理解できていないなら、まずは入門書なり、入門サイトでまずは基本機能を理解しましょう。

おそらくやりたいことはVBAを使わなくても基本機能でできることです。

[7289] RE:コントロールのコピーについて Name:ふじ Date:2017/08/16(水) 18:38
すいません、少し情報が足りなかったみたいです。

イメージにあるレコードには選択したテーブルの属性を表示するためテーブルは複数存在します。

連結フォームはテーブルごとに連結しますよね?(自分が調べた限りそういうイメージです。)

そのためコードで書かないとできないかな〜と思って色々やってみたいのですが、うまくいかなかったためここで質問させていただきました。

[7292] RE:コントロールのコピーについて Name:hatena Date:2017/08/17(木) 14:45
> イメージにあるレコードには選択したテーブルの属性を表示するためテーブルは複数存在します。
>
> 連結フォームはテーブルごとに連結しますよね?(自分が調べた限りそういうイメージです。)

「テーブルの属性」というのは「テーブルのフィールド」ということでしょうか。
独自の用語ではなく、正確な用語を使ってもらわないと、状況が正確には伝わりません。そういう意味でも基本の勉強は必要ですね。

複数のテーブルに同じフィールドがあり、それを一つのフォームに表示したいということでしょうか。
ユニオンクエリで、複数のテーブルを一つに連結できます。
ユニオンクエリはSQLビューで記述する必要があります。



SELECT F1, F2, F3, F4 FROM テーブル1
UNION ALL
SELECT F1, F2, F3, F4 FROM テーブル2
UNION ALL
SELECT F1, F2, F3, F4 FROM テーブル3;

これをフォームのレコードソースに設定すればいいでしょう。

ただし、データベースの設計原則としては、このような場合はテーブルは分けずに、一つのテーブルにしておいて、必要に応じて抽出条件で分割するという設計にすべきです。


データベースというのは大量のデータを効率的に扱うものです。VBAでテキストボックスを追加していくというイメージでできるものではないです。
そのイメージで対応できるデータ量なら、エクセルでやるほうがよほど効率的です。

[7285] サブフォームの集計について Name:hiyama Date:2017/08/16(水) 13:20 [ 返信 ]
OS:WIN7
OFFICE:ACCESS2003

お世話になってます。
今回分からない事が出てきたので教えていただきたく投稿しました。

まず、やっている事ですが

@サブフォームを14個作成
(現金用とクレジット用でそれぞれ名前の違う売上げ金が表示されているのを7個ずつ)

A作成したサブフォームをメインフォームに貼り付け

※@とAは作成済です

Bメインフォーム上にサブフォームの合計金額(現金とクレ用別々)が表示される用にテキストボックス配置

という様な形にしているのですが、テキストボックスのコントロールソースに色々調べて式をいれたりしてるのですが、2つ以上計算させようとするとエラーになってしまいます。


そもそも、複数あるサブフォームの合計を計算する事などは出来るのでしょうか?

[7286] RE:サブフォームの集計について Name:kent Date:2017/08/16(水) 15:56
お疲れ様です。
ネットで、Access サブフォーム で検索すれば
いろいろと出てくるかと。

[サプフォーム名].[Form].[サブフォームの合計値を表示しているテキストボックス名]

[7290] (解決)RE:サブフォームの集計について Name:hiyama Date:2017/08/16(水) 19:46
kentさん
アドバイスありがとうございます。

検索したのですが分かりませんでしたが、教えていただいた式で
入力しましたら理想通りになりました。

ありがとうございました。

[7269] 数値以外の集計の仕方 Name:aya Date:2017/08/05(土) 18:15 [ 返信 ]
はじめまして。
もしかしたら他掲示板でお世話になったかと思いますが検索していたらこちらの掲示板を見つけたので超初心者な質問かもしれませんが良ければ直接ご教授ください。

レポートに
@御請求金額
 コントロールソース「=Sum(IIf([単位]<>"交通費",[数量]*[単価]))」
 書式「通貨」
A消費税
 コントロールソース「=IIf([消費税チェック]=False,[御請求金額]*0.08,"税込")」
 書式「\\#,##0;"-\"#,##0;"税込"」
B交通費
 コントロールソース「=IIf([交通費チェック]=False,Sum(IIf([単位]="交通費",[!数量]*[単価])),"交通費込")」
 書式「\\#,##0;"-\"#,##0;"交通費込";\\#,##0」

がありまして、C御請求金額合計に@ABの合計を出力したいのですが
交通費が¥0になったときにtype!となってうまくいきません。。。

どう記入したらよいか教えてください!
よろしくお願いいたします。

[7270] RE:数値以外の集計の仕方 Name:hatena Date:2017/08/06(日) 11:35
コントロールソース「=IIf([消費税チェック]=False,[御請求金額]*0.08,"税込")」

で、第3引数が "税込" になってますが、これは文字列ですので、計算はできません。

=IIf([消費税チェック]=False,[御請求金額]*0.08,0)

としてください。
書式は、

\\#,##0;"-\"#,##0;"税込"

でOKです。この意味は、; で区切られたブロッグの最初が正数のときの書式、
2番めが 負数のときの書式、3番めが 0 のときの書式を表します。
これで、0 の時、表示は 税込 になります。しかし中身は0ですので、計算できます。

B交通費も同様の考え方で書き直してください。

[7272] RE:数値以外の集計の仕方 Name:aya Date:2017/08/06(日) 14:05
ありがとうございます!
すごくわかりやすくて勉強になりました。

そこで新たな問題なのですが、交通費を下記としていますが
交通費チェックがfalseで、且つ単位に交通費がなかった場合に
0を表示したいので、そうするとこの時も交通費込となってしまいます。
なにかいい方法はありませんでしょうか?
よろしくお願いいたします。

=IIf([交通費チェック]=False,Sum(IIf([単位]="交通費",[数量]*[単価],0)),0)

\\#,##0;"-\"#,##0;"交通費込"

[7273] RE:数値以外の集計の仕方 Name:hatena Date:2017/08/06(日) 15:31
[交通費チェック]にチェックが入っているか、どうか。

[単位]に"交通費"があるかどうか。

上記の場合の組み合わせは、下記の4種類あるわけですが、それぞれで
どのように表示したいのでしょうか。

交通費チェック / [単位]に"交通費" / 表示
-----------------------------------
True / ある / ????
True / なし / ????
False / ある / ????
False / なし / 0

[7274] RE:数値以外の集計の仕方 Name:aya Date:2017/08/06(日) 15:45
ありがとうございます!

交通費チェック / [単位]に"交通費" / 表示
-----------------------------------
True / ある / "交通費込"
True / なし / "交通費込"
False / ある / 数量*単価
False / なし / 0

こういう形にしたいです。
よろしくお願いいたします。

[7275] RE:数値以外の集計の仕方 Name:hatena Date:2017/08/06(日) 17:40
数値型の書式は、; で区切った各セクションの対象は下記のようになります。

正数;負数;0;Null


詳細は下記のカスタム書式を参照。


Format プロパティ - 数値型と通貨型

これを利用して、下記のように設定すればいいでしょう。

コントロールソース
=IIf([交通費チェック]=False,Sum(IIf([単位]="交通費",[数量]*[単価],0)),Null)

書式
\\#,##0;"-\"#,##0;\\0;"交通費込"

[7276] RE:数値以外の集計の仕方 Name:aya Date:2017/08/06(日) 18:33
ありがとうございます。

交通費の個所は正しく出力されるようになりました。
しかし、「御請求金額合計」を
=[御請求金額]+[消費税]+[交通費]

としていますが、交通費がNULLのときにどうやらうまく
計算されないようです。。。
次から次へとすみません。
この場合、御請求金額合計をなにか変えるべきですか?
よろしくお願いいたします。

[7277] RE:数値以外の集計の仕方 Name:aya Date:2017/08/06(日) 21:45
NZ関数で期待通りできました。
本当にありがとうございました。

またつまづいたときお助け下さい。
よろしくお願いいたします。

[7278] 【解決】:数値以外の集計の仕方 Name:aya Date:2017/08/06(日) 21:46
解決しました。

[7264] 線の太さについて Name:山田 Date:2017/08/03(木) 23:30 [ 返信 ]
1ポイントの次は極細しかありませんが、
任意の太さの線を書くことはできませんか?

[7266] RE:線の太さについて Name:kent Date:2017/08/04(金) 08:55
お疲れ様です。
確かに線のプロパティでは、無いですね。
それでは、
ラベルコントロールで塗りつぶしにして高さ、または幅を変える
というのは、だめですか?

[7271] RE:線の太さについて Name:hatena Date:2017/08/06(日) 11:36
> 確かに線のプロパティでは、無いですね。
> それでは、
> ラベルコントロールで塗りつぶしにして高さ、または幅を変える
> というのは、だめですか?

ラベルでもいいですが、四角形コントロールの方が適切かな?

[7208] ガントチャートで工程表を作成する方法 Name:ほっち MAIL Date:2017/07/12(水) 18:05 [ 返信 ]
hatenaさんのガントチャートを拝見しました。
素晴らしいです。

hatenaさんのガントチャートを参考に工程表を作成したいと考えています。

内容
1.テーブル
ID・・・オートナンバー型
整理番号・・・数値型(重複あり)
件名・・・テキスト型
開始年月日・・・日付型
終了年月日・・・日付型

2.内容
開始年月日と終了年月日は月をまたぎます。
年度を通してのガントチャートを作成したいです。
表示は年度として目盛間隔は月を四週単位にしたいです。

>>>>>
テキストボックスのコントロールソースに式を設定するとやはり重くなる(すぐに反映されない)ので、レコードソースのクエリに48個分の演算フィールドを作成してそこに式を設定します。

T1: IIf(#00:30:00# Between [出社時刻] And [退社時刻],'g','')

T2: IIf(#01:00:00# Between [出社時刻] And [退社時刻],'g','')

T3: IIf(#01:30:00# Between [出社時刻] And [退社時刻],'g','')

と順に作成していきます。最後のフィールドは、

T48: IIf(#1899/12/31# Between [出社時刻] And [退社時刻],'g','')

となります。(#1899/12/31# は「24時」という意味です。日付/時刻型では #24:00:00# という表示はできません。)

>>>>>>>>>>>>>>>>>
上記のhatenaさんの24時間単位の記述をどのように変更すれば、
2.の内容が実現できるのでしょうか?

アドバイスをよろしくお願いいたします。

[7209] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/14(金) 06:12
> 表示は年度として目盛間隔は月を四週単位にしたいです。

というのが具体的にどのようなものなのか分かりません。

例えば本年度(2017/04〜2018/03)なら、どのような目盛りになるのですか。

4月1週
  2週
  3週
  4週
5月1週
  2週
  3週
  4週

という感じでしょうか。(例は、縦になってますが、実際は横に並ぶ)

だとすると、7日間毎にすると、余りがでますが、それは第4週にいれる感じでしょうか。

4月1週 4/01〜4/07
  2週 4/08〜4/14
  3週 4/15〜4/21
  4週 4/22〜4/31

[7210] RE:ガントチャートで工程表を作成する方法 Name:ほっち MAIL Date:2017/07/16(日) 19:59
hatenaさん、返信ありがとうございます。

具体的な記述がなく、大変失礼しました。


年度は2017/04〜2018/03です。
月表示は

>>>>
だとすると、7日間毎にすると、余りがでますが、それは第4週にいれる感じでしょうか。

4月1週 4/01〜4/07
  2週 4/08〜4/14
  3週 4/15〜4/21
  4週 4/22〜4/31

hatenaさんが記述してくださった上記の方法で、お願いいたします。

よろしくお願いいたします。

[7217] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/18(火) 15:05
テーブルのデータの期間と、ガントチャートの期間が一部でも重なっていたら、塗りつぶす、という仕様とします。

例えば、テーブルの
開始年月日 2017/04/12
終了年月日 2017/04/18
の場合、

4月1週 4/01〜4/07 
  2週 4/08〜4/14 ○
  3週 4/15〜4/21 ○
  4週 4/22〜4/31

というようになります。(○が塗りつぶし)

テーブルデータの方も、ガントチャートの方も、幅のある期間なので、両社が重なるという条件式は、下記で説明しています。

クエリでの期間の抽出条件 - hatena chips

上記の一番最後の式を利用します。


T1: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,7) And DateSerial([Forms]![フォーム名]![年度],4,1) <=[終了年月日],"g","")

T2: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,14) And DateSerial([Forms]![フォーム名]![年度],4,8) <=[終了年月日],"g","")

T3: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,21) And DateSerial([Forms]![フォーム名]![年度],4,15) <=[終了年月日],"g","")

T4: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,31) And DateSerial([Forms]![フォーム名]![年度],4,22) <=[終了年月日],"g","")

以下同様に、D48 まで作成します。D48は下記になります。

T48: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度]+1,3,31) And DateSerial([Forms]![フォーム名]![年度]+1,3,22) <=[終了年月日],"g","")

フォーム上には、「年度」選択用のコンボボックス、48個のテキストボックスを配置して、コントロールソースを T1 T2 ・・・・T48 と設定します。
この辺は、サンプルの F_出退勤 とほぼ同じ構成になります。

マウスドラッグで範囲指定はちょっと難しいので、保留。

[7232] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/26(水) 18:21
hatenaさん、ご丁寧なアドバイス、ありがとうございます。
私の知識不足で頭が混乱しています。
再度、ご教授をお願いいたします。
できたところまでと分からない部分を添付ファイルにまとめました。

どうぞよろしくお願いいたします。

[7233] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/26(水) 18:23
できるところまで作成したDBです。

よろしくお願いいたします。

[7238] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 13:24
サンプルファイルを元に修正を試みましたが、
4週×12か月で48のフィールドが必要になり、
かつ条件式も複雑になるために、
クエリまではできましたが、
フォームで開こうとすると、「式が複雑すぎる」と怒られました。

解決法もないことはないのですが、
これでは、メンテナンスも大変なので、

帳票フォームでガントチャート(マウスドラッグで範囲指定) - hatena chips

「一つのテキストボックスにテキストとしてグラフ表示」の方法を元に作成することをお勧めします。

[7240] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 16:24
T_工程表からクエリを作成して下記の4つのフィールドを追加します。

SDate: DateSerial([年度]![cb年度],4,1)

W1: DateDiff("m",SDate,開始年月日)*4+IIf(Day(開始年月日)>21,3,(Day(開始年月日)-1)\7)

W2: DateDiff("m",SDate,終了年月日)*4+IIf(Day(開始年月日)>21,3,(Day(終了年月日)-1)\7)

G: Space(W1) & String(W2-W1,ChrW(9607))

これをフォームのレコードソースにして、テキストボックスのコントロールソースを G にすれば、あとはサンプルのテキストボックスの設定どおりで希望のガントチャートになります。

[7241] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 18:27
サンプルを作成してみました。

マウスドラッグにも対応してます。

微調整は必要だと思いますが、いちおうそれなりに動いています。

参考にしてください。

[7242] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/27(木) 19:41
hatenaさん、ありがとうがざいます!!!
感謝です。
私もクエリまではできましたが、フォームで開こうとすると、「式が複雑すぎる」と怒られてしまいました。

hatenaさんの知識とスキルは素晴らしいです。イメージ通りのDBです。

関連して1つご質問があります。
年度をまたいで仕事が発生する場合があります。
その時の対処方法はありますか?

ご指導をよろしくお願いいたします。


【お礼】

独学でAccessを勉強しています。
hatenaさんの掲示板があることでスキルアップができています。
今後ともよろしくお願いいたします。
このサイトに出会えて良かったです。

[7243] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/28(金) 02:11
> 関連して1つご質問があります。
> 年度をまたいで仕事が発生する場合があります。
> その時の対処方法はありますか?

まずは、どのようなユーザーインターフェイスを考えていますか。

現状のままで、年度をまたぐものはエラー表示になりますが、
とりあえずそれに対処するには、クエリの W1 の式を下記のように変更すればいいでしょう。

W1: IIf([開始年月日]<=SDate,0,DateDiff("m",SDate,[開始年月日])*4+IIf(Day([開始年月日])>21,3,(Day([開始年月日])-1)\7))

エクセルファイルのように、
2月から表示するようにしたければ、SDate を下記のようにすればいいでしょう。

SDate: DateSerial([年度],2,1)

上記は一例ですので、どのようなユーザーインターフェイスのするのが適切なのか、よーく検討してみてください。
可能か可能でないかは、無視してまずは一番使いやすいUIを検討してください。

それを提示できたら、それから可能か可能でないか、どのように実現でききるか、アドバイスします。

[7247] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/29(土) 08:21
heantaさん、ありがとうございます。

ユーザーインターフェイスをもう一度、検討をして図にまとめてみました。

ご指導方、よろしくお願いいたします。


[7249] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/08/01(火) 13:31
1月から表示するなら、SDateの式を下記に変更すればいいでしょう。

SDate: DateSerial([年度],1,1)

あとは、前回の回答の式で年度をまたぐものには対応できます。

前年度末分を同じ行に表示するなら、
テキストボックスを重ねて表示させればいいでしょう。
(背景スタイルは透明)
そのデータをどこから持ってくるかは、
どのような規則性で当年度と前年度が対応するのか不明ですので、
回答不能です。

[7268] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/08/05(土) 13:53
hatenaさん、アドバイスいただきありがとうございます。

アドバイスをもとに実践してみます。

ガントチャートが表示されたフォームのデータを変更すると、

正確なガントチャートが表示されません。

Me.Requeryが記述されているので、フォームに入力したデータを後で

修正しても正確に表示されると思ったのですが・・・。

うまくいきません。

もう一度、確認していただけないでしょうか?

よろしくお願いします。

[7250] 非連結のCBを利用してレコードを選択後の情報取得と計算について Name:Kiara MAIL Date:2017/08/01(火) 15:13 [ 返信 ]
初めての投稿になります。ACCESSに関しては初心者でありますので、至らない部分が多々見受けられるかも知れませんが、何卒、お力添え頂ければ幸いです。

【利用環境】
OS : Windows10
DB : ACCESS 2016

現在、受注と出荷を管理する仕組みをACCESSでシステム化しようと試行錯誤しております。

そんな中、出荷処理部分のユーザの要望として、
出荷の対象を選択する際に在庫数から注文数を引いて「0」ないしは「0に近くなるまで」担当者が目で見ながら決定して行きたいということと、場合によって、注文頂いている数量を減らして帳尻を合わせて出荷対象とし、残った数量は、注残として残したいという大きく2つの要望が御座いました。

レコード選択を考える際にhatena様のサイトにあった「非連結のチェックボックスでレコードを選択する」という投稿を発見し、参考にさせて頂きながら作っているのですが、ユーザの要望に答えるべく、チェックボックスにチェックが入ったら、そのレコードの数量を選択数量に入れ込む。数量に変更がなければ注残は0。もし選択数量を変更されたら、その数量を出荷対象とする。残り数量は注残にセットとしたいです。
この処理をしている間は、フッター側のチェック合計と在庫対比という部分を動的に連動させたいのですが、そもそもこの様な仕組みは作ることがACCESSで出来るものでしょうか?

小職の知識では、帳票フォームの詳細でレコード毎にコントロールできるのか否かが理解出来ていない為、判断がついてません。

参考に画面イメージを添付させて頂きます。

以上、お手数をお掛け致しますが、何かアドバイス頂けたら幸いです。
宜しくお願い致します。


[7251] RE:非連結のCBを利用してレコードを選択後の情報取得と計算につ Name:hatena Date:2017/08/01(火) 17:32
現状どのようなテーブルがあるのか。
テーブル名、フィールド名、主キーフィールド などの情報が必要ですね。
少なくとも、
商品マスター
受注数を管理するテーブル
出荷数を管理するテーブル
在庫を管理するテーブル
というようなテーブルが必要になってくるはずです。
他にも、店舗マスター、問屋マスターもあった方がいいですね。


また、図では、チェックボックスで選択すると数量がそのまま選択数量になってますが、かならず全数なんですか。だとしたら、注残は常に0ですよね。
そうではないなら、選択数量はユーザーが任意の数量を入力できるようにするのでしょうか。だとしたらチェックボックスの意味はどうなるのでしょう。
その辺の意味も具体的に説明ください。

[7254] RE:非連結のCBを利用してレコードを選択後の情報取得と計算につ Name:Kiara MAIL Date:2017/08/02(水) 10:19
hatena様、早速のアクションありがとう御座いました。

確かに情報が足りなすぎて判断できないですよね。申し訳御座いません。小職も不慣れなこともあり何をどう聞いて良いのかもわからないままご連絡をしてしまったので、改めて情報を整理して行きたいと思います。

まず、今回の開発の発端として、社内の受注と出荷業務を拝見させて頂いた際に、各商品の管理を商品分のEXCELに分けて幾つかのディレクトリに格納して運用されてました。

ディレクトリ構造もEXCELの中も物によって構成がバラバラであり、情報を登録する際も都度ディレクトリの中にある対象のEXCELを見つけて登録して行く形で、効率も悪く、登録のミスも発生しやすい状況でした。

この状況を打開する為に、まずは安価で展開できるDBとしてACCESSを活用して効率化を図れないかというのが始まりです。

受注と出荷を管理する仕組みとしてシステム化するにあたり、ご指摘の御座いましたTBLの構成を考え以下の5つのTBを基盤にして開発を進めております。

・受注管理TBL・・・受注情報 レコードの管理コードとJANコードを主なキーとして受注数・出荷のワークフロー用のFLG等を管理
・商品管理TBL・・・商品情報 JANコードをキーとして、商品名・タイプ・品番・カラー等を管理しております。
・在庫管理TBL・・・在庫情報 JANコードをキーとして、各商品の在庫数を管理しております。
・問屋マスタTBL・・・問屋情報 問屋IDを作って問屋様を管理
・小売店マスタTBL ・・・小売店情報 小売店IDを作って小売店様を管理

といった形で構成されております。

ひととおり機能の要件を纏めて受注情報を登録する部分は完成し、出荷についてもいくつかの観点でこなせる仕組みは作ったのですが、実際に利用して貰ったところ、今回ご相談させて頂いた部分が浮上して来たというところです。


要件定義が甘かったところは否めないのですが、出荷作業の現在の実体として、受注情報が登録されたEXCELシートに数量合計と在庫数が式でセットされており、そのシートをコピーして、入荷されて在庫に登録された商品を見て溜まっている受注のどこまで出せるか?
列・行を削って行き、数量も手で調整しながら出荷リストを作成しておりました。手で数量を変更したものについては、後に原本と見比べて未だ出せてない分を注残としてデータは残すという流れです。

この部分を踏襲した機能にして欲しいという事で現在の機能を作成しております。

昨日のご質問で、帳票フォームの詳細部分は細かいコントロールが出来ないと認識している旨、ご連絡しておりましたが、進めて行くないかで各部品のコントロールソースを活用すれば対応できることはわかりました。

ただ、やはり数量を変更させる部分のコントロールだけ、どうしたものかと頭を悩ませている次第です。

hatena様のご指摘にありましたとおり、図の画面のもう少し踏み込んだ仕様の詳細として、考えている内容をご説明すると、、、

ヘッダー部分に出ているのは、JANコードを元に引っ張ってきた商品の情報となり、その商品に対しての受注データが詳細の欄に並んで行きます。現行の出荷の対応で説明したとおり、レコードを選択して在庫数と見比べて出せる出せないを判断しております。その為、チェックボックスはそのレコードを選択したという意味となり通常の注残は0で問題ありません。注残の項目を作った意図としては、出すレコードは決まったが残りは注文として残しておくというところです。そう行った意味で、チェックボックスにチェックをいれたところで選択数量の欄に数量をセットし、その数量が変更されたら、元の数量と比較して残った分を新規で再登録しようかと思ってました。

この画面上で何かしらの表現が出来れば、良いのですが、今のところ良いアイディアが出てません。

こう言った場合、何か良い方法やアドバイスは御座いますでしょうか?


【補足】
現在のユーザ達は、今までのEXCELが一番良い方法だと感じているところが今でも強く、出来るだけ運用を変えたく無さそうというところがありEXCELに負けない操作性をACCESSで作ってあげないと納得してくれなそうなんです。ショット・ショットで考えたらEXCELの方が長けている部分は多くあることも進めて来てわかりましたが、ともかくACCESSで負けたくないといったところです。お力をお貸し下さい。宜しくお願い致します。

[7258] RE:非連結のCBを利用してレコードを選択後の情報取得と計算 Name:hatena Date:2017/08/02(水) 17:37
> 注残の項目を作った意図としては、出すレコードは決まったが残りは注文として残しておくというところです。そう行った意味で、チェックボックスにチェックをいれたところで選択数量の欄に数量をセットし、その数量が変更されたら、元の数量と比較して残った分を新規で再登録しようかと思ってました。

自分なり解釈してみました。

基本は選択したものは全数出荷だが、、場合によって、あるいは後から、ユーザーが数量を変更する場合がある。その場合は、差を「注残」として表示したい。

ということなら、ユーザーが入力することもあるので、テーブルに「数量」とは別に「選択数量」というフィールドは必須ですね。でないと、その値を残しておくことができません。

その場合は、下記のような設計が考えられます。

選択チェックボックスのプロパティを下記にせっていします。
コントロールソース =Nz([選択数量])>0
タブストップ いいえ


選択数量テキストボックスのコントロールソースは
選択数量

注残テキストボックスのコントロールソースは
=[数量]-[選択数量]

選択チェックボックスの上に重ねてコマンドボタンを配置して、「透明」を「はい」にします。
コマンドボタンのクリック時イベントは下記のVBAを設定します。

If 選択数量 > 0 Then
  Me.選択数量 = 0
Else
  Me.選択数量 = Me.数量
End If


フォームフッターの「チェック合計」テキストボックスのコントロールソースは、
=Sum([選択数量])
とします。

ここまでできたら、後は、なんとかなりますよね。

[7259] RE:非連結のCBを利用してレコードを選択後の情報取得と計算 Name:Kiara MAIL Date:2017/08/02(水) 19:20
hatena様、
お忙しい中、ご確認頂き誠に感謝致します。
また、小職の纏まりのない嘆きの中から内容を汲み取って頂き、本当にありがとう御座います。

hatena様のご反応から判断して、ともかく何かしらの手法はあると判断し少し安心してます。

ただ、ご指示のとおり設定してみようと試みたのですが、ちょっとうまく行きませんでした。スミマセン。


現在の状況と仕組みの補足として


■選択チェックボックスのプロパティ(chk1)
=InStr([txtChkList] & ",","," & [管理NO] & ",")>0

のまま利用してます。管理IDを取得して、エントリー時に、その管理IDに対して出荷FLGをたてるのに活用したいと思ってました。
ちなみに =Nz([選択数量])>0 にしたところ「レ」チェックが表示されませんでした。

現在、設定されているその他の設定は、、、

■選択数量テキストボックスのコントロールソース
=IIf([chk1]=True,[数量],0)

ここは、選択数量が選べませんでした。そもそものデータソースがヘッダー部分で表示している部分をキーとしたクエリーになっていて、クエリーをそのまま表示しているのは[管理No][受付日][店名][店舗名][問屋][数量]までです。[選択数量][注残]は後付けです。

■注残のテキストボックスのコントロールソース
=IIf([chk1]=True,[選択数量]-[数量],0)

■合計のテキストボックスのコントロールソース
=Sum([数量])

■在庫数のテキストボックスのコントロールソース
[在庫数]  
これもクエリでJANコードをキーに在庫マスタから引っ張った数量です。

■チェック合計のテキストボックスは非連結にしてあり下記のロジックに組み込みました。

---------------------------------------------------------------------
Private Sub cmdChk_Click()
If IsNull(Me.管理No) Then Exit Sub
If Me.chk1 Then
'チェックなしの処理
Me.txtChkList = Replace(Me.txtChkList & ",", "," & Me.管理No & ",", ",")
Me.txtChkList = Left(Me.txtChkList, Len(txtChkList) - 1)
Me.選択合計 = Me.選択合計 - Me.数量.Value
Else
'チェックありの処理
Me.txtChkList = Me.txtChkList & "," & Me.管理No
Me.選択合計 = Me.選択合計 + Me.選択数量.Value
End If
End Sub
---------------------------------------------------------------------
Private Sub cmdSelectAll_Click() 'すべて選択ボタン
Dim stFilter As String
With Me.RecordsetClone
If Not .BOF Then .MoveFirst
Do Until .EOF
stFilter = stFilter & "," & !管理No
chk_total = chk_total + !数量
.MoveNext
Loop
End With
Me.txtChkList = stFilter
Me.選択合計 = chk_total
chk_total = 0
End Sub
---------------------------------------------------------------------
Private Sub cmdSelectClear_Click() '選択解除ボタン
Me.txtChkList = ""
Me.選択合計 = 0
End Sub
---------------------------------------------------------------------
■在庫数のテキストボックスのコントロールソース
=[在庫数]-[選択合計]

としてます。ここまで数量変更以外のところは思い通りに動きました。

hatena様にご認識していただいたとおり、ユーザが数量を変更することを想定しております。変更する箇所は、数量の項目。
いろいろ触っていてわかったのですが、数量を変更するとそのまま実レコードの数量も変わるので、そこは生かして、、、

-------------------------------------------------------------------
Private Sub 数量_Click()

'編集前の数量を取得
b_suryo = Me.数量
'編集された際にレコードを判別する為の管理Noを取得
henko_kanri_no = Me.管理No

End Sub
-------------------------------------------------------------------
Private Sub 数量_AfterUpdate()

'編集前の数量とフォーカスが無くなった際の数量を引いてアフター用の変数に格納 数量変更がなければ0 変更があれば数字が変わる。
a_suryo = b_suryo - Me.数量

End Sub
-------------------------------------------------------------------
※b_suryo(before数量),a_suryo(after数量),henko_kanri_no は外部変数で作ってみました。


このa_suryoを活用しようかと試みておりました。このまま出来るのか落とし穴があるかわかってません(仕掛中)

やはり開発に関して初めてなこともあり、先の先まで見えていないので、どのやり方が良いのかという不安が先に来てしまい甘えてしまって
いる次第です。

hatena様のご指示のとおり進めたいのですが、認識として、クエリーの情報や各項目の設定状況まではお伝え出来ていなかったので、この状況を踏まえて、改めてアドバイスがあればご教示頂けたら幸いです。

以上、多くの方のフォローをされていてお忙しい中、大変恐縮ですが、宜しくお願い致します。

P.S. 我流で一人で戦っている為、ご質問させて頂いて、理解し答えを導き出そうとして下さるだけでも、本当に心強く思ってます。今後ともお力添え頂けたら幸いです。

[7260] RE:非連結のCBを利用してレコードを選択後の情報取得と計算 Name:hatena Date:2017/08/03(木) 00:37
ざっと読んだ感じですが、やろうとしていることの整理ができていないように思います。

本質的に異なることをごっちゃにしている感じです。

取りあえず下記の2点

「非連結のチェックボックスでレコードを選択する」を元にチェックボックスを作成していますが、これはあくまで一時的な選択状態を表現するものですので、今回の要件には合わないと思います。

選択数量をユーザーが変更することがあるとのことなので、元のテーブルに「選択数量」のフィールドは必須です。

> このa_suryoを活用しようかと試みておりました。このまま出来るのか落とし穴があるかわかってません(仕掛中)

変数に格納して、どうのこうのするものではないと思います。

テーブルにどのように格納するかから考えるべきです。

例えば、在庫管理の場合、
商品マスターに在庫数を格納しておいて、出庫数をマイナス、入庫数をプラスというように、移動があるたびに更新するという方法はデータベースとしては間違いです。

入出庫履歴テーブルを作成して、入庫、出庫が発生するたびに、日付、入出庫数、商品コードを格納していきます。

現時点での在庫は、機種在庫と入庫数、出庫数の集計から計算するようにします。

とりあえずテーブルに格納する。それから、それをどのように活用するかを考える、という方針でいくとシンプルになります。

[7261] RE:非連結のCBを利用してレコードを選択後の情報取得と計算 Name:Kiara MAIL Date:2017/08/03(木) 09:13
hatena様、
お世話になります。ご回答ありがとう御座いました。

やはり根本の部分に問題がありそうですね。ありがとう御座います。

修正するにあたり色々、整理する必要がありそうなので、取り急ぎお礼までにご連絡をさせて頂きました。

また、改めてご連絡をさせて頂きます。

宜しくお願い致します。

[7267] 【解決】非連結のCBを利用してレコードを選択後の情報取得と計算 Name:Kiara MAIL Date:2017/08/04(金) 18:36
hatena様、

お世話になります。
ご教示頂いた内容で改めて整理して問題なく要件をこなすことが出来ました。

ここまでの作り方は、変数を利用して、変更がある度にUPDATEするような流れでした。今回、DBでの開発の基本を教わり勉強になりました。

以後に、繋げて行きたいと思います。

本当にありがとう御座いました!!

[7263] グループ化について Name:A Date:2017/08/03(木) 23:29 [ 返信 ]
売上を入力するときは

商品名 個数
AAA 10
BBB 20
AAA 5
BBB 10

といった形で入力するが、請求書の明細欄に表示するときには、
AAAのみ集計して、BBBはそのままというとき、つまり下記のような形
AAA 15
BBB 20
BBB 10

のときには、クエリで表示するときにフラグなどでグループ化させればよいですか?

[7265] RE:グループ化について Name:hatena Date:2017/08/04(金) 00:41
ユニークになるフィールドが必用ですね。
売上日とか、明細IDとか、


明細ID 商品名 個数
1 AAA 10
2 BBB 20
3 AAA 5
4 BBB 10

だとして、集計クエリにして、
下記のフィールドでグループすればいいでしょう。

式1: IIf([商品名]="AAA",[商品名],[明細ID])


これで"AAA"のみ集計、それ以外は、そのままになります。

[7256] hatena様 チップ 数字を漢字に 十百千の単位を除きたい Name:tokinaito Date:2017/08/02(水) 15:16 [ 返信 ]
hatena様すみません再質問です。

数字が漢字にはなりましたが これから十・百・千の単位を

除きたいのですが、宜敷お願いします。

[7257] RE:hatena様 チップ 数字を漢字に 十百千の単位を除きたい Name:hatena Date:2017/08/02(水) 15:24
特定文字の変換関数 - hatena chips

上記のリンク先の、
'数字を漢数字に変換する関数
を使用してください。

[7262] 解決RE:hatena様 チップ 数字を漢字に 十百千の単位を除きたい Name:tokinaito Date:2017/08/03(木) 11:55
hatena様大変有り難うございました。

[7252] hatena チップ 数字を漢数字に変換 Name:tokinaito Date:2017/08/02(水) 09:17 [ 返信 ]
hatena様hatena チップには大変お世話になっております。

ところで同窓会の計画をしているのですが、住所地番がすべて

数字で記されていて、苦慮しています。

そこで下記のような関数をhatena様チップで発見しました。

ところがこれを使おうとすると、Num2Kanjiの部分がSUB又は

Functionが定義されていませんと出ます。

宜敷ご教示お願いします。

Public Function CnvKanjiNum(Ad) As String
Dim i As Long
Dim Pos As Long
Dim Num As Long

If IsNull(Ad) Then Exit Function
Pos = 1
For i = 1 To Len(Ad)
If Mid(Ad, i, 1) Like "#" Then
CnvKanjiNum = CnvKanjiNum & Mid(Ad, Pos, i - Pos)
Num = Val(Mid(StrConv(Ad, vbNarrow), i))
CnvKanjiNum = CnvKanjiNum & Num2Kanji(Num)
i = i + Len(CStr(Num))
Pos = i
End If
Next
CnvKanjiNum = CnvKanjiNum & Mid(Ad, Pos, i - Pos)
End Function

[7253] RE:hatena チップ 数字を漢数字に変換 Name:hatena Date:2017/08/02(水) 09:44
文字列中に含まれる数値を漢数字に変換する関数 - hatena chips
を参考にしたのですね。
そこに、下記の説明がありますが、これはやってますか。


> 事前に、下記の「数値→漢数字変換関数」を標準モジュールにコピーしておいてください。
> 数値←→漢数字変換関数 - hatena chips

[7255] 解決RE:hatena チップ 数字を漢数字に変換 Name:tokinaito Date:2017/08/02(水) 10:30
すみません。有り難うございます。

重宝させて頂きます。

[7218] 労働時間の切り捨て切り上げについて Name:tokinaito Date:2017/07/19(水) 07:07 [ 返信 ]
労働時間の切り上げ切り捨てについて教えてください。

内勤事務については時給800円、外勤事務については時給1500円とある場合。

月累計時間について30分未満は切り捨て、以上は切り上げ処理をしています。

ただし切り上げ切り捨てするにしても事例1の場合は、時給1500円を切り上げたいし

切り捨てにしても事例3の場合は時給800円を切り捨てしたいのですが。

事例3の場合

もし合計時間が:以降の2文字が30分未満だったら分は切り捨て、切り捨ては

時給800円の時間を切り捨てる。

事例3の場合

もし合計時間が:以降の2文字が30分以上だったら分は切り上げ、切り上げは

時給1500円の時間を切り上げる。


よろしくご教示お願いします。

事例1
時給800円  月累計時間 100:05分

時給1500円 月累計時間 100:29分

合計時間        200:34分

事例2
時給800円  月累計時間 100:29分

時給1500円 月累計時間 100:05分

合計時間        200:34分

事例3
時給800円  月累計時間 100:05分

時給1500円 月累計時間 100:19分

合計時間        200:34分

事例4
時給800円  月累計時間 100:19分

時給1500円 月累計時間 100:05分

合計時間        200:24分

[7219] RE:労働時間の切り捨て切り上げについて Name:hatena Date:2017/07/19(水) 11:36
下記の情報を提示してください。

「月累計時間」というのはテーブルにあるフィールドですか。
また、フィールドの場合、データ型はなんですか。
また、累計時間から、合計時間はどのように計算していますか。


あと、言葉での説明が雰囲気は伝わりますが、あいまいで、明確ではないです。
論理的な言葉で、曖昧さがないように説明できますか。
プログラミングする場合は、まずはこれができることが重要です。

[7236] RE:労働時間の切り捨て切り上げについて Name:tokinaito Date:2017/07/27(木) 11:20
hatena様いつもご教示有り難うございます。

このことについて労使話し合っているので

決まりましたらもう少し研究し具体的に

質問したいと思います。

[7245] RE:労働時間の切り捨て切り上げについて Name:hatena MAIL Date:2017/07/28(金) 15:05
> このことについて労使話し合っているので
>
> 決まりましたらもう少し研究し具体的に
>
> 質問したいと思います。

了解しました。

仕様が不明瞭では、設計のしようがないですからね。

[7248] 解決RE:労働時間の切り捨て切り上げについて Name:tokinaito Date:2017/07/30(日) 10:03
hatena様ありがとうございます。一応解決としておきます。

今後ともよろしくお願いいたします。

[7221] 1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/24(月) 17:58 [ 返信 ]
テーブル、クエリは下記の通りになります。

テーブル1 主キーは製品番号
製品番号、品名、出荷日

テーブル2 主キーは製品番号
製品番号、詳細番号1、詳細番号1の重量、詳細番号2、詳細番号2の重量、詳細番号3、詳細番号3の重量

テーブル3
詳細番号、日付、入庫重量、出庫重量、入出庫区分、詳細区分

クエリ入庫・・・詳細番号、日付、入庫重量


クエリ入出庫・・・クエリ入庫、テーブル1の製品番号、品名、テーブル2の詳細番号1〜3の重量
詳細番号で結合しています

残り重量=入庫重量ー出荷重量の計算ができるようにしたいです。また表を作成したいので、理想のようにしたいです。

詳細番号1〜3の重量が1レコードに表示されているのを分けて表示できるようにしたいです

(例)
製品番号:1500
品名:あいうえお
詳細番号:a101,a102,a103

クエリ入出庫の例
詳細番号 入庫日 重量 製品番号 品名  1の重量、2の重量、3の重量
a101 7/1 1200 No1500 あいうえお 600,300,250
a102 7/2 1500 No1500 あいうえお 600,300,250
a103 7/3 1300 No1500 あいうえお 600,300,250

理想
詳細番号 入庫日 重量 製品番号 品名  重量 残
a101 7/1 1200 No1500 あいうえお 600 600
a102 7/2 1500 No1500 あいうえお 300 1200
a103 7/3 1300 No1500 あいうえお 250 1050


お手数ですがご教示お願いします。

[7227] RE:1レコードの情報を複数に分け、その後計算する方法 Name:hatena Date:2017/07/25(火) 13:40
まず最初に提案したいのは、
現状のテーブル設計の変更、つまり正規化です。

テーブル2 を下記のように変更します。

製品番号
詳細番号
重量

として、製品番号と詳細番号で複数フィールド主キーにします。

データ例
製品番号 詳細番号 重量
No1500  a101   600
No1500  a102   300
No1500  a102   250

こうするなら、テーブル3もテーブルに2にまとめていいですね。

テーブル2
製品番号
詳細番号
重量
日付
出荷重量

というように。こうすればクエリでテーブル1とテーブル2を結合するだけで理想の結果になります。

あと、テーブルの設計変更でできない事情があるなら、おすすめはしませんが、
クエリで疑似正規化する方法になります。

テーブル2より下記のようなユニオンクエリを作成します。

SELECT 製品番号, 詳細番号1 AS 詳細番号, 詳細番号1の重量 AS 重量
FROM テーブル2
UNION ALL
SELECT 製品番号, 詳細番号2 AS 詳細番号, 詳細番号2の重量 AS 重量
FROM テーブル2
UNION ALL
SELECT 製品番号, 詳細番号3 AS 詳細番号, 詳細番号3の重量 AS 重量
FROM テーブル2;

これで、上で提案した正規化したテーブルと同じ出力結果になりますので、
クエリで、それぞれのテーブルを結合すれば理想の結果になります。

[7228] RE:1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/25(火) 17:46
ご返信ありがとうございます。

テーブルは改変不可のため難しいです。

別の方法でなんとか表示させることができましたが、重複したデータがあるため、合計重量がおかしくなってしまいます。

クエリの結果は以下になります。

例) 
詳細番号 入庫日 入庫重量 製品番号  重量
1     6/1   2600  No1500  600
1     6/1   2600  No1501  300
2     6/1   3000  
3     6/1   2500  No1501  600
3     6/1   2500  No1502  350


重複していたら一番上のフィールドのみ表示することは出来ますでしょうか。

理想は下記になります
詳細番号 入庫日 入庫重量 製品番号  重量
1     6/1   2600  No1500  600
              No1501  300
2     6/1   3000  
3     6/1   2500  No1501  600
              No1502  350

レポートで重複しているものを非表示できるようですが、
入庫日が同じ日なので全部消えてしまいます。詳細番号が異なる場合は表示してほしいのですが、そういうことは出来ますでしょうか。
可能ならばクエリでやれたらと思いますが、難しいでしょうか。

別のレポートで
詳細番号の種類別の合計を表紙として作成しようと思っているのですが、

詳細セッションにある入庫重量の重複表示しない設定にしても重複した数も加算された合計値が表示されてしまうためです。

お手数ですが、ご教示お願いします。

[7229] RE:1レコードの情報を複数に分け、その後計算する方法 Name:hatena Date:2017/07/26(水) 01:31
> 理想は下記になります
> 詳細番号 入庫日 入庫重量 製品番号  重量
> 1     6/1   2600  No1500  600
>               No1501  300
> 2     6/1   3000  
> 3     6/1   2500  No1501  600
>               No1502  350
>
> レポートで重複しているものを非表示できるようですが、
> 入庫日が同じ日なので全部消えてしまいます。詳細番号が異なる場合は表示してほしいのですが、そういうことは出来ますでしょうか。
> 可能ならばクエリでやれたらと思いますが、難しいでしょうか。

クエリでは難しいです。
レポートなら、
詳細番号でグループ化して、グループフッターを表示させれば、理想の表示になります。グループフッターが間にはいることで、重複データではなくなりますので。グループフッターの高さは0.002cmにします。


> 別のレポートで
> 詳細番号の種類別の合計を表紙として作成しようと思っているのですが、
>
> 詳細セッションにある入庫重量の重複表示しない設定にしても重複した数も加算された合計値が表示されてしまうためです。

テーブル構成が不明ですが、
詳細番号の種類別の合計を出力する集計クエリを作成しておいて、
それをレポートのレコードソースのクエリに追加すればいいかと。

[7230] RE:1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/26(水) 15:40
ご返信ありがとうございます。

アドバイス通りにしましたがうまくいかないです

集計クエリを作成しましたが重複したものも加算されてしまいます。
レポートに関しては、詳細番号のほかに出庫、引当関連も重複してしまうところがあり、詳細番号と違って必ず1つではなく、2つ3つとあるので、グループ化にすることができないです。

テーブル、クエリは以下になります


集計クエリ
グループ化・・・種別番号のキー(数字)、種類(英語)
合計・・・前月重量、当月重量、出荷重量、残重量、当月残

重複した分も加算されたまま


レポートの元クエリ
種別番号のキー、種類、詳細番号、前月入庫日、前月重量、当月入庫日、当月重量、出荷日、出荷品名、出荷重量、残出庫、残重量の合計、引当番号、引当品名

テーブル1
製品番号、詳細番号、重量
テーブル2
詳細番号、種別番号のキー、種類、日付、重量、入出庫区分

テーブル3
製品番号、品名、出荷日

入庫クエリ
詳細番号、種別番号のキー、種類、日付、重量、入出庫区分

入庫_前月クエリ、当月クエリ
入庫_前月、当月クエリ

詳細番号残量出庫クエリ・・・グループ化し、残量の重量を合計(同じ日に出庫しているものがあるため)

入出庫クエリ・・・入庫_前月クエリ、当月クエリ、出荷済み、未出荷

入出庫管理クエリ・・・入出庫クエリ、詳細番号残量出庫クエリ

お手数おかけしますが、よろしくお願い致します。

[7231] RE:1レコードの情報を複数に分け、その後計算する方法 Name:hatena Date:2017/07/26(水) 16:40
なんか複雑ですね。

文章を読んで全体像を把握するはなかなか困難です。

どこにどのような集計を表示したいのかもさっぱりわかりません。

DSum関数で希望の集計結果を表示するようにすればどうでしょうか。

[7234] RE:1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/26(水) 19:16
ご返信ありがとうございます。

結構複雑に作成しましたので、言葉を変えて簡易的に作成しました。

パスワード:keisan

レコードの数は少ないですが構造はほぼ一緒です。


入出庫管理クエリで1つの詳細番号に対して、複数の製品番号が割り当てられていると重複表示してしまいます。

フィールドの数が多く、複雑のため難しいでしょうか。

レポートの表は重複している部分は非表示にすればいいですが、肝心の合計重量が重複しているせいで、狂ってしまいます。

お手数ですが、よろしくお願いします。

[7235] RE:1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/26(水) 20:02
添付したファイルで一部作成していないものがありましたので、追加で作成しました。

パスワードは同じになります。
よろしくお願いします。

pass:keisan

[7244] RE:1レコードの情報を複数に分け、その後計算する方法 Name:hatena MAIL Date:2017/07/28(金) 15:02
サンプルを見ましたが、
「重複データ非表示」のテキストボックスは一つもないですが、
どれの重複を排除しで集計したいのでしょうか。

そもそれ何をしたいレポートなのかもわからない。

[7246] RE:1レコードの情報を複数に分け、その後計算する方法 Name:gjun Date:2017/07/28(金) 19:04
ご返信ありがとうございます。

重複非表示の設定をしていなくてすみません。
重複したくないものは全項目ですが、エクセルのように未出荷名は表示させて、詳細番号は表示させないという方法はアクセスではできないことでしょうか。

サンプルのaccessデータで例えると

詳細番号、前月日、前月重量、出荷日、品名、重量
gh1512  17/6   2500    7/5 車 100
               7/6 鮭 300


理想としては詳細番号に対して同じ文字があれば表示しない形にできればと思います。
重複の非表示を設定すると、必要な情報も消えてしまうので、その機能は避けたいです。(同じ値だけど、表示したい場合もあるため)

利用目的は、材料の在庫管理をするためです。
どの詳細番号にどの製品が出荷したか、引き当てしたかを表で分かるようにしたいです。


そのため、正確な、前月重量、当月重量、出荷重量の値が知りたいのです。


今までエクセルで作成していたのですが、結構複雑な動きですので参考程度にアクセスのデータを見ながら、今まで通り、エクセルで管理するしかないでしょうか。


アクセスで色々な情報がある表を作るというのは向いていないのでしょうか。

[7212] カレンダーについて今日ではなく、4日後を表示させたい Name:tokinaito Date:2017/07/17(月) 06:49 [ 返信 ]
すみません教えてください。

申請日が月末の場合許可が4日後でその4日後の日付入力をスピード化したいものですので。

例えばテーブルに 日付があり 今日の日付が2017/5/29 ならばカレンダー の右ボックスを

クリックすれば5月のカレンダーが表示されます。

これをクエリーで date+4として2017/6/2とフォームのフィールドに表示させカレンダーの右ボックスをクリックし6月と表示させたいのですが、できませ

ん。何か手立てがあれば

ご教示ください。

テーブルでは過去の日の日付が入力されていれば当該月のカレンダーが表示されます。

[7213] RE:カレンダーについて今日ではなく、4日後を表示させたい Name:tokinaito Date:2017/07/17(月) 06:54
すみません捕捉します。4日後の許可ではなく4日後の予定日です。

したがって5日後になるかあるいは10日後になるかということです。

[7216] RE:カレンダーについて今日ではなく、4日後を表示させたい Name:kent Date:2017/07/18(火) 14:51
お疲れ様です。
非連結のテキストボックスを張り付けて
コントロールソースに
DateAddの関数を組み込んで
書式に日付を選択する。

というのは、どうですか?

[7237] RE:カレンダーについて今日ではなく、4日後を表示させたい Name:tokinaito Date:2017/07/27(木) 11:22
kent様いつもお返事有り難うございます。
カレンダーコントロールでこのような処理は
無理みたいですね。

[7239] RE:カレンダーについて今日ではなく、4日後を表示させたい Name:kent Date:2017/07/27(木) 15:18
お疲れ様です。現在のテキストボックスでのカレンダ表示は、ちょっと
小さいかと思います。

カレンダーコントロールは、昔、VBで使ったことがありますが、イマイチでした。それで、vbaを使って、フォームにラベルコントロールを
6週間分つまり、6×7日の42個のラベルコントロールを張り付けて
自作でつくりました。土日は、よいのですが、祭日については、別に
祭日のテーブルを作り、そのテーブルから色を付けるようにしました。
そんなに難しくは無いかと思います。

フォームロード時にその年の月と最初の曜日を調べて順次表示。該当しないその月の最初の週や最後の週は、非表示にしています。

[7220] サブフォームから別のサブフォームプロシージャの実行 Name:こういち Date:2017/07/24(月) 14:47 [ 返信 ]
前回は3月にご質問したのですが、またご質問があります。

はてなさんのスケジュール表のレイアウトを変更して使おうと思い

親フォーム(M_Calendar)に

子フォーム01(F_Calendar02)と
子フォーム02(F_予定02)を載せて、

親フォームに増設したテキストボックス(txtDate)
から動かそうとしました。

カレンダー部をクリックして予定の欄は変わるのですが、
予定を更新するとプロシージャが呼びだせないとエラーが出ます。

F_予定02の
Me.Parent.SetScheduleを
Me.Parent.F_cale_SCF(子フォーム01コントロール名).SetSchedule
にしたのですが動かないのです。

SetSchedule部はPublicですので、どこからでも呼べると思い変更しました。

どのように記述を変更すれば動くのかご教示を頂けるとありがたいです。
よろしくお願いいたします。

PS:データを添付しておきます。

[7222] RE:サブフォームから別のサブフォームプロシージャの実行 Name:hatena Date:2017/07/24(月) 19:22
Me.Parent.F_cale_SFC.SetSchedule

を下記に変更してください。


Me.Parent.F_cale_SFC.Form.SetSchedule

これで動作するのを確認しました。



Me.Parent.F_cale_SFC はサブフォームコントロールで、フォームではありません。

Me.Parent.F_cale_SFC.Form とすることで、サブフォームコントロールに埋め込まれいているフォームを参照します。

[7223] 【解決】RE:サブフォームから別のサブフォームプロシージャ Name:こういち Date:2017/07/24(月) 19:46
わわわ、お早い対応ありがとうございました。
無事解決いたしました。

テキストボックス等の指定はサブフォームコントロール名だけでいけるのに
プロシージャの実行は後ろに.Formが要るのですね・・・

ありがとうございました。
感謝いたします。


1件〜15件(全898件)  1345678910       <RSS>    【管理者へ連絡


無料レンタル掲示板・日記・ブログ Progoo