お世話になります。

只今ExecuteSQLという関数を使って
INSERT文を発行しています。

ですが、この処理の後、ロールバックを行なって処理を取り消したいのですが、
ロールバックもうまく行かず、どうやらExecuteSQLを通った時に
既にINSERT文の内容がコミットされてしまっているのではないかと考えているのですが、どなたかご存知の方、アドバイスをお願い致します。

…MSDN見てもよくわからなかったので…

また、ロールバックするにはなにか別の方法がないかなどお聞かせ頂けたら幸いです。

A 回答 (1件)

ミドルウェア(ADO、DAOなど)を何を使ってられるのか書いていないので、はっきりは分かりませんが、トランザクションのはじめに、「Begin Trans」、コミットするときに「Commit Trans」、ロールバックするときには「Rollback Trans」と記載すれば大丈夫だと思います。


このあたりをキーワードにして、MSDN(DAOならDAOのヘルプ)を探していただければ、詳細があると思います。
    • good
    • 0
この回答へのお礼

Commit TransとRollback Transを書いたらうまくいくようになりました。

わかりやすく教えて頂いてありがとうございました。

お礼日時:2002/04/02 09:11

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【ビジネスで使う「コミット」の意味】

顧客とのコミット、チームメンバーとのコミット、 事業戦略のコミット
上記のように使うようですが、意味がわかりません。
ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。よろしくお願いいたします。

Aベストアンサー

コミットメントに思わず反応してしまいました。

"commitment"のコミットと私も考えます。
JIS Q9000:2000解説 によりますと、
誓約、約束、公約、確約、義務、責務、責任、関与、かかわり合い、参加、傾倒、深入りなどいずれの言葉においてもニュアンスを伝えきれないので、"commitment"はコミットメントと訳したとのことです。
コミットを日本語(漢語?)に訳した段階で微妙に異なるニュアンスになるようです。

正確さより、日本語(漢語?)訳にすることを優先するなら、職業柄「決意表明」に1票。

QMSDNのコレクションがありません。MSDNを再インストールしてください。

現在VisualStudio6を使っております。
VB6を使ってエラーが発生した時に、「OK」「ヘルプ」でヘルプを押すと、
MSDNのコレクションがありません。MSDNを再インストールしてください。
のメッセージが表示されます。

以前1年間 ユニバーサルエディションという高いサービスを1年間だけ受けていたが
今は何もMSDNのサービスを受けていません。

以前送られてきたCDが沢山あるのですが、どういうタイトル(ラベル)のCDをインストールすれば
良いのでしょうか?
最新でないと意味がないと思いますが、代用で使えるものがあるのでしょうか?

Aベストアンサー

MSDNに加入されていたのでしたら、3ヶ月に1度「MSDN Library」と書かれた
CD-ROM(大体2~3枚組)が送られて来ていたと思いますので、
その中からいずれかをインストールするといいでしょう。

ただVBの場合、6.0と.NETとでは別物と言っていいほど大きな違いがありますので、
必ずしも最新版がベストであるとは言い切れません。
もしVB6.0をパッケージで購入されたのでしたら、それに付属している物を
インストールした方がいいかもしれません。

また、MSDNライブラリはWeb上でも見る事ができます。
http://www.microsoft.com/japan/msdn/library/

MSDNライブラリの使い方については以下のページにわかりやすい解説があります。
http://homepage1.nifty.com/rucio/main/dotnet/nyumon/BEGIN8.htm

Qタスクマネージャーのコミットチャージ等の意味

WINDOWS XPのタスクマネージャー
のパフォーマンスを見たところ
コミットチャージ:396MB/1246MB
CPU使用率 5%
プロセス:30

コミットチャージの意味をおしえてください。
またハンドルの意味をおしえてください。
よろしくお願いします。


以下ある状態のデータ値
ーーーーーーーーーーーーーー
合計
ハンドル 6309
スレッド 294
プロセス 30

PF(ページファイル使用量)395MB

物理メモリ(KB)
522224

コミットチャージ(KB):
合計 405794
制限値 1276252
最大値 406616
となっていました
合計値の405794とかは絶えず値が変動

Aベストアンサー

私の方はWindows2000ですが、多分同じようなものだと。
タスクマネージャーのヘルプに書いてあります。以下それの丸写し。
・コミットチャージ
プログラムおよびシステムに割り当てられているメモリ。仮想メモリの使用により、コミットチャージの[最大値]は、物理メモリの上限を越える場合があります。

・ハンドル
ファイルまたはレジストリキーなどのリソースを、プログラムがアクセスできるように一意に識別するのに使う値。


以上ですが、ハンドルを使用したプログラム例としてはこのように使います(デルファイ言語)
[Delphi-ML:80751] Re: 別のソフトにクリップボードの内容を貼り付けたい

"** 鉄平" <tetupei@***.*******.ac.jp>
Fri, 20 Feb 2004 16:14:03 +0900

--------------------------------------------------------------------------------

単に動けばいいのであれば

SetForeGroundWindow(Hhan);//Hhan:ペーストしたいWindowsハンドル
keybd_event( VK_CONTROL, 0, 0 , 0 );
keybd_event( $56, 0, 0 , 0 ); //V Key
keybd_event( $56, 0, KEYEVENTF_KEYUP , 0 );
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP , 0 );

私の方はWindows2000ですが、多分同じようなものだと。
タスクマネージャーのヘルプに書いてあります。以下それの丸写し。
・コミットチャージ
プログラムおよびシステムに割り当てられているメモリ。仮想メモリの使用により、コミットチャージの[最大値]は、物理メモリの上限を越える場合があります。

・ハンドル
ファイルまたはレジストリキーなどのリソースを、プログラムがアクセスできるように一意に識別するのに使う値。


以上ですが、ハンドルを使用したプログラム例としてはこのように使いま...続きを読む

QSQLSERVERのINSERT文について

VB2005
SQLSERVER EXPRESS 2005

上記環境で、データベースの追加作業をしています。
大量データ(1万件ほど)をINSERTしたときに、
下記エラーが途中で表示されます。エラー表示まではINSERTできています。
途中からまた開始すると、ある程度INSERTされて、エラー表示されます。

サーバーへの接続を確立しているときにエラーが発生しました。
SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。
(provider: TCP プロバイダ, error: 0 - 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。)

<ソース>
For Each Row In Table.Rows
--省略--
SqlStr = "INSERT INTO テーブル VALUES (Row("フィールドA")"
SqlCmd.CommandText = SqlStr
Cn.Open()
SqlCmd.ExecuteNonQuery()
Cn.Close()
Next

フィールドは50ほどです。文法のエラーはないと思います。
接続と切断を繰り返すとリソース不足でエラーになるのでしょうか?
ご教授願います。

VB2005
SQLSERVER EXPRESS 2005

上記環境で、データベースの追加作業をしています。
大量データ(1万件ほど)をINSERTしたときに、
下記エラーが途中で表示されます。エラー表示まではINSERTできています。
途中からまた開始すると、ある程度INSERTされて、エラー表示されます。

サーバーへの接続を確立しているときにエラーが発生しました。
SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの...続きを読む

Aベストアンサー

エラー原因の特定はできませんが、
毎回、Open、Closeする理由はあるのでしょうか?
理由がなければ、

Cn.Open()
For Each Row In Table.Rows
--省略--
SqlStr = "INSERT INTO テーブル VALUES (Row("フィールドA")"
SqlCmd.CommandText = SqlStr
SqlCmd.ExecuteNonQuery()
Next
Cn.Close()

してみるとか・・・

または、SqlBulkCopyを利用してみるとか・・・

Qコミットの意味は?

『その事業に,全力でコミットします。』こんな使い方は出来ますか?
言いたい事は,「その事業に,全力で貢献します。」こんな意味が出ればいいのですが日本語として大丈夫でしょうか?
誰かが使っていた気がするのですが,意味を調べてみるとネガティブな意味が多くどうも違う気もするし,本当のところこういった使い方は出来ますか?
ご存知の方よろしくお願い致します。

Aベストアンサー

"commit" という言葉は、本来 "to obligate or pledge oneself [for a definite purpose]" という強い意思(意図)とそれに伴う行動を意味する言葉で、その言葉を使用する事自体にたいする強いコミットメント(commitment)が必要になります。

commit oneself on (in, to, into) something [何かに"commit" する]
事業を統括する立場でも、或いはチームに貢献する一員の立場でも、また個人の目標にむけて邁進する場合でも、「何かに"commit" する」ことにより、全心全霊を尽くして物事に臨むことが要求されます。ご質問にある様に「その事業にコミットする」がこの意味で使われた場合には、ご質問者のご解釈でよろしいでしょう。

commit an outcome(of a business or a project) [特定の案件や業績を"commit" する]
ところが、日本のビジネス界でカタカナ英語を多用する人々の間では、文脈上、その事業「に」コミットすることが、即ちその事業「を」コミットするという意味で解釈された場合、事業の業績(売上や利潤などの成果)に責任を持つ、ということになります。従って、そう「宣言」したにも拘らず期待通りの実績とならなかった場合のいわゆる「責任問題」(減俸や費用負担、配置がえ、降格など)がついて廻ることを覚悟する必要があります。日本にある外資系企業の方々が気やすく使って後で大変な目に遇われていた姿を今でも思い出します。

"commit" という言葉は、本来 "to obligate or pledge oneself [for a definite purpose]" という強い意思(意図)とそれに伴う行動を意味する言葉で、その言葉を使用する事自体にたいする強いコミットメント(commitment)が必要になります。

commit oneself on (in, to, into) something [何かに"commit" する]
事業を統括する立場でも、或いはチームに貢献する一員の立場でも、また個人の目標にむけて邁進する場合でも、「何かに"commit" する」ことにより、全心全霊を尽くして物事に臨むことが要求されます。...続きを読む

QDBへのinsert文作成方法

VB2008Ex SQLServer2008Exを使用してます。
SQLClientで接続してますがVBから、あるテーブルのフィールド数・フィールド名・型・最大バイト数(文字数)を取得することは可能でしょうか?
GetSchemaGetSchemaでフィールド名だけはは持ってこれそうなのですが・・・。
insertする時にフィールド数が多いのでSQL文がすごく長くなってしまいます。なので上記のバイト数が分かれば読み込んだテキストデータを
ループで切り出しながら「,」や「''」を付加してSQL文が簡単に作れるかな?と思っています。
開発環境は上記の通りです。

Aベストアンサー

タイトルは質問事項と関係あるのですか?

> SQLClientで接続してますがVBから、あるテーブルのフィールド数・フィールド名・型・最大バイト数(文字数)を取得することは可能でしょうか?

以下、SQL Server 2005 ですが、自分で作った DB の ビューに INFORMATION_SCHEMA.COLUMNS という システム ビューがあります。

とりあえず SQL 文的には
select *
from information_schema.columns
where table_catalog = N'テーブル名'
といったところでしょうか。

Qコミット(commit)について

SQL*PLUSをウィンドウ右上の×や「終了」でするとコミットされてしまいます。

SHOW AUTOCOMMITはOFFでした。

どういうことでしょうか?

Aベストアンサー

それはSQL*PLUSの仕様上の動作です。

ウィンドウ右上の×や「終了」することは異常終了とはみなされずコミットされてしまいます。

AUTOCOMMIT ONはDML文を実行するたびにCOMMITすることを意味します。もっと言えば、これがONになっている場合、ROLLBACKはできません。

ウィンドウ右上の×や「終了」はこれとは別の問題であり、制御する方法はありません。

QVB2005でINSERT文が。。。

こんにちわ、VB2005初心者でいつもお世話になってます。
単純なINSERT文「コンマ、')'、または有効な式の継続文字が必要です」のエラーです。記述のどこが間違いなのかご指摘いただけますでしょうか。
DataGridViewにAテーブル(MDB、5フィールド)データを表示して新規入力されたデータ(行)をAテーブルに追加しようとしています。これはデータソース追加でのクエリーではなくPG内に記述しています。
「values("& dTbl.Rows(i)(0)","」の「","」がエラーとなっています。

If dTbl.Rows(i).RowState = DataRowState.Added Then
Try
dCom = New OleDb.OleDbCommand( _
"INSERT INTO Aテーブル values("& dTbl.Rows(i)(0)","& dTbl.Rows(i)(1)"," _
& dTbl.Rows(i)(2)"," & dTbl.Row(i)(3)"," & dTbl"." & Row(i)(4)", cn)
dCom.ExecuteNonQuery()
cn.Close()
MsgBox(dCom)
MessageBox.Show("追加しました。", "通知")
Catch ex As Exception
cn.Close()
MessageBox.Show(ex.Message)
End Try
End If
よろしくお願いいたします。

こんにちわ、VB2005初心者でいつもお世話になってます。
単純なINSERT文「コンマ、')'、または有効な式の継続文字が必要です」のエラーです。記述のどこが間違いなのかご指摘いただけますでしょうか。
DataGridViewにAテーブル(MDB、5フィールド)データを表示して新規入力されたデータ(行)をAテーブルに追加しようとしています。これはデータソース追加でのクエリーではなくPG内に記述しています。
「values("& dTbl.Rows(i)(0)","」の「","」がエラーとなっています。

If dTbl.Rows(i).RowState = DataRow...続きを読む

Aベストアンサー

&が抜けています。

Qcommit a fudgeの意味を教えてください

ニュースの記事に、以下のような文章が出てきました。without committing a 'fudge' とはどういう意味でしょうか?
you can't specify me as being female without committing a 'fudge' at the very least.
http://abcnews.go.com/International/australian-lives-male-female-sex-change/story?id=12529909

Aベストアンサー

「(少しでも)ごまかし(でっちあげ、作り話)をすることなく」
でしょうか。

「男」とも「女」とも特定できない。
「少しでもでっちあげをすることなく、男にせよ、女にせよ、いずれかに私を特定することはできない」

QVSSでロールバック

こんにちわ。
VSSでロールバックすると,その履歴を見ることはできるでしょうか?
また一旦チェックインした内容を何の痕跡も残さずに
消すことはできるのでしょうか?
教えてください。お願いします。

Aベストアンサー

ロールバックするとそれらの情報は失われます。
何の痕跡も残らないかどうかは、使用状況などにもよるかとは思いますが、基本的に見た目上はわかりません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング