Re: Concurrency violation
- From: "Nijazi Halimaji" <spami@xxxxxxx>
- Date: Fri, 16 Sep 2005 10:23:38 +0200
Hallo
Okay... Ich gebe Dir gleich die ganze Klasse und die Prozedur dazu (Musst du
wahrscheinlich am besten in VS kopieren):
1. Prozedur
Public Sub SendAllSMS()
Dim ds As New Data.DataSet
Dim dsnotSent As DataSet
Dim ODBCSelection As New ODBC.CODBC
ODBCSelection.ODBC_ConnectionString = "Driver={Superbase 32-bit Driver
(*.sbf)};dbq=X:\SBDATEN;server=NotTheServer"
Dim dat As Date
Dim NewDat As String
dat = Now
NewDat = (Format(dat, "yyyy")) + "-" + (Format(dat, "MM")) + "-" +
(Format(dat, "dd"))
ODBCSelection.ODBC_SelectCommand = "SELECT SMSVersNr, NatelNr, NatelRueckNr,
Nachricht, AnzahlVersuche FROM SMSVers WHERE PlanVersandDat = {d '" + NewDat
+ "'} and VersandDatum < {d '" + NewDat + "'}"
ODBCSelection.ODBC_UpdateCommand = "UPDATE SMSVers set VersandDatum = ?,
VersandZeit = ?, AnzahlVersuche = ? where SMSVersNr = ?"
ODBCSelection.Initialize()
Dim para As ODBC.CODBC_Parameter
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@VersandDatum"
para.ODBC_ParameterSourceColumn = "VersandDatum"
para.ODBC_ParameterType = OdbcType.DateTime
ODBCSelection.ODBC_UpdateParameters.Add(para)
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@VersandZeit"
para.ODBC_ParameterSourceColumn = "VersandZeit"
para.ODBC_ParameterType = OdbcType.DateTime
ODBCSelection.ODBC_UpdateParameters.Add(para)
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@AnzahlVersuche"
para.ODBC_ParameterSourceColumn = "AnzahlVersuche"
para.ODBC_ParameterType = OdbcType.Int
ODBCSelection.ODBC_UpdateParameters.Add(para)
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@SMSVersNr"
para.ODBC_ParameterSourceColumn = "SMSVersNr"
para.ODBC_ParameterType = OdbcType.Text
ODBCSelection.ODBC_UpdateParameters.Add(para)
ds = ODBCSelection.GetData()
ds.Tables(0).Columns.Add("VersandZeit", GetType(DateTime))
ds.Tables(0).Columns.Add("VersandDatum", GetType(DateTime))
dsnotSent = ds.Clone
ds.Tables(0).Rows(0).Item("Nachricht") = "sdaf jköasdfkjsdfjasdj
ffjasdöfasjd fklfj klöfjasdklö asdfkl fk jasdfjklösd klösjdfklasjd
fkljffjklasdfqwepruioweioprweioproqwueprioqwuerioqwe
uiopruioweriopewruioqweioprwueiopr uweiop rweruweior qwuer weiopweiopr
weioruqweiopruweiopru qweopri
uqweiopruweiosdaöjklsdfjasdjklfvnyxcvm,yxcvm,yxcn ,.n xc,vm.yxnc"
Dim mySMSWebService As New SendSMSbyService
mySMSWebService.ServerIP = "138.188.82.160"
mySMSWebService.ServerPort = "3044"
mySMSWebService.LargeAccountName = "30016"
mySMSWebService.LargeAccountPassword = "super30016"
For Each row As DataRow In ds.Tables(0).Rows
mySMSWebService.AddSMS(row.Item("SMSVersNr").ToString,
row.Item("NatelNr").ToString, row.Item("Nachricht").ToString,
row.Item("NatelRueckNr").ToString)
Next
If mySMSWebService.SendSMS = False Then
Dim answer As DataSet
answer = mySMSWebService.GetNotSendSMS
For Each row As DataRow In ds.Tables(0).Rows
Dim checkrow() As DataRow
Dim id As String
Try
checkrow = answer.Tables(0).Select("id='" & row.Item("SMSVersNr").ToString &
"'")
id = checkrow(0).Item("id").ToString
Catch e As Exception
id = ""
End Try
If row.Item("SMSVersNr").ToString = id Then
row.Item("AnzahlVersuche") = row.Item("AnzahlVersuche") + 1
dsnotSent.Tables(0).ImportRow(row)
row.Delete()
End If
Next
ds.AcceptChanges()
End If
For Each row As DataRow In ds.Tables(0).Rows
row.Item("VersandDatum") = Now
row.Item("VersandZeit") = Now
row.Item("AnzahlVersuche") = row.Item("AnzahlVersuche") + 1
Next
ODBCSelection.UpdateData(ds)
'myODBC = Nothing
Dim ODBCUpdate = New ODBC.CODBC
ODBCUpdate.ODBC_ConnectionString = "Driver={Superbase 32-bit Driver
(*.sbf)};dbq=X:\SBDATEN;server=NotTheServer"
ODBCUpdate.ODBC_SelectCommand = "SELECT SMSVersNr, NatelNr, NatelRueckNr,
Nachricht, AnzahlVersuche FROM SMSVers WHERE PlanVersandDat >= {d '" +
NewDat + "'} and VersandDatum < {d '" + NewDat + "'}"
ODBCUpdate.ODBC_UpdateCommand = "UPDATE SMSVers set AnzahlVersuche = ? where
SMSVersNr = ?"
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@AnzahlVersuche"
para.ODBC_ParameterSourceColumn = "AnzahlVersuche"
para.ODBC_ParameterType = OdbcType.Int
ODBCUpdate.ODBC_UpdateParameters.Add(para)
para = New ODBC.CODBC_Parameter
para.ODBC_ParameterName = "@SMSVersNr"
para.ODBC_ParameterSourceColumn = "SMSVersNr"
para.ODBC_ParameterType = OdbcType.Text
ODBCUpdate.ODBC_UpdateParameters.Add(para)
ODBCUpdate.Initialize()
ODBCUpdate.UpdateData(dsnotSent)
End Sub
2. Gesamte Klasse
Imports System.Data
Imports System.Data.Odbc
Namespace ODBC
Public Class CODBC
Private ODBC_Command As OdbcCommand
Private ODBC_Connection As OdbcConnection
Public ODBC_SelectParameters As New CODBC_SelectParameters
Public ODBC_UpdateParameters As New CODBC_UpdateParameters
Public ODBC_DeleteParameters As New CODBC_DeleteParameters
Public ODBC_InsertParameters As New CODBC_InsertParameters
'ODBC-Connection String
Private smODBC_ConnectionString As String
Public Property ODBC_ConnectionString() As String
Get
Return smODBC_ConnectionString
End Get
Set(ByVal value As String)
smODBC_ConnectionString = value
End Set
End Property
'ODBC Select Command
Private smODBC_SelectCommand As String
Public Property ODBC_SelectCommand() As String
Get
Return smODBC_SelectCommand
End Get
Set(ByVal value As String)
smODBC_SelectCommand = value
End Set
End Property
'ODBC Update Command
Private smODBC_UpdateCommand As String
Public Property ODBC_UpdateCommand() As String
Get
Return smODBC_UpdateCommand
End Get
Set(ByVal value As String)
smODBC_UpdateCommand = value
End Set
End Property
'Constructor
Public Sub New()
End Sub
'Before every Select or Update the Assembly has to bee initialized
Public Sub Initialize()
ODBC_Command = New OdbcCommand("")
ODBC_Connection = New OdbcConnection("")
'ODBC_Connection.ConnectionString = "DSN=SBDBE;"
ODBC_Connection.ConnectionString = Me.ODBC_ConnectionString
End Sub
'Gets all data from the database
Public Function GetData() As DataSet
Dim ODBC_Adapter As OdbcDataAdapter
ODBC_Adapter = New OdbcDataAdapter(Me.ODBC_SelectCommand,
Me.ODBC_Connection)
ODBC_Adapter.SelectCommand.Connection = Me.ODBC_Connection
ODBC_Adapter.SelectCommand.CommandText = Me.ODBC_SelectCommand
'ODBC_Adapter.UpdateCommand = Me.ODBC_Command
'ODBC_Adapter.UpdateCommand.CommandText = Me.ODBC_UpdateCommand
'ODBC_Adapter.UpdateCommand.Connection = Me.ODBC_Connection
'Hier Collectionschlaufe for each... bauen
'Dim tmpParameter As OdbcParameter
'For Each Parameter As CParameter In Me.ODBC_Parameters
' tmpParameter =
ODBC_Adapter.UpdateCommand.Parameters.Add(Parameter.ODBC_ParameterName,
Parameter.ODBC_ParameterType)
' tmpParameter.SourceColumn = Parameter.ODBC_ParameterSourceColumn
' Next
Dim tmpds As New DataSet
ODBC_Adapter.Fill(tmpds)
Return tmpds
End Function
Public Function UpdateData(ByVal MyDataSet As DataSet) As Boolean
Dim ODBC_Adapter As OdbcDataAdapter
ODBC_Adapter = New OdbcDataAdapter(Me.ODBC_SelectCommand, ODBC_Connection)
' ODBC_Adapter.SelectCommand.Connection = Me.ODBC_Connection
' ODBC_Adapter.SelectCommand.CommandText = Me.ODBC_SelectCommand
ODBC_Adapter.UpdateCommand = Me.ODBC_Command
ODBC_Adapter.UpdateCommand.CommandText = Me.ODBC_UpdateCommand
ODBC_Adapter.UpdateCommand.Connection = Me.ODBC_Connection
Dim UpdatePara As OdbcParameter
For Each Parameter As CODBC_Parameter In Me.ODBC_UpdateParameters
UpdatePara =
ODBC_Adapter.UpdateCommand.Parameters.Add(Parameter.ODBC_ParameterName,
Parameter.ODBC_ParameterType)
UpdatePara.SourceColumn = Parameter.ODBC_ParameterSourceColumn
Next
'Hier Collectionschlaufe for each... bauen
ODBC_Adapter.DeleteCommand = Me.ODBC_Command
ODBC_Adapter.DeleteCommand.Connection = Me.ODBC_Connection
ODBC_Adapter.DeleteCommand.CommandText = "Delete from SMSVers where
SMSVersNr=?"
Dim TestParam As OdbcParameter
TestParam = ODBC_Adapter.DeleteCommand.Parameters.Add("@SMSVersNrUpdate",
OdbcType.Text)
TestParam.SourceColumn = "SMSVersNr"
ODBC_Adapter.Update(MyDataSet)
Return True
End Function
End Class
Public Class CODBC_Parameter
'Defining the Name of the Parameter
Private smODBC_ParameterName As String
Public Property ODBC_ParameterName() As String
Get
Return smODBC_ParameterName
End Get
Set(ByVal Value As String)
smODBC_ParameterName = Value
End Set
End Property
'Defining the SourceColumn-Name of the Parameter
Private smODBC_ParameterSourceColumn As String
Public Property ODBC_ParameterSourceColumn() As String
Get
Return smODBC_ParameterSourceColumn
End Get
Set(ByVal Value As String)
smODBC_ParameterSourceColumn = Value
End Set
End Property
'Defining the ODBC_Type of the Parameter
Private smODBC_ParameterType As OdbcType
Public Property ODBC_ParameterType() As OdbcType
Get
Return smODBC_ParameterType
End Get
Set(ByVal Value As OdbcType)
smODBC_ParameterType = Value
End Set
End Property
End Class
Public Class CODBC_SelectParameters
Inherits System.Collections.CollectionBase
' Hinzufügen eines Objektes
Public Sub Add(ByVal Parameter As CODBC_Parameter)
InnerList.Add(Parameter)
End Sub
'Defaulteigenschaft für das Lesen eines Objektes über eine For Each Schlaufe
(oder was auch immer)
'@
'@ <link>aggregation</link>
'@
Default Public Property Item(ByVal Index As Integer) As CODBC_Parameter
Get
Return DirectCast(InnerList.Item(Index), CODBC_Parameter)
End Get
Set(ByVal Value As CODBC_Parameter)
InnerList.Item(Index) = Value
End Set
End Property
End Class
Public Class CODBC_UpdateParameters
Inherits System.Collections.CollectionBase
' Hinzufügen eines Objektes
Public Sub Add(ByVal Parameter As CODBC_Parameter)
InnerList.Add(Parameter)
End Sub
'Defaulteigenschaft für das Lesen eines Objektes über eine For Each Schlaufe
(oder was auch immer)
'@
'@ <link>aggregation</link>
'@
Default Public Property Item(ByVal Index As Integer) As CODBC_Parameter
Get
Return DirectCast(InnerList.Item(Index), CODBC_Parameter)
End Get
Set(ByVal Value As CODBC_Parameter)
InnerList.Item(Index) = Value
End Set
End Property
End Class
Public Class CODBC_DeleteParameters
Inherits System.Collections.CollectionBase
' Hinzufügen eines Objektes
Public Sub Add(ByVal Parameter As CODBC_Parameter)
InnerList.Add(Parameter)
End Sub
'Defaulteigenschaft für das Lesen eines Objektes über eine For Each Schlaufe
(oder was auch immer)
'@
'@ <link>aggregation</link>
'@
Default Public Property Item(ByVal Index As Integer) As CODBC_Parameter
Get
Return DirectCast(InnerList.Item(Index), CODBC_Parameter)
End Get
Set(ByVal Value As CODBC_Parameter)
InnerList.Item(Index) = Value
End Set
End Property
End Class
Public Class CODBC_InsertParameters
Inherits System.Collections.CollectionBase
' Hinzufügen eines Objektes
Public Sub Add(ByVal Parameter As CODBC_Parameter)
InnerList.Add(Parameter)
End Sub
'Defaulteigenschaft für das Lesen eines Objektes über eine For Each Schlaufe
(oder was auch immer)
'@
'@ <link>aggregation</link>
'@
Default Public Property Item(ByVal Index As Integer) As CODBC_Parameter
Get
Return DirectCast(InnerList.Item(Index), CODBC_Parameter)
End Get
Set(ByVal Value As CODBC_Parameter)
InnerList.Item(Index) = Value
End Set
End Property
End Class
End Namespace
Besten Dank für Deine Hilfe!
"Elmar Boye" <ElmarB@xxxxxxx> schrieb im Newsbeitrag
news:3ovddgF7j49eU1@xxxxxxxxxxxxxxxxx
> Hallo Nijazi,
>
> Nijazi Halimaji <spami@xxxxxxx> schrieb ...
>> Habe das gerade eingebaut und der Fehler kommt immer noch...
>
> dann zeig mal etwas mehr. Wie das DataSet und wie die Tabelle
> aufgebaut ist.
>
> Gruss
> Elmar
>
>
>
.
- References:
- Concurrency violation
- From: Nijazi Halimaji
- Re: Concurrency violation
- From: Elmar Boye
- Re: Concurrency violation
- From: Nijazi Halimaji
- Re: Concurrency violation
- From: Elmar Boye
- Concurrency violation
- Prev by Date: Re: Concurrency violation
- Next by Date: Re: Management Console
- Previous by thread: Re: Concurrency violation
- Next by thread: Eigene ListBox zeichnen
- Index(es):
Relevant Pages
|