webForumDet fria alternativet

Problem med funktion

8 svar · 308 visningar · startad av phazer23

phazer23Medlem sedan feb. 2001256 inlägg
#1

Hej.. Använder följande kod för att uppdatera en serietabell m.m men får problem när jag lägger in resultat över 9 tex 10-2 då blir det konstigt och stämmer inte alls..

Jag vet att det är mycket kod men om nån smart person kan se vart felet ligger skulle jag vara evigt tacksam.. ;)

Function f_checkResultat(intMatchID, intHresultat, intBresultat)
'****************************************************
'Denna funktion kollar om det resultat som laggts in
'i formuläret ska läggas in i databasen för första ggn
'eller om resultatet ska ändras, om så är fallet ska även tabellen 
'ändras
'****************************************************
'
'****************************************************
'## ~1 ##
If Len(intHresultat) <= 0 AND Len(intBresultat) <= 0 Then
f_checkResultat = "Du har inte lagt in några resultat"
Exit Function
End If 

'****************************************************
'## ~2 ##
strSQL = "SELECT LagA, LagB, Resultat1, Resultat2, Serie "&_
"FROM matchprogram WHERE Matchnr = "&intMatchID
'****************************************************
response.write strSQL
'****************************************************
'## ~3 ##
Set ObjConn = Server.CreateObject("ADODB.Connection")
'kommentera bort den som ni inte ska använda
'Access
ObjConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=xxxxxxxxxxxxxxxxxxxxx.mdb"
'mySQL
Set ObjRS = ObjConn.execute(strSQL)
If ObjRS.EOF Then
f_CheckResultat = "matchen finns inte"
Exit function
Else
If Len(ObjRS("Resultat1")) > 0 Then
d_intHresultat = Cint(ObjRS("Resultat1"))
End If
If Len(ObjRS("Resultat2")) > 0 Then
d_intBresultat = Cint(ObjRS("Resultat2"))
End If 
strHemmalag = ObjRS("LagA")
strBortalag = ObjRS("LagB")
strSerie = ObjRS("Serie")
End If
'****************************************************
'## ~4 ##
If Len(d_intHresultat) <= 0 AND Len(d_intBresultat) <= 0 Then
'Uppdaterar matchprogramet
strUPD1 = "UPDATE matchprogram SET Resultat1 = "&intHresultat&", "&_
"Resultat2 = "&intBresultat&" "&_
"WHERE Matchnr = "&intMatchID

'Kollar vem som vann
If Cint(intHresultat) > Cint(intBresultat) Then
hp = "+ 2" : hv = "+ 1" : hf = "+ 0" : ho = "+ 0"
bp = "+ 0" : bv = "+ 0" : bf = "+ 1" : bo = "+ 0"
End If

If Cint(intHresultat) = Cint(intBresultat) Then
hp = "+ 1" : hv = "+ 0" : hf = "+ 0" : ho = "+ 1"
bp = "+ 1" : bv = "+ 0" : bf = "+ 0" : bo = "+ 1"
End If

If Cint(intHresultat) < Cint(intBresultat) Then
hp = "+ 0" : hv = "+ 0" : hf = "+ 1" : ho = "+ 0"
bp = "+ 2" : bv = "+ 1" : bf = "+ 0" : bo = "+ 0"
End If

'Uppdaterar Serien
'Uppdaterar hemmalagets stat.
strUPD2 = "UPDATE Serie Set Vinst = Vinst " & hv & ", "&_
"Forl = Forl " & hf & ", "&_
"Poang = Poang " & hp &", "&_
"Oav = Oav " & ho &", "&_
"Gjorda = Gjorda + "& intHresultat &", "&_
"Inslapp = Inslapp + "& intBresultat &", "&_
"Spelade = Spelade + 1"&_
"plusminus = plusminus + "& intHresultat &" + "& intBresultat &", "&_
" WHERE Lag = "&strHemmalag&" "&_
" AND Klass = "&strSerie&""

Response.write strUPD2

'Uppdaterar bortalagets stat.
strUPD3 = "UPDATE Serie Set Vinst = Vinst " & bv & ", "&_
"Forl = Forl " & bf & ", "&_
"Poang = Poang " & bp &", "&_
"Oav = Oav " & bo &", "&_
"Gjorda = Gjorda + "& intBresultat &", "&_
"Inslapp = Inslapp + "& intHresultat &", "&_
"Spelade = Spelade + 1"&_
"plusminus = plusminus + "& intBresultat &" + "& intHresultat &", "&_
" WHERE Lag = "&strBortalag&" "&_
" AND Klass = "&strSerie&""

ObjConn.execute(strUPD1),,128
ObjConn.execute(strUPD2),,128
ObjConn.execute(strUPD3),,128
ObjConn.close
Set ObjConn = Nothing
f_CheckResultat = "Du har nu lagt in ett resultat till match nr "&intMatchID
Exit Function
End If

'****************************************************
'## ~5 ##
If d_intHresultat = intHresultat AND d_intBresultat = intBresultat Then
f_checkResultat = "Du har inte ändrat några resultat"
Exit Function
End If
'****************************************************
'## ~6 ##
If d_intHresultat > d_intBresultat Then
strFirstWinner = "hemma"
End If

If d_intHresultat = d_intBresultat Then
strFirstWinner = "ingen"
End If

If d_intHresultat < d_intBresultat Then
strFirstWinner = "borta"
End If
'****************************************************
'## ~7 ## 
If intHresultat > intBresultat Then
strSecondWinner = "hemma"
End If

If intHresultat = intBresultat Then
strSecondWinner = "ingen"
End If

If intHresultat < intBresultat Then
strSecondWinner = "borta"
End If
'****************************************************
'## ~8 ##

If strFirstWinner = "hemma" AND strSecondWinner = "hemma" Then
intBolean = 0
End If

If strFirstWinner = "ingen" AND strSecondWinner = "ingen" Then
intBolean = 0
End If

If strFirstWinner = "borta" AND strSecondWinner = "borta" Then
intBolean = 0
End If

If strFirstWinner = "hemma" AND strSecondWinner = "borta" Then
intBolean = 1
hp = "-2" : hv = "-1" : hf = "+1" : ho = "+0"
bp = "+2" : bv = "+1" : bf = "-1" : bo = "+0"
End If

If strFirstWinner = "borta" AND strSecondWinner = "hemma" Then
intBolean = 2
hp = "+2" : hv = "+1" : hf = "-1" : ho = "+0"
bp = "-2" : bv = "-1" : bf = "+1" : bo = "+0" 
End If
If strFirstWinner = "ingen" AND strSecondWinner = "hemma" Then
intBolean = 3
hp = "+1" : hv = "+1" : hf = "+0" : ho = "-1"
bp = "-1" : bv = "+0" : bf = "+1" : bo = "-1"
End If
If strFirstWinner = "ingen" AND strSecondWinner = "borta" Then
intBolean = 4
hp = "-1" : hv = "+0" : hf = "+1" : ho = "-1"
bp = "+1" : bv = "+1" : bf = "+0" : bo = "-1"
End If

If strFirstWinner = "hemma" AND strSecondWinner = "ingen" Then
intBolean = 5
hp = "-1" : hv = "-1" : hf = "+0" : ho = "+1"
bp = "+1" : bv = "+0" : bf = "-1" : bo = "+1"
End If

If strFirstWinner = "borta" AND strSecondWinner = "ingen" Then
intBolean = 6
hp = "+1" : hv = "+0" : hf = "-1" : ho = "+1"
bp = "-1" : bv = "-1" : bf = "+0" : bo = "+1"
End If
'****************************************************
'## ~9 ##

If intBolean > 0 Then
'uppdaterar hemmalagets poäng
strUPD1 = "UPDATE Serie Set Vinst = Vinst " & hv & ", "&_
"Forl = Forl " & hf & ", "&_
"Poang = Poang " & hp &", "&_
"Oav = Oav " & ho &", "&_
"Gjorda = Gjorda - "& d_intHresultat &" + "& intHresultat &", "&_
"Inslapp = Inslapp - "& d_intBresultat &" + "& intBresultat &", "&_
"plusminus = plusminus - "& d_intHresultat &" + "& intHresultat &" + "& d_intBresultat &" - "& intBresultat &_
" WHERE Lag = "&strHemmalag&""&_
" AND Klass = "&strSerie&""
Response.Write strUPD1

'uppdaterar bortalagets poäng
strUPD2 = "UPDATE Serie Set Vinst = Vinst " & bv & ", "&_
"Forl = Forl " & bf & ", "&_

"Poang = Poang " & bp &", "&_
"Oav = Oav " & bo &", "&_
"Gjorda = Gjorda - "& d_intBresultat &" + "& intBresultat &", "&_
"Inslapp = Inslapp - "& d_intHresultat &" + "& intHresultat &", "&_
"plusminus = plusminus - "& d_intBresultat &" + "& intBresultat &" + "& d_intHresultat &" - "& intHresultat &_
" WHERE Lag = "&strBortalag&" "&_
" AND Klass = "&strSerie&""
Response.Write strUPD2
Else
'uppdaterar hemmalagets poäng
strUPD1 = "UPDATE Serie SET Gjorda = Gjorda - "& d_intHresultat &" + "& intHresultat &", "&_
"Inslapp = Inslapp - "& d_intBresultat &" + "& intBresultat &", "&_
"plusminus = plusminus - "& d_intHresultat &" + "& intHresultat &" + "& d_intBresultat &" - "& intBresultat &_
" WHERE Lag = "&strHemmalag&" "&_
" AND Klass = "&strSerie&""
Response.Write strUPD1
'uppdaterar bortalagets poäng
strUPD2 = "UPDATE Serie SET Gjorda = Gjorda - "& d_intBresultat &" + "& intBresultat &", "&_
"Inslapp = Inslapp - "& d_intHresultat &" + "& intHresultat &", "&_
"plusminus = plusminus - "& d_intBresultat &" + "& intBresultat &" + "& d_intHresultat &" - "& intHresultat &_
" WHERE Lag = "&strBortalag&" "&_
" AND Klass = "&strSerie&""
Response.Write strUPD2
End If
'Uppdaterar Matchprogrammet
strUPD3 = "UPDATE matchprogram SET Resultat1 = "&intHresultat&", "&_
"Resultat2 = "&intBresultat&" "&_
"WHERE Matchnr = "&intMatchID
Response.Write strUPD3
ObjConn.execute strUPD1 ,,128
ObjConn.execute strUPD2 ,,128
ObjConn.execute strUPD3 ,,128
ObjConn.close
Set ObjConn = Nothing
f_CheckResultat = "Resultatet har uppdaterats"
End Function
%>
solbulleMedlem sedan mars 20015 287 inlägg
#2

Det var lite muket kod ja...

Var är det som det går snett, du förefaller ju göra en mängd olika dbinsättningar/uppdateringar.

Ser även att du skriver ut dina sqlfrågor, hur blir utskrifterna av dom? Ser du inte var felet blir då?

phazer23Medlem sedan feb. 2001256 inlägg
#3

Kanske uttyrkte mig lite luddigt. När jag lägger in tex resultat 2-2 så funkarm allt perfekt och det uppdateras som det skall men så fort jag lägger in tex 10-2 som resultat så tror den att laget som har 10 förlorar och att dom som gjort 2 vann men målskillnaden stämmer..

Dom olika "uppdateringarna" används för att kolla om det är ett nytt resultat som läggs in eller om det är ett ändrat osv..

Se http://web.blueriders.net/seriesystem/prov.asp så förstår du kanske vad jag menar med att det blir konstigt..

Det är endast när man läggar in resultat som är över 9 som detta inträffar

solbulleMedlem sedan mars 20015 287 inlägg
#4

Jo, jag förstår iofs ditt problem, men däremot är det svårt att se i koden vilken sqlsats det blir som genererar felet.

Hur ser dina sqlsatser ut när du skriver ut dom? (När du sänder in ett värde som blir fel.)

phazer23Medlem sedan feb. 2001256 inlägg
#5

Sqlsatserna blir enligt nedan om ja lägger in tex ett resultat på 8-10

UPDATE Serie Set Vinst = Vinst +1, Forl = Forl +0, Poang = Poang +1, Oav = Oav -1, Gjorda = Gjorda - 2 + 8, Inslapp = Inslapp - 2 + 10, plusminus = plusminus - 2 + 8 + 2 - 10 WHERE Lag = 1 AND Klass = 1

UPDATE Serie Set Vinst = Vinst +0, Forl = Forl +1, Poang = Poang -1, Oav = Oav -1, Gjorda = Gjorda - 2 + 10, Inslapp = Inslapp - 2 + 8, plusminus = plusminus - 2 + 10 + 2 - 8 WHERE Lag = 2 AND Klass = 1UPDATE matchprogram SET Resultat1 = 8, Resultat2 = 10 WHERE Matchnr =

men som jag ser på det så måste ju felet ligga nånstan att lägger jag in ett tal på över 9 så tolkas det som ental tex 10 som 1...

solbulleMedlem sedan mars 20015 287 inlägg
#6

Jo precis, frågan är ju bara var det tolkas fel.

Vad är plusminus?

phazer23Medlem sedan feb. 2001256 inlägg
#7

Målskillnad.... ;) skillnaden mellan gjorda och insläppta.. Men det blir rätt ;)

Det är precis som om den någonstans tolkar det fel vem som vinner.....

phazer23Medlem sedan feb. 2001256 inlägg
#8

Hittade felet själv.... ;)

Felet låg i hur jag skickade inte resultatet i "fuktionen"


Response.Write f_checkResultat(intMatchID, intHresultat, intBresultat)

Byttes ut mot


Response.Write f_checkResultat(Cint(intMatchID),Cint(intHresultat), Cint(intBresultat))

så funkade det som det skulle ;)... Tänk vad man blir blind ibland.

Tack för att du försökte hjälpa mig endå Solbulle.....

solbulleMedlem sedan mars 20015 287 inlägg
#9

Där ser man. Schysst att det löste sig. :)

140 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)