Tranaktionen

07/06/2009 - 06:30 von vollmer2905 | Report spam
Hallo an alle,


ich habe ein Problem mit dem Update von DT's i.V.m. Transaktionen.

Folgendes Szenario:
Ich erstelle eine Rechnung und möchte diese in einer DB mittels SP
speichern. Die allg. Rechnungsdaten (wie Datum, Referenz zur Kunden-Nr
etc.) liegen in einer DataTable. In einer weiteren DT liegen die
dazugehörigen Rechnungspositionen.

Die zwei Updates der DTs liegen jeweils in einer Transaktion:

Using conn As New SqlConnection(connString)
Dim sqlTrans As SqlTransaction = conn.BeginTransaction("UpdateInvoice")
Dim sqlComm As SqlCommand = New SqlCommand("sp_updInvoice", conn)
sqlComm.Transaction = sqlTrans
sqlComm.CommandType = CommandType.StoredProcedure
sqlComm.Parameters.AddWithValue("@invID", .)

Dim adapter As SqlDataAdapter = New SqlDataAdapter(sqlComm)
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(adapter)

'Update allg. Rechnungs-Daten
adapter.Update(DT_allgRechnungsDaten)

'Update Rechnungs-Positionen
sqlComm.CommandText = "spGet_InvoicePositions_onID"
adapter.Update(DT_RechnungsPositionen)

sqlTrans.Commit()
End Using

Wenn man jetzt versucht eine neue Rechnung anzulegen, dann gibt es beim
zweiten adapter.Update eine Exception. Die resultiert daraus, da dies alles
in einer Transaktion geschieht. Problem hierbei ist, dass beim Update der
RechnungsPositionen, die allg. RechnungsDaten (u.a. die Rechnungsnummer,
welche als FK für die RechPos-Tabelle dient) zwecks der Transaktion nicht
vorhanden ist.

Beim Ändern/Anpassen einer Rechnung funktioniert alles wunderbar, da die
Rechnungs-Nr (ID) - für die Referenz der Positionen in der RechPos-Tabelle
- bereits vorhanden ist.

Wie kann man dieses Problem lösen, dass bei einer NEU-Anlage diese Probleme
nicht bestehen?

(Schließlich soll bei einem Fehler z.B. wàhrend der Speicherung der
RechnungsPositione ja nicht nur die allg. Rechnungsdaten in der DB
vorhanden sein, sondern erst, wenn alles komplett OK durchgelaufen ist -
eine Transaktion halt ... àhnlich sieht es ja bei der Waren-Bestandsbuchung
aus... ist nicht so gut, wenn Bestànde dabei abgebucht wurden, aber die
Speicherung der Rechnung schlug fehl...)

Ich hoffe jemand von euch hat einen Anreiz bzw. eine Lösung für dieses
Problem!?!

Viele Grüße
Micha
 

Lesen sie die antworten

#1 Peter Fleischer
07/06/2009 - 08:02 | Warnen spam
schrieb im Newsbeitrag
news:13r3jmojib9em$.14ad9d910axi6$
...
Wie kann man dieses Problem lösen, dass bei einer NEU-Anlage diese
Probleme
nicht bestehen?



Z.B. mit GUID's arbeiten!

Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und qualifiziert
und schnell beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).

Viele Grüsse
Peter

Ähnliche fragen