電子書籍の厳選無料作品が豊富!

受注DBを作成しています。
テーブル1:受注テーブル
(受注日,受注訂正日,得意先名・・)

テーブル2:受注テーブル履歴テーブル
    (受注日,受注訂正日,得意先名・・)

フォーム :受注入力フォーム

があります。
受注を受けたら受注入力フォームへ入力します。
受注が変更になった場合、受注訂正日に入力後、
最初に入力したデータを受注テーブル履歴テーブル
へ自動的にバックアップをとりたいと考えています。

更新後処理で、「値の代入」で処理するのでしょうか?イベントプロシージャーで入力するのでしょうか?


バックアップは、初回受注入力フォームへ入力した
データをすべてバックアップしておきたいと
考えております。

よろしくお願いいたします。

A 回答 (4件)

>受注訂正日に値があれば代入しておいた最初のレコードをテーブル2へ保存する記述を追加


別テーブルへの保存はADOを使ってやります。

受注日・受注訂正日・得意先名に該当する非連結のコントロールがText1・Text2・Text3とすると

Dim rs As New ADODB.Recordset

rs.Open "テーブル2", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rs
.AddNew
![受注日] = Me![Text1]
![受注訂正日] = Me![Text2]
![得意先名] = Me![Text3]
.Update
End With
rs.Close
Set rs = Nothing
これで保存できます。
これを保存ボタンのイベントに追加すればテーブル2に保存できます。
後は受注訂正日に値がないかあるかでIf IsNull([受注訂正日]) Then で処理を分岐させその中に上記のテーブル2への保存を組み込めば良いと思います。
    • good
    • 0
この回答へのお礼

何度も丁寧にありがとうございました!!

できました。
最初は、受注訂正日の更新後処理に上記を書こうと
思っていましたが、保存ボタンの方が確かに合理的
と思い上記通りにさせていただきました。

こうしたい!と思ってから解決するまで
VBAは難しいですが、楽しさもちょびっとわかりつつ
ある気がしています。

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

お礼日時:2006/01/20 14:18

>受注が変更になった場合、受注訂正日に入力後最初に入力したデータを受注テーブル履歴テーブルへ自動的にバックアップをとりたい



受注訂正日の更新後処理でテーブル2へ書き込むのは入力処理などレスポンスも合わせてイマイチだと思いますが。
受注訂正日の更新後処理で非連結のコントロールでも用意しておいて受注訂正日に値が入力されたら最初のデータを各フィールド用の非連結コントロールに代入しておいて訂正が終わり新しいレコードをテーブル1に保存する際に受注訂正日に値があれば非連結の各コントロールに代入しておいた最初のレコードをテーブル2へ保存するようにすれば良いと思います。(非連結のコントロールは非可視にしておけば見えないし。)
これはテーブル1へのレコードの保存のプロシージャに受注訂正日に値があれば代入しておいた最初のレコードをテーブル2へ保存する記述を追加するだけで済みます。

#2の方がテーブル2に枝番が入るように思うとありますが受注のレコードなので受注番号等のキーがあると思いますがそのキーに枝番を付けて保存した方が良いという事ですよね。まァしなくてもオートナンバー型のフィールドを1つ追加しておけば済む問題なのでどちらでもかまわないと思います。枝番に+1した枝番を振るロジック組むよりオートナンバー型フィールドを追加する方が簡単ですけど。ただ#2の方のいうように同一日に複数の訂正があった場合の判定に必要ではあります。
    • good
    • 0
この回答へのお礼

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

非連結コントロールに値を代入するのはできました。

「テーブル1へのレコードの保存のプロシージャに受注訂正日に値があれば代入しておいた最初のレコードをテーブル2へ保存する記述を追加」
とありましたが、ちょっとこの記述がわかりません・・。もしよければ教えていただけますでしょうか・・。

お礼日時:2006/01/19 10:27

追記で要らぬお世話かもしれませんが。



>データをすべてバックアップしておきたいと
テーブル2に枝番(SEQ)が入るように思います。
同一のデータを、同じ日に2回訂正したら
履歴データが2件できますよね?
そしたら
どちらが先に編集したデータか不明になりませんでしょうか?
どちらかといえば、
同一テーブルでKEY(受注日、受注訂正日、枝番)にして
管理したほうがわかりやすいと思いますが。。。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!

確かに、同じ日の訂正があったらどっちが先に
訂正したかわからなくなりますね。

バックアップテーブルにオートNo.のキーを設定して
逃げました・・。

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

お礼日時:2006/01/20 14:24

ACCESSでよろしいでしょうか?



新規注文があった際、データは受注入力フォームへ入力し受注テーブルに格納される。 
注文に変更があった際は、受注テーブルにあるデータ自体を変更する。 同時に変更履歴を受注テーブルに履歴を記録する。 
このような前提で注文の変更をどのように行うか、という問題でしたら
1.非連結フォームを作成し、該当データを表示させる。
2.変更内容を入力し、コマンドボタンにて変更処理を行う。 この際に、更新クエリを一つと追加クエリを一つ動かせば、ご希望の動きはすると思います。

受注変更管理をされたいのなら取り消しフラッグを作って新規に受注を一旦取り消し、新規で受注を入力したほうが良いような気がするのですが。 素人の考えることで、業務に当てはまらなかったら申し訳ありません。
    • good
    • 0
この回答へのお礼

お礼がおそくなりすみませんでした。

ご回答ありがとうございました!
非連結フォームを作って該当データを表示させ、
フォーム保存ボタンで非連結フォームを履歴テーブル
へと格納する方法にしました。

いろいろなやり方があるので、勉強あるのみ、ですね!!
ありがとうございました。

お礼日時:2006/01/20 14:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!