Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Access 2010)
トランザクションの書き方の件
投稿日時: 17/04/20 11:36:32
投稿者: yrp05001

お世話になります。
 
現在
ACCESS2010
とSQLSERVER2008R2
を利用してシステム構築をしております。
 
SQLSERVERとはODBCドライバーを経由してリンクしております。
 
そこで以下のような処理を実現したいと思っております。
 
利用するテーブル
SQLSERVERテーブル1
ACCESSテーブル2
 
 
SQLSERVERテーブル1のテーブル構成
伝票管理番号 nvarchar12
利用日時   datetime
ID      int (オートナンバー)
 
ACCESSテーブル2
伝票管理番号 テキスト型12バイト
受注日    日付時刻型
発注内容   テキスト型50バイト
 
 
フォームのボタンを押すと以下のように処理されるようにしたい
 
SQLSERVERテーブル1にある
利用日時の値がないもの一番若い伝票管理番号を
ACCESSテーブル2にある
伝票管理番号 テキスト型12バイトのレコードにインサートし
SQLSERVERテーブル1にある
利用日時の項目にインサートした日時をセットする
という処理を実行したいのです。
 
上記をトランザクションで実行するにはどのようにすればよいのでしょうか
 
DAO
ADO
どちらでも構いません
 
お手数をおかけいたしますが宜しくお願い申しあげます。
 
 
例;
SQLSERVERテーブル1
伝票管理番号  利用日時        ID
12340000    2017/04/20 11:29:31 1
12340001    2017/04/20 15:29:31 2
12340002                3
12340003                4
 
 
フォーム1のコマンドボタン1
を押すと
ACCESSテーブル2にある
伝票管理番号カラムに
12340002
がインサートされ
伝票管理番号 12340002
受注日    
発注内容   
 
SQLSERVERテーブル1にインサートされた時間
2017/04/20 15:50:01

利用した伝票管理番号のレコードにある利用日時に値が更新される
 
 
伝票管理番号  利用日時        ID
12340000    2017/04/20 11:29:31 1
12340001    2017/04/20 15:29:31 2
12340002    2017/04/20 15:50:01 3
12340003                4
 
という処理をトランザクションで対応したいと思っております。
 
大変お手数ですがアドバイスの程宜しくお願い申し上げます。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

回答
投稿日時: 17/04/20 11:58:03
投稿者: Suzu

こんにちは。
 
ただの丸投げにしか見えません。
 
どこまでやって、こんなエラーが発生する。問題がある。と言う様な進め方をしませんか。

回答
投稿日時: 17/04/20 19:42:46
投稿者: i-brown

ADOなら
https://msdn.microsoft.com/ja-jp/library/cc364105.aspx
に解説があります。
 
通常処理は
BeginTransとCommitTransで囲み、
OnError Gotoで例外発生時にRollBackTransすれば良さそうです。
 
ODBCリンクテーブルでもちゃんと動作するのか、テストは忘れずにした方が良いでしょう。

トピックに返信