Microsoft Access 掲示板

6,744 件中 2,081 から 2,120 までを表示しています。
5
りんご 2023/06/29 (木) 20:39:11 935bc@0e907 >> 2

 公認か非公認か、グレーゾーンか否は、私にはわかりません。
 Accessの印刷プリンタの設定画面を開いて、印刷可能なプリンタ一覧に入っていれば、KING JIM SR5900P-NWで印刷する事もあっさり叶うかもしれません。
 

4
4年目 2023/06/29 (木) 20:11:20 1824c@d6e7d >> 2

グレーゾーンだったんですね。
すみません。知識不足でした。
公認な機能でできるものだとばっかり思っておりました。
大変失礼しました。

3
りんご 2023/06/29 (木) 20:06:18 935bc@0e907 >> 2

 普通は、出来ないんじゃないでしょうか。関連フォルダを眺めて、手探りで試行錯誤しているうちに出来ちゃう事もなきにしもあらずですが。そういう事がやりたいなら、最初から最後までひとりで頑張ろう。
 当たり障りのない部分は自由に質問していいけれど、非公認かもしれないグレーな部分は、それとわからないように。

2
4年目 2023/06/29 (木) 19:23:01 c1e22@d6e7d >> 1

ご返信いただきありがとうございます。
できれば、ソフトを使って流し込み印刷するのではなく、Accessから直接テプラに印刷したいのですが、可能だったりしますか?

1
りんご 2023/06/29 (木) 18:58:12 935bc@0e907

可能です。公式ソフトに流し込んで下さい。

3

標準の機能ではないので、ユーザー定義関数を作成することになります。
過去に公開してくれてる方がみえますので、それを使用すればコピーするだけで使えます。

DJoin 関数 - リスト文字列を取得する方法 | YU-TANG's MS-Access Discovery

出力先がレポートなら、下記で紹介している方法が簡単です。

グループ内のデータを横連結する - hatena chips

1
りんご 2023/06/28 (水) 13:30:03 935bc@0e907

 Accessのフォームで、AccessVBAコード;レコードのループ処理:変数に該当フィールドの値を+=みたいな感じでどうですか?
 ただ、脱Excel脳に切り替えないと駄目ですね。同様のことをしたいという発想を捨てないと、いつまで経っても中途半端、結局、Accessでジェンガジェンガする事に。
 

26
困り眉 2023/06/27 (火) 18:06:02 ad10d@5908c >> 25

ありがとうございます。
聞きたいことが正しくこの場で聞けるように、
再度運用を確認して設計をしてみます!

25

それぞれ会社毎に、特殊な運用実態があることなので、ここの掲示板では言葉だけでのやりとりでは実態を把握するのは困難です。
確実な設計をするとなると、そちらの現状、使用されている書類、運用実態の聞き取り、などの作業も必要になりますので、このような掲示板でのボランティアでの対応では難しいでしょう。

実際に業務運用している人が一番、業務内容を理解しているはずなので、紹介したリンク先を参考にまずはご自身で、設計してみて、その結果、うまく行かない部分、分からない部分が出てきたらピンポイントで質問されたら、具体的に回答が付きやすいと思います。

24
困り眉 2023/06/27 (火) 09:50:25 ad10d@5908c >> 22

ご指摘ありがとうございます。
もう一度、共通する項目とそうじゃない項目を見直してみます。
参照リンクなどいろいろとお気遣い頂いて本当にありがとうございます。

班というのは、工事請負会社の依頼で仕事を受けた下請け業者のことです。
実際現場ではこの班の方々とお仕事をします。
なので、その日毎に代わっていく項目にはなります。

できればもっと効率的なDBを作って会社のお役に立ちたいです。
なので、なにか非効率的なところや修正したほうがいいと
感じたところなどあれば教えていただけると非常にうれしいです。
いつも本当にありがとうございます!

23
困り眉 2023/06/27 (火) 09:46:24 ad10d@5908c >> 21

ご指摘ありがとうございます。
頂いた内容をもとにもう一度正規化をしてみます。
共通する項目とそうじゃない項目の分け方がちゃんと出来ていないので、
そこから見直します!ありがとうございます!

9
kitasue 2023/06/25 (日) 09:12:14 5eced@12e91

hirotonさん
ユーザーの要望が強い場合は、実装させていただきます。
ご回答ありがとうございました!

2
nokonoko 2023/06/22 (木) 17:28:35 3e2e6@54883 >> 1

ありがとうございます。
DROP COLUMNを使うことにしました。

22
hatena 2023/06/22 (木) 14:15:08 修正

一応、20 の投稿のリレーションシップの設定で、
フォームウィザードでT_警備報告書DBとT_担当警備員DBから必要なフィールドを追加して、進めていけば、担当警備員データをサブフォームに複数登録できるメイン/サブフォーム形式のフォームは作成できると思います。わからなければ下記を参考にやってみてください。

Accessのフォームのメイン/サブフォームとは | できるネット


ただ、それでいいのかはちょっと疑問に思います。
そちらの業務実態が分からないので、あくまで一般的な想像からですが。

現場には複数の警備員、車両を配置するのだと思いますが、走行距離、始業時間、・・・実働時間は共通でいいのか。(現状は共通にしかできない。)

会社名というのが工事請負会社なら、会社名、現場所在地は、工事情報テーブルの方に入れた方がいいのでは。

あと、「班」というのが、どのようなものなのか。
警備員がものなのか。継続的なものなのか、工事現場やその日ごとに作成されるものなのか。

それらの状況や運用しだいでもっと効率的な設計がありそうな気もします。

1

あるいは、インポートしてからフィールドCを削除するほうが良いのでしょうか?

それが一番簡単そうです。
列削除は、SQLの DROP COLUMN で簡単に削除できます。

【SQL学習入門】5回目:Accessテーブルの構成を編集できるデータ定義クエリ


あるいは、エクセルデータはリンクテーブルにしておいて、そこから、フィールドCを除いた追加クエリ(またはテーブル作成クエリ)を作成して、それを実行するという方法もあります。

21
りんご 2023/06/21 (水) 18:12:20 935bc@0e907

警備報告書見出しテーブル:
🔑{伝票No},会社名,工事名
警備報告書明細テーブル:
🔑{伝票明細No},伝票ID,日付,担当班,走行距離,高速道路、始業時間…,担当警備員,社用車

 こんなのを想定していたのですが、、、

19
困り眉 2023/06/21 (水) 18:00:12 ad10d@5908c

皆様、お世話になっております。困り眉です。
進捗をご報告いたします。
現在、正規化を行うために新しくT_担当警備員DBを作成しリレーションシップを見直してみました。
内容は以下の通りです。ご指摘いただけると嬉しいです!よろしくお願いいたします。

2

有難うございます!引用符で囲みましたら希望通りの動作をしてくれました。
とても助かりました!

1

抽出条件の対象フィールドがテキスト型の場合は、条件値を引用符(')で囲む必要があります。

DoCmd.OpenReport "レポート1", acViewPreview, , "品名 = '" & Me.品名 & "'", acHidden
5

コントロールにはCaptionがあるもの(Label, CommandButton等)とないもの(TextBox, ComboBoxなど)がありますので、Controlだとないものがあるプロパティは出てこないですね。
1種類のコントロールを対象にするなら、そのコントロール種で宣言する方がいいですね。

4
nokonoko 2023/06/21 (水) 08:50:06 3e2e6@54883

回答ありがとうございます。
自動メンバー表示が出なかったうえ、何らかのエラーが出たために、captionのところでエラーが出ていると勘違いしてしまいました。現在は、エラーを修正して使えています。

Labelで宣言すれば、自動メンバー表示に出るのですね。
自動メンバー表示のヒントがないと、私には不便で不安になってしまいます。今回のように、ラベル用の時はLabelで変数宣言するようにします。

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

3
nokonoko 2023/06/21 (水) 08:47:20 3e2e6@54883 >> 1

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

自動メンバー表示が出なかったうえ、何らかのエラーが出たために、captionのところでエラーが出ていると勘違いしてしまいました。現在は、エラーを修正して使えています。

2

そのコードで問題なく動作すると思いますが、

ctlには.captionプロパティが対応しないのですね。

コード入力中に自動メンバー表示のリストに出てこないという話だったら、
画像2

ctlをControlではなくLabelで宣言すればいいでしょう。

画像1

1
名前なし 2023/06/20 (火) 22:00:31 cab5f@f966d

ctlには.captionプロパティが対応しないのですね。

こう判断したのはなぜ?

18
りんご 2023/06/20 (火) 21:28:08 935bc@0e907 >> 17

 なるほど、工事現場と日付が決まると、担当警備員が決まったり、社用車が決まったりするのですね。
 毎日都度変更する可能性がある項目を集めた明細テーブルとかちっと決まっている項目を集めた見出しテーブル(時間軸に影響されない項目、会社名や工事名)を作って、例えば、親子関係のリレーションシップを結んでみるとかどうでしょう?正規化にチャレンジしてみて下さい。

17
困り眉 2023/06/20 (火) 16:04:24 ad10d@5908c >> 15

担当警備員はたんなる工事現場の担当警備員になります。毎日つど担当警備員は変更するので、かちっと決まっているわけではありません。社用車も同様です。

16
困り眉 2023/06/20 (火) 16:01:54 ad10d@5908c >> 14

ありがとうございます!
出来次第こちらでご報告いたします。

8
hiroton 2023/06/19 (月) 22:38:47 65a33@2ee8f >> 4

https://www.google.com/search?q=ACCESS treeview

https://www.google.com/search?q=ACCESS+treeview

あぁ、URL貼り付けるときはわざわざリンクの表記する必要なかったってだけですね
画像1

15
りんご 2023/06/19 (月) 19:33:11 935bc@0e907

>リレーションシップ
担当警備員ですが、XX業者付きの担当警備員、それとも、YY業者1班付きの担当警備員、それとも単なる工事現場の担当警備員、明示できますか?車種(社用車)も同様に明示できますか?

7
hiroton 2023/06/19 (月) 18:06:39 81e39@f966d

面白そうなネタだったのでちょっとやってみました

「fFolderPicker」フォームを作成します
ActiveXコントロールから
・「Microsoft TreeView Control, version 6.0」:TreeView
・「Microsoft Forms 2.0 TextBox」:TextBox
を配置します
「TextBox」はWordWrapプロパティを「いいえ」にします

'//標準モジュール:MyFolderPicker
Option Compare Database
Option Explicit

Const defaultPath = "C:"
Public returnString As String

Function folderPicker(Optional folderPath As String)

    If folderPath = "" Or Dir(folderPath, vbDirectory) = "" Then folderPath = defaultPath
    
    returnString = ""
    DoCmd.OpenForm "fFolderPicker", , , , , acDialog, folderPath
    folderPicker = returnString

End Function
'//フォーム:fFolderPicker
Option Compare Database
Option Explicit

Dim fso As Object

Private Sub Form_Close()
    Set fso = Nothing
    MyFolderPicker.returnString = TreeView.SelectedItem.Key
End Sub

Private Sub Form_Load()
    Dim folderPath As String
    Dim folderName As String

    folderPath = OpenArgs
    folderName = Mid(OpenArgs, InStrRev(OpenArgs, "\") + 1)

    Set fso = CreateObject("Scripting.FileSystemObject")
    TreeView.Nodes.Add , , folderPath, folderName
    TreeView_NodeClick TreeView.Nodes(1)
End Sub

Private Sub TreeView_NodeClick(ByVal Node As Object)
    Dim files As String
    Dim file As Object
    For Each file In fso.GetFolder(Node.Key).files
        files = files & file.Name & vbCrLf
    Next
    Me.TextBox.Value = files

    If Node.Tag = "Done" Then Exit Sub

    Dim folder As Object
    For Each folder In fso.GetFolder(Node.Key).SubFolders
        TreeView.Nodes.Add Node.Key, tvwChild, folder.path, folder.Name
    Next

    Node.Tag = "Done"
    Node.Expanded = True
End Sub

手を抜けそうなところは抜きつつ、ですが、このあと、ダイアログとしての体裁を整えるのにさらに苦労することはまた別の話

14

まずは、データベース設計の基本である「正規化」というものについて学習しましょう。
「正規化」でWEB検索すると解説ページが山ほど見つかります。
突き詰めると結構深いので、とりあえずなんとなくでもいいので概要を理解するようにしましょう。
Accessに関するものだと、下記あたりを参考にするといいでしょう。

わかる!Access学習4 理解を深めるデータベースの正規化 | 簡単!!Access作成方法の紹介

アクセスデータベース設計の基本(正規化)

正規化 カテゴリーの記事一覧 - もう一度学ぶMS-Access


おっしゃる通り、「一つの警備案件に複数人が従事するから従事した人数分だけデータ登録したい」ということで合っています。12枠作成しているのは、1つの警備案件で最大12人稼働する可能性があるためです。
このデータは、担当警備員別でデータを溜めて、最終的には個人別で給与計算等行うためのDBになります。なので、仕組みとしては「伝票番号1つで複数商品登録できる注文書/請求書を作りたい」と同じ形になると思います。

「正規化」されていないと、「個人別で給与計算等行う」などの集計作業が非常に困難になります。
上記のリンク先などを参考に、とりあえず「正規化」にチャレンジしてみてください。

できたら、どのような形になったか報告してください。

正規化ができたら、リレーションシップの設定をします。
そうすれば、hirotonさんも提案されたメインサブフォーム形式のフォームがウィザードでも作成できます。

13
困り眉 2023/06/19 (月) 17:01:35 ad10d@5908c >> 12

ご指摘ありがとうございます。
リレーションシップは以下の通りです。画像1

12
りんご 2023/06/19 (月) 16:48:53 935bc@0e907

 リレーションシップの画面のスクショを提示して下さい。リレーションシップの設定が出来なければ諦めましょう。
 その上で、操作画面のスクショを提示して下さい。別スレのようにならないために。

6
kitasue 2023/06/19 (月) 15:57:38 5eced@12e91

hirotonさん、ご回答ありがとうございます。参考にさせていただきます。

11
困り眉 2023/06/19 (月) 15:44:04 ad10d@5908c >> 9

おっしゃる通り、「一つの警備案件に複数人が従事するから従事した人数分だけデータ登録したい」ということで合っています。12枠作成しているのは、1つの警備案件で最大12人稼働する可能性があるためです。
このデータは、担当警備員別でデータを溜めて、最終的には個人別で給与計算等行うためのDBになります。なので、仕組みとしては「伝票番号1つで複数商品登録できる注文書/請求書を作りたい」と同じ形になると思います。

10
hiroton 2023/06/19 (月) 15:37:41 81e39@f966d >> 9

もう少しひねった考えをするなら「とにかく12人分登録できればいいが、登録情報から登録したいのでコンボボックスを使いたい」のようなことは考えられます
レコード更新時にマクロ(VBA)でコンボボックスの内容を連結して登録してあげればいいですかね

ただ、このような想定は

フォーム内の担当者別で1件ずつレコードを登録したい

のイメージからかけ離れてしまうのでやはり、「やりたいことはこれではないだろう」となります

9
hiroton 2023/06/19 (月) 15:31:15 81e39@f966d

なんとなくですけど、「本当にやりたいこと」が「質問に反映できていない」のだと思うんですよね

本題は「一つの警備案件に複数人が従事するから従事した人数分だけデータ登録したい」ということではないですか?

バックグラウンドがないので質問に真っ直ぐ答えようとしてそのままあらぬ方向に飛んで行ってしまっている気がします


フォームの担当者の枠はコンボボックスで計12枠作成しています。

常に12人固定で登録する必要があるのなら、担当警備員フィールドを増やせばいいでしょう。12枠なので「A~L」とか「1~12」とか「01~12」とか適当に添え字をつければいいです

これ、マクロを使わなければなんて思うようなことじゃないですよね?だとすれば・・・となるわけで

「一つの警備案件に複数人が従事するから従事した人数分だけデータ登録したい」

のだろうと思えば、これならよくある「伝票番号1つで複数商品登録できる注文書/請求書を作りたい」と同等の問題になります