Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim ImgPath As String
Select Case Me.資格コード
Case 1
ImgPath = "C:\test\image\pic1.bmp"
Case 2
ImgPath = "C:\test\image\pic2.bmp"
Case 3
ImgPath = "C:\test\image\pic3.bmp"
End Select
Me.イメージコントロール.Picture = ImgPath
End Sub
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
OR ( ID = 3 And 収入 >= 20 )
GROUP BY 地域
HAVING Count(1) = 3
);
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
GROUP BY 地域
HAVING Count(1) = 2
);
このSQL文に再度条件を加える場合です。
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 ) OR ( ID = 3 And 収入 >= 20 )
GROUP BY 地域
HAVING Count(1) = 2
);
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
GROUP BY 地域
HAVING Count(1) = 2
);
■ { 地域 + ID } で行がユニークにならない場合
SELECT t.* FROM テーブル1 t
INNER JOIN
(
SELECT 地域
FROM
(
SELECT DISTINCT 地域, ID
FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
) tmp
GROUP BY 地域
HAVING Count(1) = 2
) q
ON t.地域 = q.地域 ;
スナフキン様
ご連絡ありがとうございます。
ご指摘の件、実際のフィールド名を変えて質問していたため誤記です。
RS![名前] = Me![名前] となります。
このコードの前に、
RS![check] = Me![check] ←チェックボックスがあるんですが、じつはここが問題だったようです。
フォームを開いた時に、チェックボックスがfalseになっていませんでした。
フォームロード時にチェックボックスを、
Me.check.Value = Falseにすることで解決できました。
ありがとうございました。
meibo_Tのデザインはどうなってますか?
RS.Find "名前 LIKE '" & Me![検索用名前] & "'"
と
RS![氏名] = Me![氏名]
で名前なのですか?
氏名なのですか?
後はどんなフォームを作成されているのでしょうか?
ログって「一括出力」するようなものでしたっけ?
どのような場合においても不可能であり、可能です
・「ログデータ(ファイル)」はアクセス可能な場所か
・「ログデータ(ファイル)」が存在するか
・「ログデータ(ファイル)」が上書き可能な状態で開けるか
・「ログデータ(ファイル)」がロックできるか
等、根本的な出力場所の環境や同時にアクセスする可能性、その場合の処理を適切に組むことによって「1つのファイルに複数人が同時に書き込める」ような仕組みは作れるでしょう
ログ出力先がデータベースであればこの辺の考え方は標準機能なのでデータベースを扱う技術だけで実現できると思います
それこそ構築中のACCESS自身に出力するだけでいいのであれば追加クエリ1つ実行するだけです
ログ出力に何が必要か(タイミング、内容、データ形式)とログをどのように閲覧したいかを考えてみるといいと思います
「Webシステム(Java)の場合はログ出力用のモジュール」というのがどのようなもので、どのようなログを出力するのか分からないので具体的に回答が難しいです。
テキストファイルですか。
Accessのテーブルとか、他のデータベースなら複数人の書き込みは可能だと思います。
hatena様
ご連絡ありがとうございます。
アクセスのアンインストールやってみます。
それでもダメな場合の、Microsoft DAO 3.6 Object Liblaryの参照設定 ですが、
これは旧バージョンで使っていましたが、2010ではこれも「DLL読み込み時のエラーです」とエラー表示されます。
ご連絡待っている間、2010でDAO⇒ADOに変更しておりました。
そんなに複雑なプログラムではないのでADOに作り替えたほうが楽な気がしてきました。
昨日ご教授いただいた、AC2007以降の帳票フォームで画像表示も通常設定でできましたし。
とりあえずADOで進めてみたいと思います。
また何かありましたらよろしくお願いします。
Access(Office)をインストールするとき、Microsoft office 16.0 Access Database・・・ も同時にインストールされるはずなんですが、失敗しているのかもしれません。
Access(Office)をいったんアンインストールして、もう一度インストールしてみたら解決するかもしれません。
それでダメなら、Microsoft DAO 3.6 Object Liblary を参照設定してみてください。
DAOの古いバージョンですが、機能に差はないので問題なく使えるはずです。
hatena様
ご丁寧にありがとうございます。
ご連絡を待っている間、2010形式で作り替えてみたところ、
2000で作っていたDAOが機能しませんでした。
ネットで調べたところ、Win10 64ビットのためかDAOの参照設定が無効になっていたため
Microsoft office 16.0 Access Database・・・を参照設定するようにと記載がありましたのでチェックを入れたところ、「DLL読み込み時のエラーです」とエラーがでます。
これはどうしたらよろしいでしょうか?
今後のために教えていただきたくお願い致します。
詳細セクションにイメージコントロールを配置して、VBAでイメージコントロールのPictureプロパティに画像のパスを設定します。レコード毎に変更したいので、フォーマット時のイベントプロシージャに記述します。
下記のような感じのコードになります。(フィールド名などは適当ですので適宜変更してください。)
hatena様
お返事ありがとうございます。
アクセスのバージョンは2000です。
レポート印刷のイメージは画像のとおりです。
(資格3種類、1名×2種類の場合)
バージョン替えて作り替えるよりこのまま進めたいのですが
何か良い方法がありましたらアドバイスいただけましたら幸いです。
Accessのバージョンは何でしょうか。
AC2007以降なら、イメージコントロールのコントロールソースプロパティに画像パスを設定することで簡単に表示させることができます。
下記の「画像ファイル名のみ格納してイメージコントロールで表示する方法」の項目を参照ください。
帳票フォームでの説明になってますが、レポートでもまったく同じ方法で使用できます。
とりあえず週単位の場合の集計を作成する方向でいましょう。
それができたら、月単位に応用するのは簡単ですね。
すべての日付に対して、直近7日間での合計ということでしょうか。
例えば下記のような感じでしょうか。
表示させるとして、どこに、どのタイミングで表示さようと考えてますか。
入力フォームで 勤務開始時間 勤務終了時間 を入力したときに、規定時間をオーバーしていたらテキストボックスにそれを表示させる。
あるいは、入力完了後、レポートに一覧を表示させてそのときに規定時間オーバーを表示させるとか。
やろうとしていることを具体的かつ詳細に説明してもらえませんか。
まだ作成していませんが単純に
勤務id(主キー) 氏名 勤務日 勤務開始時間 勤務終了時間
適当です
週単位は7日の間に、という意味です
週単位というのが...
今年初めの場合、12/29(日)~1/4(土)を週単位とみなすのですか?
それとも、1/1(水)~~1/4(土)を週単位とみなすのですか?
こんにちは!
https://tsware.jp/tips/tips_522.htm
この形で保存して、
BASP21で送信するのがいいかと思います
hatena様このたびは有り難うございました。
お礼が遅れたことお詫び申し上げます。
具体的な回答には、下記の情報が必要です。
現状のテーブル構成(テーブル名、フィールド名、主キー設定)、サンプルデータ
SendObjectメソッドで送ることができます。
SendObject メソッド (Access) | Microsoft Docs
ただし Access2003 で使えたかどうかは記憶にないです。なにしろ17年前にリリースされたものなので。
セキュリティの面からも最新バージョンに置き換えるべきかと。
ありがとうございます
最初に質問させてもらった集計などはどのようにしたらよいですか?
また、後から必要になったのですが
10時間超えは週に2回まで、といったような計算もできますか?
>> 1のテーブル構成では、出庫詳細 と 入庫詳細 のフィールド名が、共に「 数量 」なのに
>> 5のSQL文では、出庫詳細 と 入庫詳細 のフィールド名が「 入庫数量 」及び「 出庫数量 」
また、製品テーブルの 製品型番 というフィールドは 投稿文に掲載されておらず、実際の有無が不明。
こういった情報の欠落や矛盾は、ご自身で修正いただくとして
ご希望の結果は 以下のような SQL で表現できるでしょう。
中間クエリを作らず、SQLを一筆書きで記述してますので
内容について少し解説しておきます。ポイントは3つ。
【 1 】
FROM句のサブクエリになっているユニオンクエリでは
製品・入荷先・出荷先 各テーブルの列は不要ですから、内部結合を必要最小限に留め、
抽出条件は、最初に評価されるクエリ( 一番内側 )に設定することで 処理を高速化できます。
【 2 】
SELECT句では IIF関数を使って条件分岐させることで
当月在庫と前月在庫を一度に計算します。
( 入庫・出庫に関しても同様 )
こうすると、クロス集計クエリを作る必要もなく、構造を単純化できます。
【 3 】
指定月のパラメータは
フォームのコントロールによる 日付の入力 を想定していますけど
入力をスキップすると、自動的に現在の月が設定されます。
入力するたびに変化するもの(計算値)なで、通常は必要な時に計算します。
クエリなら集計クエリ、フォームやレポートならSum関数、DSum関数などを使います。
クロス集計クエリを使ったクエリを基にするとそうなるようです
クロス集計クエリ(Q入出庫明細のクロス集計クエリ)にクエリ列見出しを設定しておくとレポートウィザードでもフィールド名が表示されるようになります
明けましておめでとうございます。
上記のクエリを基にレポートをウィザードで作成しようとしますとクエリのフィールド名が表示しません。どのように行えばレポートを作成できるのでしょうか?
mayu様
できました。
本当に感謝申し上げます。
本当にありがとうございました。
mayu様
できました。
本当に感謝申し上げます。
本当にありがとうございました。
SQL文中で使用する空白は
全角スペースを混在させず、全て半角スペースで統一して下さい。
また、WHERE句の条件を3つにした場合は
地域毎に抽出されたデータの行数 が 3 になっているかを
チェックする必要がありますから
HAVING句の絞り込み条件を Count(1) = 3 に変更しましょう。
無礼を承知でもう一度質問します。
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
GROUP BY 地域
HAVING Count(1) = 2
);
このSQL文に再度条件を加える場合です。
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
OR ( ID = 3 And 収入 >= 20 )
GROUP BY 地域
HAVING Count(1) = 2
);
この用にすると動くだろうと安直に思ってましたが、構文エラーになります。
単純に条件を重ねても動かないのはわかりました。
もう一度、ご教示お願いします。
地域⇒文字型
ID、収入⇒数値型
主キーは、別にあります。18桁の文字列です
よろしくお願いしあます。
ありがとうございました。できました。
出来ます。
ですが、、、提示いただいた表が
履歴を管理しているテーブルのデータだとしたら
{ 地域 + ID } で行がユニーク( 固有の値 )にならない
という可能性すらありますから
次回からは、情報を小出しにせず
主キーや インデックス、データ型 についての情報も含め、
要件を丁寧に説明なさることをおすすめします。
■ { 地域 + ID } で行がユニークになる場合
■ { 地域 + ID } で行がユニークにならない場合
hirotonさま
なるほど!
人間の視覚で物事を判断していました。
わかりやすく説明していただき ありがとうございました。
回答ありがとうございあます。
地域⇒グループ
ID(社員ID) 1(社員番号)
収入⇒収入(そのまま)
社員ID 1 (社歴が一番長い人) の収入が、100万円以上 かつ 社員ID 2(社歴が二番目に長い人)の収入が、60万円以上の地域を抽出したいのです。
大阪 1 120
大阪 2 80
大阪 3 20
そうすると、上のようになるはずなのです。
これは、サブクエリでは、できないのでしょうか?
通常、抽出は単一のレコードに対してそれが持つ各フィールドの値を条件にするものですよね
IDが1かつIDが2なんてレコードは存在しないので質問の内容を実現するのはめちゃめちゃ面倒です
ACCESSならDLOOKUPで[地域]が両方とも見つかる(NULLが1つもない)で出せば簡単に組めますが速度的な問題が起きそうな気もします
面倒なことをしようとしてるので、なぜそれをしたいかがあれば適切な答えも出ると思います
回答ありがとうございます。
IDが1で収入が100以上、かつ、IDが2で、収入が60以上と書きたいのです。
このSQL文ですと、全データが表示されます。
本当にお手数ですけど、ご教示おねがいします。
間の and を or に変更してください。
ありがとうございます。できました。
また、利用方法がわからず、別のところに書き込んでしまいました。申し訳ありません。
このSQL文に条件を追加したいのですが、
IDの2の収入が、60以上のときですが、下記にすると、何も表示されません。
In (select 地域 from テーブル1 where (ID=1 and 収入>=100) and (ID=2 and 収入>=60))
クエリのグリットに
In (select 地域 from テーブル1 where (ID=1 and 収入>=100))
In (select 地域 from テーブル1 where (ID=2 and 収入>=60))
一行加えると全部表示されます。
大阪 1 120
大阪 2 80
大阪 3 20
このような結果を抽出するにはどのように記載するのでしょうか?
お手数ですが、重ねて、ご教示をお願いします。
下記のようなことでしょうか。
わかりやすいと思うのでExcelを例に出しますが、Excelで表を作ろうと思うと1行目は項目にしたりしますよね?
そうすると1番目のデータは2行目となります。
表にタイトルを入れようと思うとさらに1行目ずらして1番目のデータは3行目となったりもします。
質問のフォームは帳票を横に表示するという特殊なことをしているので、設計上たまたま「元順+2がフォームの("txt" & i)に対応している」ということでしょう
なるほど、元から存在してるものに対し、使用することで名前を定義し、それに対してCloseしちゃってるのですね。
閉じずに放置することにします。
ありがとうございました。
hatenaさま
Me.畦取①.SetFocus
Me.畦取①.Form.Controls("txt" & (Me.元順+2)).SetFocus
で出来ました。
テキストボックスの「使用可能」が「はい」でできるとは気が付きませんでした。
Me.元順+2 で 畦取①.Form.Controls ”TXT” とイコールになるのが 疑問が残りましたが、とにかく思うように動いてくれます。
hatenaさま、hirotonさま 本当にありがとうございました。
遅くなりました。ようやく時間がとれたのでファイルを見てみました。
hirotonさんの最初の回答でほぼあっているのですが、
サブフォーム「畦取①」のすべてのテキストボックスの「使用可能」が「いいえ」になっているので、フォーカス移動できないためうまくいかないのだと思われます。
まずは「使用可能」を「はい」に変更してください。
そのうえで、サブフォームのソースが変更されるタイミングで、下記のコードを実行するようにしてみてください。
メインフォームの「元順」の位置のテキストボックスへ移動。
フィールドの最終列へ移動ならhirotonさんのコードで。
hatenaさま
ありがとうございます。
できるだけ簡略化したファイルを送らせていただきました。
ご無理を言いますが よろしくお願いいたします。