- ベストアンサー
レコードを最新の状態に更新したいのですが・・・
windows2000/access2000を使用してます。 全てのテーブルを最新の状態に更新させることって出来ますか? 住所コード・営業コード・受注書・入金台帳・登録台帳の5つのテーブルがあります。 受注書は住所コードから住所を、営業コードからは営業コードを。 入金台帳と登録台帳は受注書から注番でデーターを引っ張ってきてます。 それぞれのレコードが変更した場合、レコードセットで最新の状態に更新したいのですが・・・レコードセットで最新状態に更新する事って出来るのでしょうか? もし、出来るのであれば設定方法を詳しく教えて頂けたらと思います。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
状況やつながりが複雑になると回答しづらいので、住所コードテーブルと受注書だけで回答しますね。 質問のような状況にならないため「私が作るとしたらこうする」ということで説明します。 ----------------------------------------------- テーブル【tbl01住所コード】 m01住所コード:主キー:テキスト型(まぁ数値型でもいいでしょ) m01住所:テキスト型 ----------------------------------------------- テーブル【tbl02受注書】 m02受注番号:主キー:テキスト型(まぁ数値型でもいいでしょ) m02顧客名 m02住所コード ※ 受注書のその他のフィールドはとりあえずなしで説明します ----------------------------------------------- こんな状態でテーブルを定義します。 そしたら住所を3件ばかり入力しておきましょうか。 住所コード, 住所 001, 東京都ほげ区 002, 東京都hoge区 003, 東京都ホゲ区 次に「受注書を表示するフォーム」を作成するわけですが、その前にクエリーを1つ作成します。 このクエリーは受注書を入力・表示するためのレコードソースになります。 ----------------------------------------------- クエリー【qry01受注書】 「SELECT tbl02受注書.m02受注番号, tbl02受注書.m02顧客名, tbl02受注書.m02住所コード, tbl01住所コード.m01住所 FROM tbl01住所コード RIGHT JOIN tbl02受注書 ON tbl01住所コード.m01住所コード = tbl02受注書.m02住所コード;」 ※ これをクエリーのSQLビューに貼り付けてください ----------------------------------------------- 単票フォームを作成します。 ----------------------------------------------- フォーム【frm01受注書】 [新規作成]-[オートフォーム:単票形式]で、qry01受注書を基に作成します。 ----------------------------------------------- 実際に作ってみればわかると思いますが、単純にはこれだけです。 frm01受注書を開き、新規レコードで[受注番号]と[顧客名]を適当に入力します。 [住所コード]に「001」と入力したあとEnterやTABを押したり他のテキストボックスにカーソルを移動させると[住所]テキストボックスに住所の文字列が入力されます。 テキストボックス内の住所は実際には[tbl02受注書]の[m02住所コード]に入力されたコードを基に[tbl01住所コード]の該当する[m01住所コード]に対応する[m01住所]の文字列を動的に「表示」しているに過ぎません。 ですので、[tbl01住所コード]でコードに対する住所が変更されたとしても、このクエリーで開いたレコードセットでは「最新の情報」を表示することが出来ます。 ※ フォーム上の[住所]テキストボックスを直接編集されると困るので、テキストボックスのプロパティで「使用可能」を「いいえ」、「編集ロック」を「はい」にしておいてください。 営業コードなるテーブルにはホントに営業コードというフィールドしかないのですか? そんでもって、コンボボックスなどを使って受注書テーブルに値を転記してると? いずれにせよリレーションの勉強をしたほうが良いでしょうね。 関連するテーブルをリンクさせたいフィールドで結び付け、「参照整合性」の「連鎖更新」や「連鎖削除」をオンにする、と。 ここらへんじゃないかと思います。 この回答じたい、全部外しちゃってる可能性もありますが・・・ そのときはご容赦ください。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 UpDateメソッドなどで内容を更新すると、テーブルは更新されますが、現在参照しているレコードセットの内容は更新されません。 その場合は、Requeryメソッドで更新します。 または、いったんそのレコードセットを破棄して、新しく参照し直します。 Requeryメソッドで更新すると、カレントレコードが先頭になってしまいます。 詳細は、Requeryのヘルプを参照して下さい。
- ssssssssss
- ベストアンサー率23% (24/103)
こんにちわ。ssssssです。 状況が細かくわかりませんが、アクセスだけを使用している場合は、テーブル、あるいはクエリ表示時にツールバーのレコード→更新でいけると思います。 VBからADOを使って表示させている場合は新しいRecordsetを作って再びSQLを発行しないと無理だと思います。 こんなんでよろしいでしょうか?
補足
アドバイス有難うございます。 アクセスだけを使用してるのですが、ツールバーのレコード→更新をクリックしたのですが更新出来ませんでした。 営業コードのテーブルで、営業コード000904・名前が太郎で保存してて、名前だけを花子に変更した場合、受注書の000904の太郎で保存されていたレコードは太郎のままで花子には変わってなかったのです。 何か他に原因があるのでしょうか? 宜しくお願い致します。