Jag får ett felmedelande som säger att någon annan användare håller på att ändra i recordsetet när jag vill updatera. den är ganska lång, bara en del av proget, men... och klippt å klistrat lite :) oj blev lite konstigt, men... jag har skrivit om en del av koden coh det verkar funka nu... felmedelande om annan användare vid rs.update i VB
med typ denna metoden:
<code>
Rs2("name") = Rs2("name") & Rs1("nr")
Rs2.Update
Rs1.close
Rs2.close
</code>
Måste man avsluta update på ett bättre sätt än "close" alla connections blir ju stängda innan den vill updatera igen...?.
eller Kan det bero på att det ligger i en loop så att hårdisken inte hinner med att avsluta sitt jobb innan programet vill updatera igen. behöver jag lägga in en "paus" på något vis ?
eller kan det ha med att jag hämntar data från samma recordset som jag skrivet till... (känns osanolikt)...
/ps
...de blir lite skumma fel när man prövar sig fram :)...Sv: felmedelande om annan användare vid rs.update i VB
....
jag försökte det nu, men fick ett pellesoft felmedelande.. (på rad 178)
om ja inte postar sok code kanske... Sv: felmedelande om annan användare vid rs.update i VB
vet inte om det hjälper
<code>
Function MoveToProvince(Army As String, TargetProv As String)
Dim TargetInt As Integer
Dim ArmyInt As Integer
Dim TargetStr As String
Dim ArmyStr As String
Dim looppos As Integer
Dim StopLoop As Boolean
Dim StringKeeper As String
Dim Rs1Nr As String
Rs1Nr = Rs1("Nr")
CloseData1
CloseData2
CloseData3
ArmyInt = Army
ArmyStr = ArmyInt
TargetInt = TargetProv
TargetStr = TargetInt
OpenData = OpenData1("Empire", "Armies", Army)
'-------------------Perform Movement------------------
Mainloop.Report.Text = Mainloop.Report.Text & Rs1("Name") & " are moving to province " & TargetStr & "." & Chr(13) & Chr(10)
'----- Remove army from map -----------
looppos = 1
OpenData = OpenData2("World", "Provinces", Rs1("Position"))
Do Until StopLoop = True Or Mid(Rs2("Armies"), looppos, 4) = ""
If PlayerNow & Rs1("Nr") = Mid(Rs2("Armies"), looppos, 4) Then
StringKeeper = Left(Rs2("Armies"), looppos - 1)
StringKeeper = StringKeeper & Mid(Rs2("Armies"), looppos + 4, Len(Rs2("Armies")))
Rs2("Armies") = StringKeeper
Rs2.Update
Rs2.CancelUpdate
Mainloop.Report.Text = Mainloop.Report.Text & Rs1("Name") & " removed from province " & Rs1("Position") & ". ----> " & Rs2("Armies") & Chr(13) & Chr(10)
StopLoop = True
Else
End If
Loop
'-------- Add army to new province -------------
CloseData2
OpenData = OpenData2("World", "Provinces", TargetStr)
Rs2("Armies") = Rs2("Armies") & PlayerNow & Rs1("Nr")
Rs2.Update
'Rs2.CancelUpdate
Mainloop.Report.Text = Mainloop.Report.Text & Rs1("Name") & " added to province " & Rs2("Nr") & ". ----> " & Rs2("Armies") & Chr(13) & Chr(10)
'---------- Save new army position -----
Rs1("Position") = TargetStr
Rs1.Update
'Rs1.CancelUpdate
Mainloop.Report.Text = Mainloop.Report.Text & Rs1("Name") & " now in province " & Rs1("Position") & "." & Chr(13) & Chr(10)
CloseData1
CloseData2
OpenData = OpenData1("Empire", "Armies", "All")
Rs1.Find "Nr='" & Rs1Nr & "'", 0, adSearchForward, 1
End Function
'------------------------------------------------------------------------
Function CheckConflict(Province As String)
Dim LooPos As Integer
Dim LooPlus As Integer
Dim EndLoo As Boolean
Dim WarResult As String
LooPos = 1
LooPlus = 5
CloseData3
OpenData = OpenData3("World", "Provinces", Province)
Do Until EndLoo = True Or Mid(Rs3("Armies"), LooPos, 1) = ""
Do Until EndLoo = True Or Mid(Rs3("Armies"), LooPlus, 1) = ""
If Mid(Rs3("Armies"), LooPos, 1) <> Mid(Rs3("Armies"), LooPlus, 1) Then
WarResult = Warzone.Battle(Mid(Rs3("Armies"), LooPos, 4), Mid(Rs3("Armies"), LooPlus, 4), Rs1("Position"))
Mainloop.Report.Text = Mainloop.Report.Text & "-----> There have been a battle in province " & Rs1("Position") & ", " & Left(WarResult, 4) & " are victorious." & Chr(13) & Chr(10)
'------- Retreat function -------
CloseData3
WarResult = Retreat(Right(WarResult, 4), Rs1("Position"))
EndLoo = True
Else
LooPlus = LooPlus + 4
End If
Loop
LooPos = LooPos + 4
LooPlus = 9
Loop
CloseData3
End Function
'---------------------------------------------------------
Function Retreat(Army As String, Province As String)
Dim Safe, Stopper, ConvInt As Integer
Dim MoveOne, ConvStr As String
Dim RetreatMoveTo As String
Dim RetreatVerify As String
Dim RetreatLoopVer As Integer
Dim RetreatConvVer As Integer
Mainloop.Report.Text = Mainloop.Report.Text & "-----> The Defeated " & Army & " are Retreating." & Chr(13) & Chr(10)
'---- Hämta move1 från provinsen -------------------
CloseData2
OpenData = OpenData2("World", "Move", Province)
If Rs2.EOF = False Then
MoveOne = Rs2("Move1")
Else
Mainloop.Report.Text = Mainloop.Report.Text & "ERROR: This province (" & Province & "). Have no move1 directives." & Chr(13) & Chr(10)
End If
CloseData2
'---- Spara playernow i safe och ändra till losern -----
Safe = PlayerNow
PlayerNow = Left(Army, 1)
'---- kolla om egen provins finns i granskapet ---------
Stopper = 1
Do Until Mid(MoveOne, Stopper, 3) = ""
If MoveOne <> "" Then
CloseData2
ConvInt = Mid(MoveOne, Stopper, 3)
ConvStr = ConvInt
OpenData = OpenData2("World", "Provinces", ConvStr)
Mainloop.Report.Text = Mainloop.Report.Text & "-----> Retreat Action: Now opening " & Mid(MoveOne, Stopper, 3) & " Owner is:" & Rs2("Owner") & ", Army is:" & Left(Army, 1) & Chr(13) & Chr(10)
Else: End If
ConvInt = Left(Army, 1)
If Rs2("Owner") = ConvInt Then
'---------------------- Province found, movement ---------------
Mainloop.Report.Text = Mainloop.Report.Text & "-----> Retreat Action: Army " & Army & " Retreating to province " & Mid(MoveOne, Stopper, 3) & "." & Chr(13) & Chr(10)
'------------ Da move func ---------------
RetreatMoveTo = Rs2("Nr")
'startfunc = MoveToProvince(RetreatRs1Nr, RetreatMoveTo) ' MoveFunc
OpenData = OpenData1("Empire", "Armies", "All")
OpenData = OpenData2("World", "Provinces", RetreatMoveTo)
'---------- Retreat stop --------
Mainloop.Report.Text = Mainloop.Report.Text & "-----> Retreat Action: Army " & Army & " Retreat Action Complete. " & Mid(MoveOne, Stopper, 3) & "." & Chr(13) & Chr(10)
MoveOne = ""
Else
Stopper = Stopper + 3
End If
Loop
If MoveOne <> "" Then
Mainloop.Report.Text = Mainloop.Report.Text & "-----> Retreat Action: Action Halted, no target found. Army: " & Army & "." & Chr(13) & Chr(10)
Else: End If
CloseData2
CloseData3
PlayerNow = Safe
End Function
</code>Sv: felmedelande om annan användare vid rs.update i VB
snabb info..
opendata1- 3 är funktioner som öppnar recordseten.
closedata1 - 3 är funktioner som stänger recordseten.
som du ser har jag prövat lite med
rs1.cancel update å så... (vet inte vad det gör, men verkar inte hjälpa.)
jobbar fortfarande i retreat funktionen desutom, gör om lite.Sv: felmedelande om annan användare vid rs.update i VB
kan inte påstå att jag hitta något konktet fel dock...
men man behver inte göra något annat än att stänga en connection för att avsluta "update låsningen" då eller ?