Microsoft Access 掲示板

6,622 件中 4,641 から 4,680 までを表示しています。
2
wasabi 2020/11/25 (水) 16:58:57 d94c8@d1b14

hatenaさん
迅速な返信感謝いたします。
ご提示いただいた入力で無事に解決しました。
助かりました。ありがとうございました!

1

[Q10_記号]![記号]>10<100というような書き方はできません。

6ケタの記号に数量(1、10、100の位)、ケタ数を21桁に合わせるためにスペースを入れ、
最後21ケタ目にアルファベットの”L”と繋げる設定

というのが下記のようなことなら、

記号:ABCDEF
数量:123
の場合、下記のようにしたい。
ABCDE123            L
ということなら、

QRコード: Format(記号 & 数量,"!" & String(20,"@")) & "L"

ちがうのなら、上記のようにデータ例と出力例を提示してください。

2
ポンタ 2020/11/25 (水) 16:33:03 0029a@1c915

うまくいきました!初歩的な間違いでお恥ずかしい限りです。ありがとうございます。

3

新規登録フォーム の「データ入力用」プロパティを「はい」に設定するか、
下記のように引数に acFormAdd を指定しておいた方がいいでしょう。

Docmd.Openform "新規登録フォーム", , , , acFormAdd
Forms!新規登録フォーム!ID.DefaultValue = Me!ID

新規登録フォームのテーブルにIDが既に存在しているかどうかのチェックも必要かと思います。

2
hassy-hhh 2020/11/25 (水) 15:33:02 bf909@6eb0c

できました!ありがとうございます!

1
hatena 2020/11/25 (水) 15:27:51 修正

「現在郵便を送るための住所欄」があるフォームのレコードソースは何でしょうか。

テーブル名 郵送履歴
フィールド名 郵送履歴ID、発送日、企業CD
というような感じでしょうか。

「普段は登録している企業を選択したら情報を引っ張ってくる」とは具体的にどのように実現してますか。
(コンボボックス、オートルックアップクエリ、VBA・・・)

フォームは単票フォームですか。

3

出荷日 > 顧客名 でグループ化してグループヘッダーに、出荷日と顧客名を配置。(出荷日 > 顧客名 の順は逆でも可)

詳細セクションに、品名、売上数量、売上単価、[売上数量]*[売上単価] を配置。

グループフッターにテキストボックスを配置してコントロールソースを下記に設定。

=Sum(IIf([消費税率]=0.1,[売上数量][売上単価],0)) 0.1 + Sum(IIf([消費税率]=0.08,[売上数量][売上単価],0)) 0.08

これで消費税合計が計算できます。

1
hiroton 2020/11/25 (水) 14:53:49 6ffb1@f966d

簡単なのはDLookup関数かな

=DLookup("フィールドA","テーブルA","ID=" & DMax("ID","テーブルA"))
1
hiroton 2020/11/25 (水) 14:45:20 6ffb1@f966d

コード全体がないとなんとも言い難いですが
標準モジュールで「Meキーワードの使用方法が不正です」(hatena chipsさん)

フォーム名指定をしたいのなら「Forms(formName)」ですかね
Forms object (Access)

2
シソンヌ 2020/11/25 (水) 14:24:21 0029a@1c915

ありがとうございます。「DefaultValue」についても勉強になりました

8
トマト 2020/11/25 (水) 11:37:04 0029a@1c915

ありがとうございます。
やっと理解できてきた気がします。
詳しく教えてくださり、本当に感謝の気持ちでいっぱいです。

1
hiroton 2020/11/25 (水) 11:28:18 6ffb1@f966d

新規フォームを作成する

「新規登録用のフォームを開く」ですかね?

たとえば、自分自身ならMeで参照できますね。自分自身でない場合はForms!フォーム名で参照できます。

Docmd.Openform "新規登録フォーム"
Forms!新規登録フォーム!ID = Me!ID

ただし、この場合データが即座に登録されます。新規登録するつもりはなかったが間違ってボタンをクリックしてしまったなんて場合が面倒ですね。規定値プロパティを使うと実際の登録を後回しにして値を設定できます

Docmd.Openform "新規登録フォーム"
Forms!新規登録フォーム!ID.DefaultValue = Me!ID
7
hiroton 2020/11/25 (水) 11:11:46 6ffb1@f966d

あぁ、すみません。そもそも「コードそのまま」がフィルターとして不適切ですね。フィルターとして設定する文字列はSQL(のWHERE句)に従った記述にしないといけません

日付>=DateSerial(Year(Date()), Month(Date()), 1) AND 日付<DateSerial(Year(DateAdd("m", 1, Date())), Month(DateAdd("m", 1, Date())), 1)

VBAはSQLとして処理できる文字列を発行し、それをデータベースに処理させるという2段階の処理をしています。VBAとして発行したものをそのままフィルターに設置したいとなった場合は、たとえば

MsgBox Forms!F鑑賞.Filter

として表示される文字列を設定することになります。具体例を挙げると

月>=#2020/11/01# AND 月<#2020/12/01#

のようになり、これをそのままフィルターに記述すれば動きます

VBAコード上で文字列を表すための「"」はVBAのための記述なのでフィルター用の文字列に含めてはいけません

この時「#~#」は、「直接記述した文字が日付ですよ」ということを表しています。VBAの出力からは人が見れば日付に見えるだけの文字でしかないので、SQLとして処理するために日付として扱ってほしい部分として「#」で囲っているわけです

これを直接SQLとして関数に置き換える場合「#」まで含めて書き直すこととなります。今回は、DateSerial(Year(Date()), Month(Date()), 1)自身が日付のデータとなるので、単純に「#」が不要になります

6
トマト 2020/11/25 (水) 10:06:40 0029a@1c915 >> 5

式を修正しました。下記の式なのですが、やはり絞り込みができません。。
※読み込み時にフィルターを適用プロパティを「はい」にしている状態

"月>=#" & DateSerial(Year(Date()), Month(Date()), 1) & "# AND 月<#" & DateSerial(Year(DateAdd("m", 1, Date())), Month(DateAdd("m", 1, Date())), 1) & "#"
5
トマト 2020/11/25 (水) 10:02:29 0029a@1c915 >> 4

今コピペして気づいたのですが、式が変わってしまっていますね・・・スミマセン。
最初の式でやり直してみます。

4
トマト 2020/11/25 (水) 10:01:26 0029a@1c915

ありがとうございます。
Date()も試していたのですが、(記載すればよかったです、2度手間になりスミマセン)
それで行うと、絞り込みが行われませんでした。

"月 Between #" & DateSerial(Year(Date()), Month(Date()), 1) & "# AND #" & DateSerial(Year(Date()), Month(Date()) + 1, -1) & "#"
3
hiroton 2020/11/25 (水) 09:48:38 6ffb1@f966d

Date()と記述してください

コードでかっこを使用する

VBAコード上では括弧を省略してもいいし、VBEが自動で省略してくれる(Date()と記述してもDateになる)のですが、クエリやフォーム上ではこのルールが使えないのできちんと括弧付きで記述する必要があります

2
トマト 2020/11/25 (水) 08:45:48 0029a@1c915

ありがとうございます。
フォームを開いたときに自動で適用したかったのですが、フィルター適用プロパティが「いいえ」になっていたので変更しました。
しかし、新たに問題が起きました。
パラメータの確認ポップアップが出て「Date」と表示されます。

1
hiroton 2020/11/25 (水) 08:20:29 6ffb1@f966d

Forms!F鑑賞.FilterOn = Trueに該当する設定はされていますか?
FilterOn プロパティ
フィルターを適用して、Access データベースのレコードを選択して表示する - フィルターを保存する

何も設定されていなければ(デフォルトの設定だと)
[ホーム]>[並べ替えとフィルター]>[フィルターの実行]
または、
フォームのステータスバー>[フィルター処理なし/フィルター適用]
をクリックして手動でフィルターを適用することになります

フォームを開いたときに自動で適用するなら読み込み時にフィルターを適用プロパティを「はい」にします

2
ロブスターK 2020/11/24 (火) 18:29:42 0110b@77137

有難うございます。フィールド名は出荷日、顧客名、品名、売上数量、売上単価、消費税率です。レイアウトはまず、顧客名と出荷日の下に品名A、B、Cとそれぞれの売上数量と単価を表示、そして売上高は[売上数量]*[売上単価]。消費税は8%適用の売上高と10%適用の売上高の合計に税率を乗じて計算。ここまでは、デザインビューでできるのですが、8%と10%税金の合計が出来ないのです。

1

レコードのレコードソースのフィールド名とデータ例を提示して、どのようなレイアウトでレポートに表示したいかも提示してください。
商品A と 商品B の2種類しかないというわけではないですよね。
消費税が8%と10%を区別するフィールドがあるはずですよね。

それらを含めてもう少し詳細に説明してください。

2

実現できました。ありがとうございます。
当方では勘違いして SELECT TOP 3 DISTINCT Table1.Fld1, Table1.Fld2  などとしておりました。

1

下記のように DISTINCT TOP の順で記述できます。

SELECT DISTINCT TOP 3 Table1.Fld1, Table1.Fld2
FROM Table1
ORDER BY Table1.Fld1;
2

hatenaさん、ありがとうございました!
とってもよくわかりました!
コントロールソースに記述したら希望通りになりました。ありがとうございます。

1
hatena 2020/11/21 (土) 16:00:27 修正

フォームにて、社員と数値というテキストボックスがあります。
社員はコンボボックスです。

数値というテキストボックスは連結フォームですか。
テキストボックスに表示するだけではなく連結したフィールドに値を入力したいということでしょうか。

社員の更新後イベントプロパティに、=IIf([社員]="A",[数値]=1)としたら間違いですか?

はい、間違いです。
IIfの第3引数に [数値]=1 と設定しても[数値]に値が代入されるわけではありません。
引数に設定できるのはでありステートメントは設定できません。

表示だけでいいなら、数値テキストボックスのコントロールソースに
=IIf([社員]="A",1)
と設定します。
数値フィールドに入力したいのなら、イベントプロシージャにコードを記述するかマクロを設定する必要があります。

Private Sub 社員_AfterUpdate()
    If Me.社員 = "A" Then
        Me.数値 = 1
    End If
End Sub
1

「データベースツール」>「データベース構造の解析」でレポートとして出力できます。

それをExcelに変換もできるのでそちらで解析したり、見やすく体裁を整えたりもできます。

有料のツールとしては下記のようなものがあります。
私自身は使ったことはないので、現バージョンでは使えるかどうかは分かりません。

Access2016 仕様書 作成 ツール【A HotDocument】(Access2016対応 仕様書)

Access2010/2007仕様書作成ツール『T'sDoc 6』の詳細情報 : Vector ソフトを探す!

2

単純に改行を入れて入力すればいいかと思いますが、それではだめなんでしょうか。

Ctrl+Enterで改行を入力できます。

あるいは、テキストボックスの「Enterキー入力時動作」プロパティを「フィールドに行を追加」にすればEnterキーだけで改行されます。

(部署名を登録する際、改行したいところで★などを入れて、表示する際場合分けするとかでしょうか…?)

もし、この方法をとるなら、テキストボックスのコントロールソースを下記のように設定すればいいでしょう。

=Replace([部署名],"★",chr(13) & Chr(10))

chr(13) & Chr(10) は改行です。

2
hassy-hhh 2020/11/20 (金) 15:07:36 bf909@6eb0c

できました!ありがとうございます。助かりました!

1
hiroton 2020/11/20 (金) 15:02:55 06b46@f966d

リッチテキスト形式を使うとテキストボックス内の文字に装飾を加えることができます
テキストボックスを背面に設置し、空白スペースで埋め尽くして、その文字の背景色としてカラーコードを指定すればイメージしたものができるかもしれません

背面に設置するテキストボックスの設定

コントロールソース|='<div><font style="BACKGROUND-COLOR:#' & Hex([カラーコード]) & '">     </font></div>'
文字書式      |リッチ テキスト形式
背景スタイル    |透明
境界線スタイル   |透明

表示したいラベルのサイズに合わせてフォントサイズや空白スペースの数を調整してみてください

1
りんご 2020/11/20 (金) 10:31:59 48103@0e907

クエリCの抽出条件
[Forms]|[フォームAの名前]![TXT_Aの名前]
If条件
IsNull(Me.テキストボックスの名前)
フォームを開く
DoCmd.OpenForm(“フォームB”)
どうですか?

5

レポートを3つ作り、フィールドの区分によってそれぞれのレポートを抽出したいです。
抽出条件は区分かつ商品番号で1つのレポートを出力したいです。

区分によってレポートのデザインやレイアウトが大幅に異なるというのですか。

レポートのレコードソースのフィールド構成を提示してもらえますか。クエリなら、SQLビューで表示されるSQL文をコピーして貼り付けてください。
また、レコードソースに含まれるテーブルの主キーフィールドも提示してください。

4

そうです!
その通りになります。
説明不足で申し訳ありません。

レポートを3つ作り、フィールドの区分によってそれぞれのレポートを抽出したいです。
抽出条件は区分かつ商品番号で1つのレポートを出力したいです。

最初の質問に戻りますが、私が考えたのはラジオボタンで区分を選択し、テキストボックスなどで商品番号を入力、そして出力ボタンを押すと印刷プレビューが表示されるという形にしたいです。
これは知識不足の私が考えたものなので他にこっちのほうが良いという案がありましたら是非教えて頂きたいです。

3
りんご 2020/11/18 (水) 16:39:45 48103@0e907

なるほど、勉強になります。

2
nokonoko 2020/11/18 (水) 15:11:36 653a6@54883

ご回答ありがとうございます。
IDの値を取得したかったので、非表示では意味がありません。

ご回答いただいく直前に、自己解決しました。(報告遅れてすいません。)

「備忘録」
元データの名前をクエリ0とします。

クエリ1として、フィールド商品IDをグループ化、フィールド見積日を最大値とし、
ついでに、グループ化できないIDも、最大値としておく。

クエリ2として、クエリ0とクエリ1の商品IDと見積日をつなげ、
クエリ0のIDとクエリ1の商品IDと見積日を取得する。
これでクエリ1で取得した商品IDと(最新)見積日を持つ、クエリ0のIDが正確に取得できました。

1
りんご 2020/11/18 (水) 14:47:55 48103@0e907

IDフィールドを非表示でどうですか?

3

レポートが複数あり、区分によって異なるレポートで印刷したいということですか。

区分がお菓子のときは、レポートA
区分がお酒のときは、レポートB
とか。

その辺をもし少し具体的に説明してください。

2

テーブルAには商品番号というフィールドはなくテーブルAとお菓子を登録しているマスタのクエリを作りそれをレポートのレコードソースとしています。
そしてレポートに商品番号のテキストボックスを配置しております。
商品番号だけを指定してレポートを表示させても区分によって出力するレポートが違うので絞り込めないのです・・・
分かりにくい設定で大変申し訳ないです。

商品番号かつ区分がお菓子のときのレポート
商品番号かつ区分がお酒のときのレポート・・・という風に条件付きでレポートを印刷したいのでお力を貸して頂けると嬉しいです。

8
やさぐれないで 2020/11/17 (火) 21:26:12 0029a@1c915 >> 7

なるほど、そういうことですね。。わからずお恥ずかしい限りです。
優しく教えていただき、ありがとうございました!

5
hiroton 2020/11/17 (火) 09:56:30 339b9@f966d

それなら読み取り側のシステム次第でしょう
たいていのデータベースソフトならSQLでクエリを発行すればいいでしょうし、ACCESSならDLookup関数でもいいでしょう。データベース的な能力がないのならCSVでマスタをデータ化しておいてテキスト検索的な手法になるかもしれません
名刺の発行側で考えることではないですね

また、氏名という項目は同姓同名問題が発生するので画面の表示上日本語でも、システム内部ではかならずユニークな識別子をもってやり取りするものです
本当にQRコードに日本語データが必要なのかよく考えてみてください

4

hatena様
ご回答ありがとうございます。
説明不足で申し訳ございません。
>わさわざQRコードにする意味はなんですか。

弊社では名刺を名札がわりに首からぶら下げています。
ある作業をする際に名刺に記載されているQRコードを読み取って
作業を行います。(コンビニなどでされていますよね)
読み取った名前は作業記録に表示されます。

これで理解いただけましたでしょうか?