Microsoft Access 掲示板

views
4 フォロー
5,901 件中 281 から 320 までを表示しています。
4
りんご 2024/03/02 (土) 21:05:06 07313@0e907

 都道府県を入力するだけなのに、かっこつけてもしょうがないです。
 例えば、人参を切って、インスタ!大根を切って、インスタ!インスタしないと料理が出来ない、残念みたいな感じになると悲しみ。
 Accessは伝統芸能なので、先人の作品をの忠実に守るとお得。貴方の頑張りは一旦保留して、Accessを卒業してから役立てると丸。
 これって私の意見に過ぎないので、コードのアドバイスは気長に待てば3名ぐらいから回答が来るはず。

3
rinrin 2024/03/02 (土) 20:22:12 b4dc9@c7f00

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

でも あたしが頑張ってもうそれなりに作りこんであります。。。。他の人に作らせているみたいで。。。;;
だから上記のプログラムをどう修正したらいいのか???
正しいソースコードの書き方 
教えていただけませんでしょうか
よろしくお願い致します

1
rinrin 2024/03/02 (土) 14:41:55 b4dc9@c7f00

なんで誰も教えてくれないの。。。。。。。。。。。;;

5

あるいは、データをエクセルに出力してそこで入力してもらって、エクセル上のボタンクリックでAccessのテーブルを更新するとか。

4

もう一つの案としては、レポートだと重複データ非表示の機能があるのでそれを使うというのもありますね。
レポートビュー表示にすればテキストボックスをクリックできますので、クリックしたときにポップアップフォームを表示させてそこで一側のデータを入力させて、そのデータでテーブルを更新する、その後レポートを再クエリという処理をVBAで構築することになりますね。

3

一対多のテーブルを連結したクエリでは、一側のデータは複数表示されるのはデーターベース的には仕方ないことです。

イメージとしてはエクセルでのセル連結みたいなことがしたいのだと思いますが、それを帳票フォームで実現するのは難しいですね。

メイン/サブフォーム形式のフォームをデータシートビューにすると、多側のデータをサブデータシートとして展開できる表示になります。これを使うのはどうでしょうか。

サブデータシートというのは下記のリンク先の画像のように左端の+ボタンをクリックすると子データシートが展開するものです。

サブデータシート - もう一度学ぶMS-Access

フォーム上にデータシートとサブデータシートを表示する - もう一度学ぶMS-Access

3

コピーすることで、破損部分が修復されたのかな、と思います。

内部的な動作は1ユーザーからは分かりませんが、
イメージとしては、フォームの設定データ(プロパティとかコントロールのレイアウト)を元に作成しなおしているのかなと思ってます。

2
驚天動地!前任者失踪丸 2024/03/01 (金) 17:11:25 23e8e@44ebd

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

閉じる時の最適化は毎回しています。

当該のフォームのコピーを取って削除、コピーしたフォームの名前をもとに戻してみたところ、エラーが出なくなりました。
破損が原因ならコピーと名前変更で直るのはおかしな話だなぁと思うのですが、、、

2
驚天動地!前任者失踪丸 2024/03/01 (金) 16:48:53 23e8e@44ebd >> 1

回答ありがとうございます。
最初の質問で例示したパターンについては上手く置換できました!

社名1社名2
株式会社A株式会社A東京営業所

社名1社名2
株式会社A株式会社A

等もまとめて抽出・置換することはできますでしょうか?

2
あん 2024/03/01 (金) 16:37:02 b41ab@001b1

hatena様

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

言葉足らずで、すみません。

すでに残業のデータを、メイン/サブフォーム形式で個人個人が入力してあり、
そのデータの一覧を表示(今回のフォーム)し、承認者が承認するということになります。

1

一対多の関係のテーブルですので、Accessでは通常、メイン/サブフォーム形式のフォームで入力作業をすることになります。

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

ACCESS サブフォームの作成方法 - たすけてACCESS

1

デザインビューで更新クエリにして、下記のように設定してください。

フィールド社名2
テーブルT_会社マスター
レコードの更新Replace([社名2],[社名1] & " ","")
抽出条件Like [社名1] & " *"

SQLでは

UPDATE T_会社マスター
SET T_会社マスター.社名2 = Replace([社名2],[社名1] & " ","")
WHERE T_会社マスター.社名2 Like [社名1] & " *";
1

データベースファイルの破損かもしれません。

まずは、「最適化/修復」を実行してください。

それで、だめなら、新規データベースを作成して、そこに現在のデータベースのオブジェクトをすべてインポートして、そのデータベースで操作してみてください。

それでだめなら、バックアップファイルを使用するようにしてください。

バックアップファイルがないのなら、
エラーになるフォーム以外を新規データベースにインポートして、エラーになるフォームは一から作成しなおしてください。

1

終了のテキストボックスのコントロールソースに下記の式を設定すればいいでしょう。

=Format([終了],"hh:nn") & IIf(Day([開始])<>Day([終了]),Format([終了], "(dd)"),"")
4

SQL Server + Accessで開発する場合、SQL Serverでdate型は使っていません。
ご指摘のようなトラブルが発生するためです。

date (Transact-SQL)
下位クライアントの下位互換性
https://learn.microsoft.com/ja-jp/sql/t-sql/data-types/date-transact-sql?view=sql-server-ver16#backward-compatibility-for-down-level-clients

どうしても使う場合は、Accessへ渡す前にdatetime型に型変換しています。

SELECT Cast([日付] as datetime) AS 日付 FROM テーブル;

3
hiroton 2024/02/29 (木) 11:51:07 修正 3c737@f966d

その日付のようなテキストをACCESSで日付として認識させたいのなら、データ型変換関数で変換してあげればいいんじゃないですかね

CDate([日付])

どこまでのことを望んでるのか分かりませんが、SQL Server側で、ということであればテキストで保存されているデータを数値データ(日付のシリアル値)に変換して受け取るとかになるんですかね

CAST および CONVERT (Transact-SQL)

1
りんご 2024/02/28 (水) 21:42:37 935bc@0e907

具体的な情報を開示しない限り回答不可能じゃないかしら?
例えば、肉じゃがの作り方を教えて下さい。自分でやったら、味が変と苦情が出ちゃいます。どう対処したらいいのか、回答できますか?

4
驚天動地!前任者失踪丸 2024/02/28 (水) 17:04:57 23e8e@44ebd

確かに、出荷数クエリは同じテーブルの都道府県フィールドに抽出条件を加えて集計したもので、出荷数合計クエリは出荷数クエリをさらに集計したものです。

出荷数クエリの都道府県フィールドの抽出条件を外したクエリを作成してレポートを作成したところ、思い通りのレポートを作ることができました。また、サンプルでレコード数を増やしてみたところ、きちんと2列で表示させることも出来ました。
ありがとうございます!!

サブレポートを用いる方法でも同じようなレポートを作れましたが、こちらの方がクエリ・レポートのオブジェクト数が1つずつで済むので大変良いですね、助かりました。

3

現状のクエリの Q_東京出荷数、Q_北海道出荷数 というのは同じテーブルから作成したもので、抽出条件(東京、北海道など)がそれぞれ異なるものだと思います。
このクエリの抽出条件を削除したクエリを作成して、それを元にレポートウィザードで作成してください。

そちらの詳細な状況が不明なので一例で説明します。

必要なフィールド(例 都道府県コード、都道府県名、出荷日、出荷数)を選択する
 ↓
グループレベルの指定、都道府県コード(都道府県名)を選択する
 ↓
並べ替え、集計方法、出荷日(昇順)
 集計のオプション 合計 
 ↓
レイアウト ブロック
 ↓
レポート名を入力して完了

上記のような感じで希望のレイアウトに近いものができると思いますので、
デザインビューで微調整してください。

2
驚天動地!前任者失踪丸 2024/02/28 (水) 11:18:54 23e8e@44ebd

ウィザードからやってみましたがうまく作成できませんでした。
各クエリのフィールドを全て項目に追加しようとするとエラーが出ます。

3
Anonymous 2024/02/28 (水) 09:31:31 23e8e@44ebd

替えたところ入力出来るようになりました。
㉗が文字として認識されず、IDと同一とみなされてしまったのですかね?

1
hiroton 2024/02/28 (水) 08:59:54 0a8a1@f966d

いくつか方法はありますが、「都道府県」が単一の都道府県の文字データであるならば、今やっている、「『都道府県』フィールドに『テキストボックス向け先』の文字が入っているか?」の逆をやればいいです

フィールド|式1: [Forms]![顧客情報]![テキストボックス向け先]
抽出条件 |Like "*" & [都道府県] & "*"
1
hatena 2024/02/28 (水) 01:29:39 修正

提示のレイアウトなら、サブレポートを使わずとも、レポートのグループ化の機能で実現できます。

ウィザードで作成する方法
グループ化レポートまたはサマリー レポートを作成する - Microsoft サポート

表形式のレポートに見出しや合計を追加する方法
Accessのレポートでフィールドごとにグループ化して印刷する方法 | できるネット


レポートサイズの横幅を10cm程度に設定し、レコード数が増えてきたら2列になるようにしたいです。

上記の方法でレポートを作成すれば下記の方法が使えます。

Accessのレポートで表を2列に印刷する方法 | できるネット

5

サブフォームの合計をメインフォームに表示したいのなら、

サブフォームのフォームヘッダーかフォームフッターにテキストボックスを配置して、下記のように設定して、

名前 合計
コントロールソース  =Sum([受注金額])

メインフォーム上のテキストボックスのコントロールソースに下記の式を設定すればいいでしょう。

=[サブフォームコントロール名]![合計]
4
苦節1年 2024/02/27 (火) 16:39:11 ca7cf@20718

hatenaさんに頂いた式、無事できました!
また一つ勉強になりました。ありがとうございます。

2
ssassakki 2024/02/27 (火) 16:15:35 27741@c61b7

すずやんさん、ありがとうございます。
保持されるのはおっしゃる通りなのですが、NativeClient接続では日付として扱えていたものが
テキストとして認識されることで、”-”で区切られた日付風の文字列は書式設定の通り表示さない様で困っています。

1
すずやん 2024/02/27 (火) 13:38:05

ちょっと良くわからないですが、どういう状態になったら解決なのでしょうか。

”yyyy-mm-dd”を”yyyy/mm/dd”にしたら解決だとした場合、SQL ServerのDate型は「2024-02-27」で保持されるので、そういうものです。

Accessで表示する際に変換する、などの対処方法で良いと思います。
※的外れだとすみません

3
苦節1年 2024/02/27 (火) 09:42:19 ca7cf@20718

ご丁寧にありがとうございます。
hatenaさんにご教授頂いたこともやってみましたがパラメータが出てしまい断念しました。
そうですよね、なにがしたいかを言葉足らずでした。
社内の受注管理システムを構築しようとしています。
社員数名で操作するのでフォームはできるだけ分かりやすくしようと思っており2歩進んでは3歩下がっている状況です。
1つの受注案件(メインフォーム)に対し、2つの工事(サブフォーム)がある事あるので今回の相談と成りました。
受注金額=工事金額+工事金額
本当は受注メインフォーム上で工事サブフォームの工事金額の合計を参照したいのですが工事が2つある場合レコードでマウスでクリックしなければ次ページが見れないので次ページを見なくとも、メイン上で合計が見れればと思いました。
やっていて、クエリではなくメインフォーム上でテキストボックスも作成してみましたが上手く行きませんでした。

20
rinrin 2024/02/26 (月) 19:28:57 b4dc9@c7f00

hatenaさん。。。。。。。。。^^
会社でメインフォームのチェックボックスから
サブフォームのチェックボックスへのデータのやりとり   うまくいきました。。。。^^

ホントにホントにありがとうございます^^

2
hatena 2024/02/26 (月) 15:30:04 修正

エラーメッセージ=指定されたフィールド'[工事番号]'がSQLステートメントのFROM句にある複数のテーブルを参照しました。

メッセージ通り、クエリ内に[工事番号]が複数あるのでどちらのテーブルを参照したらいいか分からないということです。
どちらのテーブルのものかを指定してあげればいいです。

受注番号が数値型の場合

総合計: DSum("受注金額","T_受注種別","受注番号=" & [T_受注番号].[受注番号])

工事番号がテキスト型の場合

総合計: DSum("受注金額","T_受注種別","工事番号='" & [T_受注番号].[受注番号] & "'")

※テーブルの説明とメッセージのフィールド名が異なりますが、テーブルの方(受注番号)が正しいと仮定してます。

ただし、DSum関数は重い処理になりますので、集計クエリと連結した方が処理速度は速くなります。
クエリが増えるのがいやならサブクエリを使うという方法もあります。調べてみてください。

ただ、クエリで集計値と個別の値を同時表示するという要件はあまりないように思いますが、どういう状況でしょうか。
もし、レポート内で集計値を表示したいのなら、レポートのグループフッターのテキストボックスに =Sum([受注金額]) と設定することでグループ別の集計を表示させることはできます。

1
苦節1年 2024/02/26 (月) 14:20:45 ca7cf@20718

新しく総合計のみのクエリを作り、集計で合計金額は出せるようになりました。
クエリが増えて行くのがややこやしいですが、とりあえずこれでやってみます。

19
hatena 2024/02/25 (日) 11:37:17 修正

私の質問に明確に回答していただけないようなので、
こちらで勝手に推測して回答します。

メインフォームは非連結(「レコードソース」プロパティが空欄)
メインフォーム上のチェックボックスの名前
Chk北海道、Chk秋田、・・・Chk沖縄 (48個)

サブフォームコントロールの名前
SubMST実査実績一覧

サブフォームのレコードソースの設定値 MST実査実績一覧
サブフォーム上のチェックボックス
名前とコントロールソースの設定値は同じでそれぞれ下記のように設定されている。
北海道、秋田、・・・沖縄 (48個)

やりたいことは、
メインフォーム上のコマンドボタン「新規登録」のクリックで、
メインフォームの各チェックボックスの値を、
サブフォームの新規レコードのYes/No型のフィールドに転記する。

以上の推測での回答です。

Private Sub 新規登録_Click()
    With Me.SubMST実査実績一覧.Form.Recordset
        .AddNew
        !年月日 = Me.Txt実査実施日
        !担当者 = Me.Cmb実査担当者
        !北海道.Value = Me.Chk北海道
        !北海道.Value = Me.Chk秋田
        '中略
        !北海道.Value = Me.Chk沖縄
        .Update
        Me.Cmb実査ID.Value = !ID
    End With
    Msgbox("登録完了しました。")
End Sub

解説
サブフォームのレコードセットは、フォームが開いたときにすでに生成されているので
ADOでRs.Openする必要はない。
Me.埋め込み1.Form.Recordset でレコードセットを取得できるのでそれに対して転記処理を実施すればよい。

以上です。
これでこの件に関しては私からのアドバイスは終わりとさせていだきます。

18
rinrin 2024/02/25 (日) 07:56:47 b4dc9@c7f00

これのことです。。。。。。。。。;;

ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型



沖縄 Yes/No型

17
rinrin 2024/02/24 (土) 13:32:29 b4dc9@c7f00

もちろんhatenaさんの指示通りにせっていました。。。

16
rinrin 2024/02/24 (土) 12:55:36 b4dc9@c7f00

メインフォームのチェックボックスのレコードが
サブフォームに、、、レコード移行できないのって。。。

15
rinrin 2024/02/24 (土) 12:54:14 b4dc9@c7f00

いろいろバタバタしちゃって。。。遅くなっちゃいました。。。;;
ごめんなさい

あたしいろいろ考えてたんですけど
Me.SugMST実査実績一覧.Form.Filter=""
Me.SubMST実査実績一覧.Form.FilterOn=False
があるとこが、、、おかしいのかな???って思いました。。。;;

メインフォームとサブフォーム それぞれに設定するのかな???

9
Anonymous 2024/02/21 (水) 09:31:28 23e8e@44ebd >> 2

お二人ともありがとうございます!

8
すずやん 2024/02/21 (水) 08:33:35 >> 2

そういう引当ての方法は知りませんでした。参考になります!

7

ですので抽出条件のみ書き方が分かればOKかなと思います。

 
Access-SQLの構文で抽出条件を記述するなら

SELECT * FROM テーブル名
WHERE フィールド名 Like '*[a-z]ー[a-z]*'
;

になります

ただし、Access-SQLには以下のような問題があるようなので

長音「ー」を含むデータをクエリであいまい抽出すると
クエリでLike演算子を使用してあいまい抽出すると合致しないデータが抽出されてしまうというバグがあります。それを知らないと想定外の結果になりあわせるということになりますので注意が必要です。 また、それに対する対応策も紹介します。 難易度:...
Fc2

参照先のコンテンツに掲載されているラッパー関数を用いて
以下のように記述すればいいでしょう

SELECT * FROM テーブル名
WHERE ILike(フィールド名, '*[a-z]ー[a-z]*')
;