履歴を取るのに「更新者=使用者」これは、currentuserですよね!
「テーブル全体を履歴に残す」バージョンでテーブルの更新者の規定値にcurrentuser()と入れればできる!と思ったのですが、テーブルではその式は利用できませんでした。モジュールに何か書き込まないとできないのでしょうか?
現在のモジュールは以下の通りです。
Sub History_a()
Dim Ctr As Control
Dim strSQL As String
For Each Ctr In Me.Controls
If Ctr.ControlType = 109 Then
If Ctr.OldValue <> Ctr.Value Then
strSQL = "insert into あ履歴 select * FROM あ " & _
"where 顧客コード = " & Me.顧客コード
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Exit Sub
End If
End If
Next Ctr
End Sub
ここで作成した使用者を顧客コードをキーに最終更新日の更新者を取り出すという、ややこしくてわけがわからなくなりそうなことも可能でしょうか?
No.1
- 回答日時:
「あ履歴」テーブルに「更新者(テキスト型)」を作成します。
で、以下に変更
strSQL = "insert into あ履歴 select * '" & CurrentUser & "' as 更新者 FROM あ " & _
"where 顧客コード = " & Me.顧客コード
でOK(^ ^)
そんでもって、
>ここで作成した使用者を顧客コードをキーに最終更新日の更新者を取り出すとい
>う、ややこしくてわけがわからなくなりそうなことも可能でしょうか?
これは本当にDLookUpで出来るでしょう(最終更新日を先に抽出していると仮定して)。顧客IDと最終更新日でユニークになるはずですので・・・。
この回答への補足
watapo3さん、変更をかけてみました(T_T)しかし、
DoCmd.RunSQL strSQL
で「ダメ」と言われてしまいます。なぜ~??でしょうか?
エラーメッセージは、実行時エラー3075
クエリ式'*"'admin"の構文エラー:演算子がありません。
でした。
よろしくお願い申し上げますm(__)m
No.2
- 回答日時:
ははは、またポカをしてしまった(もう笑うしかない)
strSQL = "insert into あ履歴 select * , '" & CurrentUser & "' as 更新者 FROM あ " & _
"where 顧客コード = " & Me.顧客コード
「*」と「'」の間に「,」を入れるのを忘れてしまったみたい(単純なタイプミス・・・・別に前後の半角スペースはあっても無くても結構です。)
申し訳ありませんでした。m(_ _)m
この回答への補足
watapo3さーん!
(T_T)(*_*)(@_@)(T_T)
>これは本当にDLookUpで出来るでしょう(最終更新日を先に抽出していると仮定して)。顧客IDと最終更新日でユニークになるはずですので・・・。
「最終更新日を先に抽出していると仮定して」というのは、どこを見たら確認できるのでしょうか????
最終更新者を表すテキストボックスを挿入し、
=DLookUp("更新者","履歴","顧客コード=" & [顧客コード])
と、書いたのですが、最初に見つけたものを拾ってきてしまいます(T_T)
これって、最終更新日を先に抽出していないということですか?
以前言われたように、履歴IDを作成する必要がありますでしょうか?
ひぇ~。watapo3さん(*_*)Please Help me!m(__)m
あれから、数時間・・・。思い当たる式を書いてみました。。
とにかく思い当たる式を色々と・・・、でも、できなかった・・・(T_T)・・・
後、履歴IDを取る方法を試してみました。履歴テーブルに「履歴ID」というテーブルを作成し、フォームに挿入したテキストのコントロールに、
=DLookUp("更新者","履歴","顧客コード=" & [顧客コード] & " AND 履歴ID = " & Max([履歴ID]))
と書いてみたものの、これもダメだと・・・・。
この時に挿入したテキストのコントロール表記を削除して実行すると、今度は!履歴を取ることができなくなる・・・。テキストに履歴IDを追加したのが原因と言うことは判明したものの、これでは・・・履歴IDというテーブルを挿入できない(T_T)ほにゃ~(*_*)
ちなみに現在、watapo3さんから教わった、変更されたところだけの履歴を取る方法と、変更されたときに全てのテーブルの履歴を取る方法、両方とも使用しておりますm(__)m
何とかなりますか?
No.3
- 回答日時:
うぅ~む、自力での解決は無理でしたか・・・(^ ^;
以前、最新の更新日を得るDLookUpは成功したと思いますので、
そのコントロールの値を使用します。(コントロール名「最新更新日」と仮定)
=DLookUp("更新者","履歴","顧客コード=" & [顧客コード] & _
" AND 更新日時 = #" & [最新更新日] & "#"
補足:
日付型は「#」で囲んでやる必要があります。
では、頑張って下さい。m(_ _)m・・・ちなみに更新者名の記録は成功したのだろうか(?_?)
この回答への補足
自力で頑張ろう!!と頑張ってはいるものの・・・。
>ちなみに更新者名の記録は成功したのだろうか(?_?)
これは成功しております(^o^)丿
変更箇所のみの履歴をとるプロシージャーは、
strSQL = "insert into 履歴 values('担当者情報','" & Me.顧客コード & _
"','" & Ctr.ControlSource & "','" & Ctr.OldValue & "',#" & Now() & "#,'" & CurrentUser() & "')"
テーブル全体の履歴を取るプロシージャーは、
strSQL = "insert into DM履歴 select * , '" & CurrentUser & "' as 更新者 FROM DM情報 '" & _
"where 顧客コード = " & Me.顧客コード
になっておりますm(__)m
ちなみに、=DLoolkUp("更新者","履歴","履歴ID=" & DMax("履歴ID","履歴"))
で更新者はもってこれたものの・・・、履歴が取れなくなってしまいましたm(__)m
No.4
- 回答日時:
ちょっと紛らわしい表記があった為修正です。
>以前、最新の更新日を得るDLookUpは成功したと思いますので、
↑
DMaxを使用して抽出したんでしたね!
>=DLookUp("更新者","履歴","顧客コード=" & [顧客コード] & _
" AND 更新日時 = #" & [最新更新日] & "#"
↑
更新日というフィールド名で作成していると思いますので・・・以下に変更
=DLookUp("更新者","履歴","顧客コード=" & [顧客コード] & _
" AND 更新日 = #" & [最新更新日] & "#"
以上です。m(_ _)m
この回答への補足
ほにゃ~!できませーん(*_*)エラーなのです。
挿入したテキストボックスのコントロールソースにwatapo3さんの教えてくれた式をコピーし、名前を「最新更新日」をしたのに・・・。
そうそう、急遽「顧客コード」が数値型からテキスト型に変更になったため、「'」の入力を必要とするんですよね!
この式だと、下記のようになるんですよね?これでだめでした。
=DLookUp("更新者","履歴","顧客コード='" & [顧客コード] & _
"' AND 更新日 = #" & [最新更新日] & "#"
(ちなみに顧客コードのテキスト型に伴う履歴の書き出し等にエラーがでたので、「']を導入して今までの所(今回の以外)は、無事解決しました!
どうも、AND以降の式を認識していないようです。
上記の式を記入すると、「AND」は、「and」になってしまいます。(コピーで貼り付けたら大文字で入力できたのですが、やはりエラーです。)
認識されていれば、通常「and」は、「And」とaが大文字になりますよね??
何か、もっと基本的なところで私が間違いをしているのでしょうか?
現在、テキストに「履歴ID」←(オートナンバー)を追加して、やってみているのですが、ちゃんと最新更新者名を取ってきました!ただし、問題は、履歴が取れなくなってしまったことなのです。
変更を行うと、「実行時エラー3464、抽出条件でデータ型が一致しません」とでます。デバックを選ぶと、「履歴ID」の書き出しのところ?がエラー?みたい?
DoCmd.RunSQL strSQL
ここが、黄色くなってました。
プロシージャーのところで、
strSQL = "insert into 履歴 values('担当者情報','" & Me.顧客コード & _
"','" & Ctr.ControlSource & "','" & Ctr.OldValue & "',#" & Now() & "#,'" & currentuser() & "','履歴ID')"としています。
コントロールソースのところで、
=DLookUp("更新者","履歴","履歴ID=" & DMax("履歴ID","履歴"))としています。
プロシージャーの履歴IDの指定の仕方が違っているのだと思います。(T_T)が、オートナンバー型のデータに対してどのような入力をすれば良いのかわかりません。
(オートナンバーは使用できるのでしょうか?)
教えてください。よろしくお願い申し上げます。
No.5
- 回答日時:
確認はしていないのですが、取り急ぎ・・・
=DLookUp("更新者","履歴","((顧客コード='" & [顧客コード] & _
"') AND (更新日 = #" & [最新更新日] & "#))"
でどうですか?
オートナンバー型を使用する場合のSQLは後ほど・・・
m(__)m できました(^o^)丿
本当にいろいろありがとうございました。(T_T)
これで、やっと安らかな眠りにつくことができます(^.^)
watapo3さんに鍛えられて?少しは成長したかな~??(~_~;)
とっても、とっても助かりましたm(__)m
ありがとうございましたm(__)m
お礼として、1万pointぐらい差し上げたいところですが、何分手持ちが20pointしかないもので・・・・、申し訳ありませんm(__)m
No.6ベストアンサー
- 回答日時:
>strSQL = "insert into 履歴 values('担当者情報','" & Me.顧客コード & _
"','" & Ctr.ControlSource & "','" & Ctr.OldValue & "',#" & Now() & "#,'" & currentuser() & "','履歴ID')"としています。
上記「履歴ID」がオートナンバー型に相当すると思いますが、オートナンバー型は文字通り自動的に与えられます。
とって、履歴IDを指定する必要はありません。
strSQL = "insert into 履歴 values('担当者情報','" & Me.顧客コード & _
"','" & Ctr.ControlSource & "','" & Ctr.OldValue & "',#" & Now() & "#,'" & currentuser() & "')"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスで新規登録する場合
-
ExcellVBAのFindに関する質問で...
-
Access フォームのデータがテー...
-
Access VBAでクエリーのレコー...
-
データベースの1要素に複数デー...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessでテーブル名やクエリ名...
-
変数が選択リストにありません
-
必須入力項目と入力必須項目
-
ACCESSのクエリで集計で、先頭...
-
INSERT INTO ステートメントに...
-
Accessのフィールド数が255しか...
-
ACCESSでテーブルのチェックを...
-
セルの右クリックで出る項目を...
-
VBAで複数の数式セルを最終行ま...
-
Accessでテーブルの値をテキス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access フォームのデータがテー...
-
Access IF文でテーブルに存在し...
-
Access VBAでクエリーのレコー...
-
ワードでの単純作業の効率化に...
-
ACCESS で マクロの中でフィ...
-
データベースの1要素に複数デー...
-
顧客IDを入力すると顧客名や住...
-
Accessで名寄せグループの関係...
-
別のDBからテーブルをコピーす...
-
シングルクォーテーションとダ...
-
Access 縦(行)のデータを横(列)...
-
Accessデータベースで行と列を...
-
ワードで保存するファイル名の...
-
Access 既に開いているフォー...
-
ADOでレコードを閉じるタイミン...
-
Access クロス集計クエリについて
-
ACCESS2003 Aアクロバットを介...
-
Access レコードロックについて...
-
Access2000 単票フォーム上の...
-
ファイルメーカーの集計につい...
おすすめ情報