OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ACCESS2000でとっても困っています。履歴がたくさんとれてしまうのです。

  • すぐに回答を!
  • 質問No.190646
  • 閲覧数42
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 38% (15/39)

アクセス初心者です。とても困っています。
困っているのは、履歴は書き出すのですが、複数書き出してしまうということなのです。

詳しく申し上げますと、
フォーム「テレ_sb(table:テレ)」に変更があった場合に、履歴「SF_テレ履歴(table:テレ履歴)」を書き出すことを行っています。
顧客ID毎に履歴を取るようにしているのですが、「A」ユーザーに変更を行うと、「A」ユーザーの履歴を取ってくる。ここまでは良いのですが、フォームのテレ_sb(table:テレ)に情報が入っているもの全てについて履歴を取ってしまうのです。

つまり、table:テレ(フォーム:テレ_sb)に10ユーザーの情報が入っているとすると、「A」について変更を行うと、10ユーザー全ての履歴を取ってきてしまうのです。

<<フォーム>>メイン、テレ_sb(table:テレ)、SF_テレ履歴(table:テレ履歴)があります。

テレ_sb(table:テレ)のイベントプロシージャーには以下のように書いております。上記の点、防ぐ方法をどなたかご教授ください。よろしくお願い申し上げます。

Sub History_tel()

Dim Ctr As Control
Dim strSQL As String

For Each Ctr In Me.Controls
If ((Ctr.ControlType = acTextBox) Or (Ctr.ControlType = acComboBox)) Then
If Ctr.OldValue <> Ctr.Value Then
strSQL = "insert into テレ履歴 select * , '" & CurrentUser & "' as 更新者 FROM テレ '" & _
"where 顧客コード = " & Me.顧客コード
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Exit Sub
End If
End If
Next Ctr
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
History_tel
End Sub

Private Sub Form_AfterUpdate()
Forms("メイン").Form.SF_テレ履歴.Requery
End Sub
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 56% (59/104)

こんにちは

> 「A」について変更を行うと、10ユーザー全ての履歴を取ってきてしまうのです。
顧客の指定が抜けているものと思われます
下記SQL文に置き換えて使用してみてください
'~~~~~~~~~~~~~~~~~~~~
strSQL = "INSERT INTO テレ_履歴 ( 更新者 ) " & _
"SELECT テレ.*, '" & CurrentUser & "' AS 更新者 " & _
"From テレ " & _
"WHERE (((テレ.顧客コード)=" & Me.[顧客コード].Value & "));"
'~~~~~~~~~~~~~~~~~~~~

フォーム構造ですが、メインフォーム「テレ_sb」の中にサブフォーム「SF_テレ履歴」があるんですよね?
でしたら、サブフォームのプロパティの中に「リンク子フィールド」と「リンク親フィールド」があると思います。
その値が”顧客コード”になっているのが望ましいと思います
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル7

ベストアンサー率 50% (9/18)

おつかれさまです 何点か気付いた点を記します >strSQL = "insert into テレ履歴 select * , '" & CurrentUser & "' as 更新者 FROM テレ '" & _ >"where 顧客コード = " & Me.顧客 ...続きを読む
おつかれさまです
何点か気付いた点を記します

>strSQL = "insert into テレ履歴 select * , '" & CurrentUser & "' as 更新者 FROM テレ '" & _
>"where 顧客コード = " & Me.顧客コード
このSQL文ですが、"~ FROM テレ '"の"テレ"の後ろに書いてある"'"はいりません

>つまり、table:テレ(フォーム:テレ_sb)に10ユーザーの情報が入っているとすると、「A」について変更を行うと、10ユーザー全ての履歴を取ってきてしまうのです。
フォーム構造ですが、メインフォームとサブフォームは関連付けされているのでしょうか?
今回の掲題だと「顧客コード」にて、関連付けされていることが望ましいですね

また考えれることが、「テレ」テーブルの内容をすべて「テレ履歴」テーブルに書き込むということが発生していると思われます。
SQL文作成後にブレイクをはって、SQL文の内容をイミディエイトウィンドウにて確認してみるのが、宜しいかと思います。
(1)"DoCmd.SetWarnings False"にてブレイクをはる
(2)イミディエイトウィンドウにて、「print strsql」とかきENTER
(3)表示されたSQL文をクエリのSQLウィンドウにコピーし、内容が正しく実行するか確認する

ちなみに正常動作の確認は行いました。
問題なく動作すると思いますよ(^^)/
補足コメント
cas-jp

お礼率 38% (15/39)

お答え有難うございますm(__)m
残念ながら、だめでした。(T_T)
SQL文の"~ FROM テレ '"の"テレ"の後ろに書いてある"'"を削除すると、「パラメータの入力」を聞いてきます。(1)-(3)の作業は、初めてしてみました。何とか作業はできたのですが、こちらでも同様でした。
「フォーム構造のメインフォームとサブフォームは関連付け」についてですが、これは、リレーションシップのことでしょうか?(メインフォームの元となるテーブル「元データ」とサブフォームの元となるテーブル「テレ」は、顧客コードでリレーションシップしてますが・・・、それ以外のことならばできていないと思います。)
でも、なぜなんでしょう(T_T)あーー助けてください。m(__)m何か他に確認する所はないでしょうか?
投稿日時 - 2002-01-10 21:44:19

このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ