Forums Neueste Beiträge
 

TableAdapterManager.UpdateAll

24/04/2008 - 21:14 von Armin Zingler | Report spam
Hallo,

ich habe ein typisiertes Dataset (VB 2008 Express, Framework 3.5).
Generiert wird dabei auch ein TableAdapterManager. Rufe ich dessen
UpdateAll-Methode auf, kommt ein Fehler, weil die Verbindung bereits
geöffnet sei. Die UpdateAll-Methode enthàlt u.a. diesen Code:

If ((workConnection.State And Global.System.Data.ConnectionState.Closed)
_
= Global.System.Data.ConnectionState.Closed) Then
workConnection.Open
workConnOpened = true
End If

Ich frage mich, wie dieser Code jemals funktionieren soll, denn das
Enum-Member ConnectionState.Closed hat den Wert 0. Eine And-Verknüpfung
ergibt somit _immer_ 0. Folglich wird _immer_ die Connection geöffnet,
selbst wenn sie schon geöffnet ist. Daher die Exception. Müsste die
Bedingung nicht lauten:

(State and Open)<>Open

Stehe ich auf der Leitung oder ist das ein Bug?


Armin
 

Lesen sie die antworten

#1 Elmar Boye
25/04/2008 - 09:47 | Warnen spam
Hallo Armin,

Armin Zingler schrieb:
ich habe ein typisiertes Dataset (VB 2008 Express, Framework 3.5).
Generiert wird dabei auch ein TableAdapterManager. Rufe ich dessen
UpdateAll-Methode auf, kommt ein Fehler, weil die Verbindung bereits
geöffnet sei. Die UpdateAll-Methode enthàlt u.a. diesen Code:

If ((workConnection.State And Global.System.Data.ConnectionState.Closed)
_
= Global.System.Data.ConnectionState.Closed) Then
workConnection.Open
workConnOpened = true
End If

Ich frage mich, wie dieser Code jemals funktionieren soll, denn das
Enum-Member ConnectionState.Closed hat den Wert 0. Eine And-Verknüpfung
ergibt somit _immer_ 0. Folglich wird _immer_ die Connection geöffnet,
selbst wenn sie schon geöffnet ist. Daher die Exception. Müsste die
Bedingung nicht lauten:

(State and Open)<>Open

Stehe ich auf der Leitung oder ist das ein Bug?



Das hast Du schon richtig analysiert und ich würde das als Bug sehen.

Anscheinend nutzt kaum einer die Gelegenheit seine Produktivitàt
zu verbessern, wie das VS Data Team das Feature anpreist:
<URL:http://blogs.msdn.com/vsdata/archiv...s.aspx>

Im übrigen ist der C# Code àquivalent:
<URL:http://forums.microsoft.com/MSDN/Sh...spx?PostID$02164&SiteID=1>
blieb dort unbeantwortet.

Der Fehler mag unbemerkt geblieben sein, weil üblicherweise eine Verbindung
nur für die Aktualisierung geöffnet wird und anschließend geschlossen wird.

Workaround: Vorher ein DataSet.Connection.Close ausführen.

Gruß Elmar

Ähnliche fragen