お世話になっております。
業務上Access2000を使ってDBの構築をすることになりましたが、ひとつわからないことが出てきましたのでよろしくお願いいたします。
それは、フォームからデータを入力する際に「更新」ボタンを押して初めてテーブルに落とすようにしたいのですが、その方法がわからず困っております。
Accessの「ボタン」でレコード操作で変更を保存ボタンを設置させて試しても「保存」ボタンを押す前からデータがテーブルに落ちてしまっているようです。
これを、「保存」ボタンを押して初めてテーブルにデータが落ちるVBAでのロジックの組み方をどなたかよろしくお願いいたしす。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
FORMのモジュールレベル変数にDAO.Workspaceを宣言します。
Dim mws As DAO.Workspace
FORMのオープン時に、
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set mws = DBEngine.CreateWorkspace("", "admin", "", dbUseJet)
Set db = mws.OpenDatabase(CurrentDb.Name)
Set rs = db.OpenRecordset("table_name", dbOpenDynaset)
Set Me.Recordset = rs
mws.BeginTrans
保存ボタンで、
mws.CommitTrans
大体は、こんなかんじでいいのでは?
No.4
- 回答日時:
Accessで入力画面を作成するのであれば、ワークテーブルを利用するのが
いいと思います。
mdbファイルを3つ作成し、
(1)プログラム用
(2)データベース用
(3)ワークテーブル用
とし、(1)のMDBファイルに、(2)と(3)のテーブルをリンクする形式にします。
(1)にフォームを新規作成し、(3)のテーブルを連結させます。
ただし、キー項目は、非連結にします。
(3)のテーブルと(2)のテーブルは同じ内容にして、
更新ボタンを押下したら、
ワークテーブルの内容をそのままデータベース用のテーブルに追加クエリー
のSQLを実行するのはどうでしょう。
キー項目を非連結にするのは、もし、既に入力しているデータがある場合に
キー項目の番号かIDを入力した時点で、内容を画面表示して、変更という
形式をとる為です。
この場合は、入力された番号かIDを検索して、データが存在しなければ
新規入力、データが存在すれば、訂正入力となると思います。
訂正入力の場合は、
dim SQL as string
Rem テーブルAはデータテーブル
Rem WテーブルAはワークテーブルとします。
sql = ""
sql = sql & "insert into "
sql = sql & "テーブルA "
sql = sql & "select * from WテーブルA;"
docmd.setwarnings false
docmd.runsql sql
docmd.setwarnings true
の追加クエリーを実行する前に
既に存在するデータを削除するSQL
sql = ""
sql = sql & "delete * from テーブルA "
sql = sql & "Where(キー=" & me![キー] & ")"
sql = sql & ";"
docmd.setwarnings false
docmd.runsql sql
docmd.setwarnings true
を実行する必要があります。
(キーが重複する為)
参考にしていただけるのであれば、
詳細のサンプルでもおくります。
ゴミならすみません!
No.3
- 回答日時:
たぶんですけど・・・
テーブルのフィールドにA、B、Cとあったとします。
ウィザードを使用しないでフォームを作成してテキストボックスA、B、C
を作ります。
ABCとも関連付け無しですから更新の際にABCを変数に代入して、Recordsetで
テーブルに値を返すのかな?
※後で検索・修正出来るようにユニークなキーを必ず持たせるようにします。
実は入力系を作るときに私は、この方法を取っております。
ただし、私は専門家でもない一般人で初心者です。当然これが良い方法なのか
は、わかりません。
ただし、注意する点として入力フォームには、新規入力・同文入力・修正入力
等など・・・大きく分けても処理を3つ作成しなければなりません。
入力量が多ければ多いほど上記の方法は重くなると思います。
>ではでは
No.2
- 回答日時:
単票型フォームの場合は、フォーム自体を非連結にしてフォーム上のコントロールの値をそれぞれテーブルに書き込んでいます。
OpenRecordsetでテーブルを直接編集しています。帳票型フォームの場合は、tarankoさんと同じく、入力用のワークテーブルを使用して更新ボタンを押した時に、初めてホンモノのテーブルに書き込むという方法です。修正の場合はちょっと厄介ですけどね。修正前のデータを修正用のデータとは別に持っておいて、そのデータを元に削除、修正用のデータ(入力用のフォームに連結しているテーブル)で編集後、ホンモノに書き込みします。この場合は同じデザインのテーブルが3つ(ホンモノ、入力用、退避用)必要です。
No.1
- 回答日時:
保存したいテーブル(Aとします)と全く同じテーブル(Bとします)
をもう一つ作ってください。
フォームから入力するとBのテーブルにデータが入力され、
更新ボタンを押すとAのテーブルに更新クエリーでデータを
更新するという方法ではいかがでしょうか。
Aのテーブルにデータを更新した後はBのテーブルの中身を
削除クエリーで削除する必要があります。
私はこの方法を取っています。
この回答への補足
早速のご回答ありがとうございます。
テーブルを2つに増やしてする方法もあるのですね(^^
教えていただいた方法で試してみますが、なんせDBのテーブル数が多いもので・・・
できましたらテーブルの数を増やさないでする方法はないのでしょうか?
わがまま言って申し訳ございませんm(_ _)m
よろしくお願いいたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
クエリのデータをテーブルに入れたい
Access(アクセス)
-
-
4
アクセスVBAのMe!と[ ]
Access(アクセス)
-
5
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
6
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
7
accessの自動更新処理をできないようにするにはどうすれば良いですか?
その他(データベース)
-
8
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
9
フォームで入力しても反映されない
Access(アクセス)
-
10
Access を×ボタンで閉じる時、レコード保存したくない。
Visual Basic(VBA)
-
11
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
12
このオブジェクトに値を代入することはできません
その他(データベース)
-
13
Accessでレコードの保存をせずにフォームを閉じたい
Access(アクセス)
-
14
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
15
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
19
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
20
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
データ無し時は空白行にしたい...
-
ACCESSのVBAにてExcelに行...
-
2つのテーブルをLIKE演算子のよ...
-
SQLで、Join句で結合したテ...
-
ExcelのMatch関数のようなもの...
-
同一テーブル内での比較(最新...
-
ADO+ODBCでテーブルに接続する...
-
結合したテーブルをSUMしたい
-
重複データの一方を削除するSQL...
-
三科目合計点のクラス別平均点...
-
テーブルデータの上書きをした...
-
行と列の入れ替え検索(行は可...
-
在庫管理のデータベース
-
ExcelのVLOOKUP関数の動作をMyS...
-
異なるテーブルの値を比較テー...
-
複数のテーブルからデータを取...
-
「都道府県の面積の大きい順に...
-
SQLローダーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
結合したテーブルをSUMしたい
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
データ無し時は空白行にしたい...
-
Accessの構成をコピーしたい
-
ACCESSのVBAにてExcelに行...
-
2つのテーブルをLIKE演算子のよ...
-
SQLサーバに対するSQL文で抽出...
-
ExcelのVLOOKUP関数の動作をMyS...
-
PRIMARY KEYのコピー
-
同一テーブル内での比較(最新...
-
ExcelのMatch関数のようなもの...
-
ADO+ODBCでテーブルに接続する...
-
Access 別のDBに対してDlookup...
-
改行を含んだデータのインポート
-
複数のテーブルからデータを取...
-
ACCESS クエリーでソートの不具合
-
副問合せを使わずにUNIONと同様...
おすすめ情報