Hallo liebe Gemeinde,
ich habe ein Problem. Ich habe einen Dienst, der Maschinen überwachen soll und in einigen Fällen einen Posten in eine SQL-Tabelle schreiben soll.
Soweit so gut, ich erstelle pro Maschine eine eigene Klasse, die nur eine Maschine überwacht.
Am Anfang hatte ich nur 2 Maschinen, hierbei hat alles gut funktioniert, die Posten wurden richtig in die Tabelle eingefügt. Nun habe ich allerdings eine dritte Klasse für die dritte Maschinenüberwachung hinzugefgüt und seitdem läuft diese nicht richtig. Es ist exakt dieselbe Klasse wie bei den Maschinen davor, jedoch schafft es die Klasse nicht, den Posten zu erstellen.
Habe schon alles versucht, 10 Versuche, mit zwischenzeitlicher kurzer Pause etc. Immer mal wieder hakt der Eintrag in die SQL-Tabelle. Meine Frage ist nun, kann es sein, dass durch dreifachen Zugriff die SQL-Tabelle in irgendeiner Weise gesperrt wird, so dass die Klasse der 3. Maschine den Posten nicht einfügen kann?
Ich komm irgendwie nicht weiter...
Vielen Dank für eure Hilfe!!
Private Sub PostenEinfügen
Dim AnzVersuche as integer = 0
Dim Erfolg as boolean
Do
AnzVersuche = AnzVersuche + 1
PostenEintragen(Auftragsnr, Losnr, Artikelnr, Kartonnr, Menge, Art, _
Gerätenr, 1)
Pause()
Erfolg = AnzPosten(Art, Auftragsnr, Losnr, Kartonnr, 1) > 0
Loop Until Erfolg Or AnzVersuche >= 10
End Sub
Private Sub PostenEintragen(byval auftragsnr as string, byval losnr as string, _
byval artikelnr as string, byval kartonnr as integer, byval menge as decimal, _
byval art as integer, byval gerätenr as integer, byval meldungsnr as integer)
Dim TaPosten As dsProduktionTableAdapters.PostenProdTableAdapter = Nothing
Dim Schichtdatum As Date
Dim Schichtnr As Integer
Try
TaPosten = New dsProduktionTableAdapters.PostenProdTableAdapter
TaPosten.InsertQuery(art, gerätenr, auftragsnr, artikelnr, losnr, _
kartonnr, meldungsnr, menge)
Finally
If TaPosten IsNot Nothing Then TaPosten.Dispose()
End Try
End Sub
Private Sub Pause
Dim i, j As Integer
Dim k As Double
For i = 1 To 1000
For j = 1 To 1000
k = k + 1
Next
Next
End Sub
Private Function AnzPosten(byval art as integer, byval auftragsnr as string, _
byval losnr as string, byval kartonnr as integer, byval meldungsnr as _
integer) as integer
Dim TaPosten As dsProduktionTableAdapters.PostenProdTableAdapter = Nothing
Dim Anzahl As Integer = 0
Try
TaPosten = New dsProduktionTableAdapters.PostenProdTableAdapter
Anzahl = TaPosten.AnzPosten(art, auftragsnr, losnr, kartonnr, meldungsnr))
Finally
If TaPosten IsNot Nothing Then TaPosten.Dispose()
End Try
Return Anzahl
End Function |