Avatar billede ktoft Nybegynder
15. april 2003 - 14:04 Der er 22 kommentarer og
2 løsninger

Session

Har lidt problemer - Håber der er en derude der har den gyldne løsning.
Jeg er ved, at lave en side hvor man kan se stillingen for en fodboldpulje.

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e07'

[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.

/kimtoft_2003/fodbold/test2.asp, linje 10


<%
puljenr = Request("SAESON")

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open MM_connkimtoft_STRING

sql = "SELECT tblHOLD.tblSAESON, tblHOLD.tblHOLD FROM tblHOLD WHERE (((tblHOLD.tblSAESON)=" & puljenr & "));"
Set puljeopbygrs = myConn.Execute(sql)
If Not (puljeopbygrs.EOF Or puljeopbygrs.BOF) Then
puljeopbygrs.MoveFirst
Do While Not puljeopbygrs.EOF

holdnr = puljeopbygrs("HOLD")

' Sammentæller antal mål og point scoret på hjemmebane
sql = "SELECT tblKAMPE.tblHJEMME, Sum(tblKAMPE.tblMAALHJEMME) AS SumOftblMAALHJEMME, Sum(tblKAMPE.tblMAALUDE) AS SumOftblMAALUDE, Sum(tblKAMPE.tblPOINTHJEMME) AS SumOftblPOINTHJEMME FROM tblKAMPE WHERE (((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblSAESON)=" & puljenr & ")) GROUP BY tblKAMPE.tblHJEMME HAVING (((tblKAMPE.tblHJEMME)=" & holdnr & "));"
Set kamptotal = myConn.Execute(sql)
   
    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    insertSQL = "INSERT INTO tblSTILLING (tblSESSION, tblHOLD, tblMAALSCORET, tblMAALIMOD, tblPOINT) VALUES (" & Session.SessionID & ", " & holdnr & ", " & kamptotal.Fields.Item("SumOftblMAALHJEMME").Value & ", " & kamptotal.Fields.Item("SumOftblMAALUDE").Value & ", " & kamptotal.Fields.Item("SumOftblPOINTHJEMME").Value & ")"
    Else
    insertSQL = "INSERT INTO tblSTILLING (tblSESSION, tblHOLD, tblMAALSCORET, tblMAALIMOD, tblPOINT) VALUES (" & Session.SessionID & ", " & holdnr & ", 0, 0, 0)"
    End If
    myConn.Execute(insertSQL)   
kamptotal.Close()

' Deffinering af nøgleværdi for holdet
sql = "SELECT TOP 1 tblSTILLING.tblID FROM tblSTILLING ORDER BY tblSTILLING.tblID DESC;"
Set opstrs = myConn.Execute(sql)
If Not (opstrs.EOF Or opstrs.BOF) Then OTholdID = opstrs("tblID") Else OTholdID = 0
opstrs.Close()

' Sammentæller antal mål og point scoret på udebane
sql = "SELECT tblKAMPE.tblUDE, Sum(tblKAMPE.tblMAALHJEMME) AS SumOftblMAALHJEMME, Sum(tblKAMPE.tblMAALUDE) AS SumOftblMAALUDE, Sum(tblKAMPE.tblPOINTUDE) AS SumOftblPOINTUDE FROM tblKAMPE WHERE (((tblKAMPE.SPILLET)=True) AND ((tblKAMPE.SAESON)=" & puljenr & ")) GROUP BY tblKAMPE.tlbUDE HAVING (((tblKAMPE.tblUDE)=" & holdnr & "));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
   
    'Registrer antal mål scoret på udebane
    sql = "SELECT tblMAALSCORET FROM tblSTILLING WHERE tblID = " & OTholdID
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tblMAALSCORET") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblMAALSCORET = " & (tillaegvar + kamptotal.Fields.Item("SumOftblMAALUDE").Value) & " WHERE tblID = " & OTholdID )
    tilaegrs.Close()
   
    'Registrer antal mål gået ind på udebane
    sql = "SELECT tblMAALIMOD FROM tblSTILLING WHERE tblID = " & OTholdID 
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tblMAALIMOD") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblMAALIMOD = " & (tillaegvar + kamptotal.Fields.Item("SumOftblMAALHJEMME").Value) & " WHERE tblID = " & OTholdID )
    tilaegrs.Close()
   
    'Registrer antal point på udebane
    sql = "SELECT tblPOINT FROM tblSTILLING WHERE tblID = " & OTholdID
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tblPOINT") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblPOINT = " & (tillaegvar + kamptotal.Fields.Item("SumOftblPOINTUDE").Value) & " WHERE tblID = " & OTholdID)
    tilaegrs.Close()
   
    End If
kamptotal.Close()
   
' Sammentæller antal vundende kampe på hjemmebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblHJEMME)=" & holdnr & ") AND (([tblKAMPE]![tblMAALHJEMME]-[tblKAMPE]![tblMAALUDE])>0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    myConn.Execute("UPDATE tblSTILLING SET tblVUNDNE = " & kamptotal.Fields.Item("CountOftblID").Value & " WHERE tblID = " & OTholdID)
    End If
kamptotal.Close()

' Sammentæller antal vundende kampe på udebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblUDE)=" & holdnr & ") AND (([tblKAMPE]![tblMAALUDE]-[tblKAMPE]![tblMAALHJEMME])>0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    sql = "SELECT tblVUNDNE FROM tblSTILLING WHERE tblID = " & OTholdID
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tblVUNDNE") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblVUNDNE = " & (tillaegvar + kamptotal.Fields.Item("CountOftblID").Value) & " WHERE tblID = " & OTholdID)
    tilaegrs.Close()
    End If
kamptotal.Close()

' Sammentæller antal uafgjorte kampe på hjemmebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblHJEMME)=" & holdnr & ") AND (([tblKAMPE]![tblMAALHJEMME]-[tblKAMPE]![tblMAALUDE])=0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    myConn.Execute("UPDATE tblSTILLING SET tblUAFGJORTE = " & kamptotal.Fields.Item("CountOftblID").Value & " WHERE tblID = " & OTholdID)
    End If
kamptotal.Close()

' Sammentæller antal uafgjorte kampe på udebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblUDE)=" & holdnr & ") AND (([tblKAMPE]![tblMAALUDE]-[tblKAMPE]![tblMAALHJEMME])=0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    sql = "SELECT tblUAFGJORTE FROM tblSTILLING WHERE tblID = " & OTholdID
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tblUAFGJORTE") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblUAFGJORTE = " & (tillaegvar + kamptotal.Fields.Item("CountOftblID").Value) & " WHERE tblSESSION = " & Session.SessionID & " And tblHOLD = " & holdnr)
    tilaegrs.Close()
    End If
kamptotal.Close()

' Sammentæller antal tabte kampe på hjemmebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblHJEMME)=" & holdnr & ") AND (([tblKAMPE]![tblMAALHJEMME]-[tblKAMPE]![tblMAALUDE])<0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    myConn.Execute("UPDATE tblSTILLING SET tblTABTE = " & kamptotal.Fields.Item("CountOftblID").Value & " WHERE tblID = " & OTholdID)
    End If
kamptotal.Close()

' Sammentæller antal tabte kampe på udebane
sql = "SELECT Count(tblKAMPE.tblID) AS CountOftblID FROM tblKAMPE WHERE (((tblKAMPE.tblSAESON)=" & puljenr & ") AND ((tblKAMPE.tblSPILLET)=True) AND ((tblKAMPE.tblUDE)=" & holdnr & ") AND (([tblKAMPE]![tblMAALUDE]-[tblKAMPE]![tblMAALHJEMME])<0));"
Set kamptotal = myConn.Execute(sql)

    If Not (kamptotal.EOF Or kamptotal.BOF) Then
    sql = "SELECT tblTABTE FROM tblSTILLING WHERE tblSESSION = " & Session.SessionID & " And tblHOLD = " & holdnr
    Set tilaegrs = myConn.Execute(sql)
    If Not (tilaegrs.BOF Or tilaegrs.EOF) Then tillaegvar = tilaegrs("tabt") Else tillaegvar = 0
    myConn.Execute("UPDATE tblSTILLING SET tblTABTE = " & (tillaegvar + kamptotal.Fields.Item("CountOftblID").Value) & " WHERE tblID = " & OTholdID)
    End If
kamptotal.Close()

' Sammentæller antal kampe i alt
'sql = "SELECT Count(tblkampe.kampid) AS CountOfkampid FROM tblkampe WHERE (((tblkampe.puljeid)=" & puljenr & ") AND ((tblkampe.udeholdid)=" & holdnr & ") AND ((tblkampe.spillet)=True)) OR (((tblkampe.puljeid)=" & puljenr & ") AND ((tblkampe.hjemmeholdid)=" & holdnr & ") AND ((tblkampe.spillet)=True));"
'Set kamptotal = myConn.Execute(sql)
'    If Not (kamptotal.EOF Or kamptotal.BOF) Then
'    myConn.Execute("UPDATE tbltblSTILLING SET antalkampe = " & kamptotal.Fields.Item("CountOfkampid").Value & " WHERE id = " & OTholdID)
'    End If
'kamptotal.Close()


puljeopbygrs.MoveNext
Loop
End If

myConn.Close()
%>
Avatar billede medions Nybegynder
15. april 2003 - 14:05 #1
Og hvilken linje er linje 10?

//>Rune
Avatar billede ktoft Nybegynder
15. april 2003 - 14:06 #2
Set puljeopbygrs = myConn.Execute(sql)
Avatar billede medions Nybegynder
15. april 2003 - 14:06 #3
sql = "SELECT tblHOLD.tblSAESON, tblHOLD.tblHOLD FROM tblHOLD WHERE tblHOLD.tblSAESON =" & puljenr

Prøv sådan...

//>Rune
Avatar billede medions Nybegynder
15. april 2003 - 14:07 #4
Evt. prøv sådan her:

sql = "SELECT tblHOLD.tblSAESON, tblHOLD.tblHOLD FROM tblHOLD WHERE (((tblHOLD.tblSAESON)='" & puljenr & "'));"

//>Rune
Avatar billede ktoft Nybegynder
15. april 2003 - 14:10 #5
ADODB.Recordset fejl '800a0cc1'

Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.

/kimtoft_2003/fodbold/test2.asp, linje 15


holdnr = puljeopbygrs("HOLD")
Avatar billede medions Nybegynder
15. april 2003 - 14:12 #6
Det er fordi recorden ikke findes!

//>Rune
Avatar billede ktoft Nybegynder
15. april 2003 - 14:13 #7
Hvor skal den oprettes henne?
Avatar billede medions Nybegynder
15. april 2003 - 14:15 #8
Well, i din database!!!

Tror du bliver nødt til at lave en validering på om recorden findes, hvis den gør så skal den udføre dine events. Ellers skal den skrive at dine record ikke findes!

Det gøres sådan her:

If Not puljeopbygrs.EOF Then
  '...Udfør dine funktionener
Else
  Response.Write("Recorden findes ikke!!")
End If

//>Rune
Avatar billede eagleeye Praktikant
15. april 2003 - 14:16 #9
Den sidste fejl er fordi du bruger et kolonnenavn som ikke er hendte med ud med din SQL sætning. Du bruger:

puljeopbygrs("HOLD")

men selecter ikke en kolonne med navnet HOLD du hendter via din SQL:

tblHOLD.tblSAESON, tblHOLD.tblHOLD

Så enten skal det være:
holdnr = puljeopbygrs("tblHOLD")

Eller skal du tilføje den kolonne til din SQL:

sql = "SELECT tblHOLD.HOLD, tblHOLD.tblSAESON, tblHOLD.tblHOLD FROM tblHOLD WHERE (((tblHOLD.tblSAESON)='" & puljenr & "'));"
Avatar billede ktoft Nybegynder
15. april 2003 - 14:24 #10
Sidste spørgsmål, så skulle jeg kunne give point.
Hvad er aggregatfunktion
Avatar billede eagleeye Praktikant
15. april 2003 - 14:29 #11
Tænker du på SQL? Så det Count, Sum, Avg som bruger til at regne med.
Avatar billede ktoft Nybegynder
15. april 2003 - 14:39 #12
Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "tblUDE" som en del af en aggregatfunktion.

/kimtoft_2003/fodbold/test2.asp, linje 37
Avatar billede eagleeye Praktikant
15. april 2003 - 14:41 #13
Har du en GROUP BY ?

Så tilføj  tblUDE til GROUP BY eller lav en GROUP BY i SQL sætningnen.
Avatar billede ktoft Nybegynder
15. april 2003 - 14:42 #14
GROUP BY tblKAMPE.tlbUDE HAVING (((tblKAMPE.tblUDE)='" & holdnr & "'));"
Avatar billede eagleeye Praktikant
15. april 2003 - 14:47 #15
hm ok. Hvordan ser hele din SQL så ud?
Avatar billede ktoft Nybegynder
15. april 2003 - 14:51 #16
Står i mit første indlæg
Avatar billede eagleeye Praktikant
15. april 2003 - 15:09 #17
Du har skrevet:  tblKAMPE.tlbUDE  lige efter GROUP BY.

Andre steder hedder kolonne tblUDE altså b og l er byttet rundt, sådan her: tblKAMPE.tblUDE
Avatar billede ktoft Nybegynder
15. april 2003 - 15:19 #18
Der er for få parametre. Der var ventet 2.
Avatar billede eagleeye Praktikant
15. april 2003 - 16:37 #19
Hej.. Jeg var lige væk længere tid...

Prøv at udskrive den SQL sætning og tjek at der kommer noget ind hvor der står  holdnr  og  puljenr. Er kolonnerne SAESON og tblUDE defineret som tal?


' Sammentæller antal mål og point scoret på udebane
sql = "SELECT tblKAMPE.tblUDE, Sum(tblKAMPE.tblMAALHJEMME) AS SumOftblMAALHJEMME, Sum(tblKAMPE.tblMAALUDE) AS SumOftblMAALUDE, Sum(tblKAMPE.tblPOINTUDE) AS SumOftblPOINTUDE FROM tblKAMPE WHERE (((tblKAMPE.SPILLET)=True) AND ((tblKAMPE.SAESON)=" & puljenr & ")) GROUP BY tblKAMPE.tblUDE HAVING (((tblKAMPE.tblUDE)=" & holdnr & "));"

Response.write sql
'Set kamptotal = myConn.Execute(sql)
Avatar billede ktoft Nybegynder
15. april 2003 - 19:46 #20
Det er tal.

Og den finder de rigtige data når jeg udskriver sql sætningen.
Avatar billede eagleeye Praktikant
15. april 2003 - 19:55 #21
Så er det måske et kolonnenavn som er skrevet forkert i forhold til hvad den hedder i databasen.
Avatar billede ktoft Nybegynder
15. april 2003 - 20:33 #22
Det sidste den brokker sig over er denne linje "tblSTILLING.Open()"

<%
Dim tblSTILLING
Dim tblSTILLING_numRows

Set tblSTILLING = Server.CreateObject("ADODB.Recordset")
tblSTILLING.ActiveConnection = MM_connkimtoft_STRING
tblSTILLING.Source = "SELECT tblSTILLING.tblID, tblSTILLING.tblSESSION, tblSTILLING.tblPOINT, [tblSTILLING]![tblMAALSCORET]-[tblSTILLING]![tblMAALIMOD] AS maalscore, tblSTILLING.tblMAALSCORET, [tblSTILLING]![tblVUNDNE]+[tblSTILLING]![tblTABTE]+[tblSTILLING]![tblUAFGJORTE] AS totalkampe, tblSTILLING.tblKAMPE, tblSTILLING.tblMAALIMOD, tblSTILLING.tblHOLD, tblHOLD.tblHOLD, tblHOLD.tblMITHOLD, tblSTILLING.tblVUNDNE, tblSTILLING.tblTABTE, tblSTILLING.tblUAFGJORTE  FROM tblSTILLING INNER JOIN tblHOLD ON tblSTILLING.tblHOLD = tblHOLD.tblID  WHERE (((tblSTILLING.tblSESSION)=" + Replace(tblSTILLING__MMColParam, "'", "''") + "))  ORDER BY tblSTILLING.tblPOINT DESC , [tblSTILLING]![tblMAALSCORET]-[tblSTILLING]![tblMAALIMOD] DESC , tblSTILLING.tblMAALSCORET DESC;"
tblSTILLING.CursorType = 0
tblSTILLING.CursorLocation = 2
tblSTILLING.LockType = 1
tblSTILLING.Open()

tblSTILLING_numRows = 0
%>
Avatar billede ktoft Nybegynder
15. april 2003 - 20:48 #23
Har selv fundet løsningen til det sidste problem.

TAKKER UTROLIG MANGE GANGE - FORNEM INDSATS!!!
Avatar billede medions Nybegynder
15. april 2003 - 21:14 #24
Anytime :o)
Thx 4 Poinz

//>Rune
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester