トップ回答者
DataAdapterのSelectCommandエラーについて

質問
-
毎回で心苦しいのですが、1日目は正常に処理されますが2回目になると
「DataAdapter.SelectCommand プロパティを初期化する必要があります」とでます。
HelpではFillやSQLのJOINの確認が記載されてましたがJOINはないし、Fillを行っても同じでした。DataAdapterを別定義しているのはGridとの表示をしながら更新・表示をしている関係です。何か根本的に間違っているのでしょうか。<Loadイベントにて>
With npgDataAdapter
.SelectCommand = New NpgsqlCommand()
With .SelectCommand
.CommandText = CommandType.Text
.CommandText = strSelectSQL
.Connection = Cnn
End With
End With
npgDataSet.Tables.Clear()
npgDataAdapter.Fill(npgDataSet, "T_Zip")<Editプロシージャにて>
Using npgBuilder As Npgsql.NpgsqlCommandBuilder = New Npgsql.NpgsqlCommandBuilder(npgDataAdapter)
If Cnn.State = ConnectionState.Closed Then
Cnn.Open()
End If
Using npgTrans As NpgsqlTransaction = Cnn.BeginTransaction(IsolationLevel.Serializable)
Try
Dim tempRow = npgDataSet.Tables("T_Zip").Select("ZipCode=123-0000" )tempRow(0).BeginEdit()
tempRow(0).Item("ZipCode") = "123-0001"
tempRow(0).Item("Address") = "TEST"
tempRow(0).EndEdit()npgBuilder.GetUpdateCommand.Connection = Cnn
npgBuilder.GetUpdateCommand.Transaction = npgTransnpgDataAdapter.Update(npgDataSet.Tables("T_Zip")) <--ここ
npgTrans.Commit()
Catch
:
FinallyIf Not npgTrans.Connection Is Nothing Then
npgTrans.Rollback()
End If
If Not (Cnn.State = ConnectionState.Closed) Then
Cnn.Close()
End If
End Try
End Using
End Using
回答
-
想像ですが、これも前回と同じではないでしょうか? CommandBuilderはSQLのUpdate文などを生成するために、SelectCommandを実行し、必要な情報をデーターベースから取り込みます。その際、コネクションが閉じていれば取得できず、DataAdapterのUpdateCommandが空白になるのではないでしょうか?
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク VS2008初心者 2010年10月18日 11:58
すべての返信
-
想像ですが、これも前回と同じではないでしょうか? CommandBuilderはSQLのUpdate文などを生成するために、SelectCommandを実行し、必要な情報をデーターベースから取り込みます。その際、コネクションが閉じていれば取得できず、DataAdapterのUpdateCommandが空白になるのではないでしょうか?
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク VS2008初心者 2010年10月18日 11:58