Re: Concurrency violation



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
>
>
>


.



Relevant Pages

  • Re: multiplatform (pocketPC & desktopPC) (Daniel !!)
    ... Friend Versione As String ... Public Sub GetMyConnectionPalmare() ... Dim errorMessages As String ... Private Function GetDS_Desktop(ByVal SQL As String) As DataSet ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: multiplatform (pocketPC & desktopPC) (Daniel !!)
    ... Friend Versione As String ... Public Sub GetMyConnectionPalmare() ... Dim errorMessages As String ... Private Function GetDS_Desktop(ByVal SQL As String) As DataSet ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: hyperlinks in a paragraph
    ... Public Sub Discover(ByVal MStr As String) ... Public Sub ProcPara ... Dim HL As Hyperlink ...
    (microsoft.public.word.vba.general)
  • Re: Getting Windows Display Name
    ... Private Type WKSTA_USER_INFO_1 ... usri3_script_path As Long 'Pointer to a Unicode string specifying the path for the user's logon script file. ... Dim bufptr As Long ... Public Property Get PasswordAgeAs Long ...
    (microsoft.public.access.modulesdaovba)
  • Re: Re: Code for controling FTP from Access VBA
    ... ByVal strFilename As String) As Boolean ... >Dim mHInternet As Long ... >Public Property Let DeleteFileName ...
    (comp.databases.ms-access)