お世話になります。

只今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と関連する良く見られている質問

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

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を利用してみるとか・・・

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'テーブル名'
といったところでしょうか。

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ベストアンサー

&が抜けています。

QVSSでロールバック

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

Aベストアンサー

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


このカテゴリの人気Q&Aランキング

おすすめ情報