VBA ACCESSの質問です
はじめまして
最近になりVBAをはじめたものです。
下記の点について調べてもわからないことがあり非常に困っております。
フォーム上にファイル出力をするコマンドボタンがあります。
これをクリックすると拡張子がdatのファイルで出力されるのですが、
【テーブルの値を一部変更した際に、
更新内容を保存しないでファイル出力をする】
という処理のコードはどのようにすればよろしいでしょうか?
↓↓例えば↓↓
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT 列名 FROM テーブル名)", dbOpenDynaset
Do Until rs.EOF
rs.Edit
rs!列名 = Replace(rs!列名, "変換したい文字", "変換する文字")
rs.Update
Loop
rs.MoveNext
rs.Close
Set rs = Nothing
上記コードの6行目を
rs.update
にしてしまうと当然ながらテーブルが更新されてしまいます。
どのようにすれば、テーブルの更新内容を保存しないでファイル出力ができるのでしょうか
おわかりになる方がいらっしゃいましたら、ぜひ教えてください!
よろしくお願いいたします
No.2ベストアンサー
- 回答日時:
方法は2つあると思います。
1.変更前の情報を保存しておいてdatファイル出力後に元に戻す
2.出力用のテーブルを別に作成し、それをdatファイルとして出力する
質問には書かれていませんが、datファイルに出力方法は、テーブルをエクスポートすると思ってよろしいのでしょうか?
もし、そうならばdatファイル出力用のクエリーを作成する方法もありかと。そうすれば元テーブルの内容を書き換える必要はなくなりますよ。 あっ、これで3パターン目ですね(^^)
お返事ありがとうございます。
>datファイルに出力方法は、テーブルをエクスポートすると思ってよろしいのでしょうか?
はい テーブルをエクスポートします。
上記3パターン目の方法は気づきませんでした。
この方法で実行してみたいと思います。
無事解決できそうです。
ありがとうございました!!
No.4
- 回答日時:
補足:もしかして・・・。
[イミディエイト]
? FileWrite("C:\Temp\Test.dat", DBSelect("SELECT ID, '田中' AS 担当者 FROM tab1", ",", vbCRLf))
True
----------------------------------
Test.dat-メモ帳
----------------------------------
1,田中
2,田中
これは、先のSelect文の実行結果を"C:\Temp\Test.dat"に出力しメモ帳で開いた様子です。
もしかすると、一旦、テーブルを加工してからAccessの出力機能を使ってという手法でしょうか?
だとすると納得のいくことですが・・・。
私自身は、Access のそのような機能は使ったことがありません。
FileSystemObject、ADO等しか使ったことがありません。
ですから、ちょっとイメージ出来ませんでした。
そういう意味では<質問の主旨が判りません>は経験不足のなせるワザ。
少し、謝っておきます。
ただ、先のSELECT文をクエリ化すれば、それを出力するということは可能ではありませんか?
多分、可能な筈ですね。
INSERT INTO 文=>UPDATE文=>DELETE文
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これが、今の構想の完結形かと思い出しました。
であれば、構想の最適化が課題だと思います。
いつもお世話になっております。
>もしかすると、一旦、テーブルを加工してからAccessの出力機能を使ってという手法でしょうか?
今回はACCESSの出力機能を使っての手法です。
>ただ、先のSELECT文をクエリ化すれば、それを出力するということは可能ではありませんか?
おっしゃるとおりですね!!
ものすごく参考になりました。
どうもありがとうございます。
No.3
- 回答日時:
質問の主旨が判りません。
・テーブルの列を更新するのであれば列は更新されてしかるべき。
・で、それを阻止する方法はないと思います。
・で、なぜ、ワザワザ、したくもない列の更新するのでしょうか?
tab1:
ID__担当者
1___鈴木
2___中村
[イミディエイト]
? DBSelect("SELECT ID, '田中' AS 担当者 FROM tab1", ",", vbCRLf)
1,田中
2,田中
これは、イミディエイトウィンドウでのSELECT文の実行結果です。
便宜的に判りやすいようにDBSelect関数を使っていますが、これはAccessにはありません。
で、ともかく、このように、Select文で列[担当者]は生成できます。
で、「これではダメなのかなー」というのが先の回答です。
No.1
- 回答日時:
SELECT Replace(列名, "変換したい文字", "変換する文字") AS 列名 FROM テーブル名
と、すべき点を間違っているということでしょうか?
しかし、レコード数と列数に応じて出力データを作成するには相当な改良が必要ですね。
お返事ありがとうございます。
自分の説明が足らず、しかもわかりづらくて申し訳ございません。
私が質問したい内容は、
フォーム上にある【ファイル出力ボタン】が押された際に、コマンドボタンに設定されたクリックイベントでファイル出力の処理を行う前に、あるテーブルの担当者の名前をすべて自分の名前(田中)に変更するという処理が実行されるとします。
このときに、LOOP等を使った繰り返し処理の中で
rs.edit
rs!担当者 = "田中"
rs.update
のように記述して処理を行いますと、
担当者の名前が"田中"に更新されます。
この更新されたテーブルの情報がファイル出力されるときに、
出力ファイルの担当者の値は"田中"ですが、
データベース内のテーブルでは、担当者の名前を"田中"に
更新しないで、もとのままにしておきたいのです。
要するに、
ファイル出力ボタンを押しファイル出力を行う際に、ファイル出力ボタンが押されたときのクリックイベントでテーブルのある列の値を変換しますが、
出力ファイルを保存し、処理が終了したときにはテーブルの情報は何一つ更新しないでそのままに保ち、
出力ファイルには変更された内容を保存しておく
という処理を行いたいのですが、つまずいています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルコマンドの 2>&1 とはど...
-
printfだと出力されるのにfprin...
-
Acccess レポートをグループ別...
-
VC++でUTF-8のファイルを出力し...
-
テキストファイルに改行コード...
-
コマンド(例えばls)の出力結果...
-
fortranのtxtファイル出力書式...
-
テキストの各行に行番号をつけ...
-
VBA でメモ帳へ保存する際の保...
-
ストリーム 意味について。
-
拡張子.vsdをイラストレーター...
-
UNIX & Linux の標準出力で得た...
-
BitBltについて。
-
CreateProcess関数と実行後の戻...
-
pLaTeX の EPSファイル読み込み...
-
ファイル出力の場所を指定
-
ファイルの文字コードをUTF-8に...
-
アクセス>マクロ>テキスト変換
-
1行ずつではなくまとめてファイ...
-
サウンド出力のデバイスを選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
VC++でUTF-8のファイルを出力し...
-
サウンド出力のデバイスを選択...
-
ファイルの文字コードをUTF-8に...
-
VBA でメモ帳へ保存する際の保...
-
ファイル出力の場所を指定
-
ファイル形式またはファイル拡...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
AccessVBA複数レポート条件毎に...
-
二次元配列をクリップボードに...
-
UNIX & Linux の標準出力で得た...
-
フォルダにあるPDF情報の抽出(VBA)
-
C++ BuilderでPDF出力
-
VBSでEXCEL⇒CSV変換で日付の書...
-
fortranのtxtファイル出力書式...
-
CBool関数について VB6とVB.net...
-
ワードからPDF変換でグラフが表...
おすすめ情報