pRob3Medlem sedan maj 2003151 inlägg Hur gör man för att denna kod ska funka till en Access databas (funkar fint till MySQL databas)? Alla Sessions o så finns.
strSQL = "select count( * ) from inloggningar where orgnr = '" & Session("orgnr") & "'"
intLogs = Connect.execute( strSQL )( 0 )
if intLogs <= 10 then
strSQL = "insert into inloggningar(orgnr, datum, status, ip) values('" & Session("orgnr") & "','"& NOW() &"','0','"& Request.ServerVariables("REMOTE_ADDR") &"')"
else
strSQL = "select orgnr from inloggningar where orgnr ='" & Session("orgnr") & "' order by datum LIMIT 1"
set Rs33 = Connect.execute( strSQL )
strSQL = "update inloggningar set datum = '"& NOW() &"' where orgnr = " & rs33( "orgnr" )
Rs33.Close : Set Rs33=Nothing
end if
Connect.execute( strSQL )
Får det här fel messet:
Microsoft JET Database Engine error '80040e57'
Overflow
/loggain_do.asp, line 56
Rad 56:
Connect.execute( strSQL )
SPiNMedlem sedan mars 20007 896 inlägg select orgnr from inloggningar where orgnr ='" & Session("orgnr") & "' order by datum LIMIT 1
Ändra till:
SELECT TOP 1 orgnr FROM inloggningar WHERE ornnr = '" & Session( "orgnr" ) & "' ORDER BY datum"
Hela koden skulle jag skriva så här:
strSQL = "select count( * ) from inloggningar where orgnr = '" & Session("orgnr") & "'"
intLogs = Connect.execute( strSQL )( 0 )
if intLogs <= 10 then
strSQL = "insert into inloggningar(orgnr, datum, status, ip) values('" & Session("orgnr") & "','"& NOW() &"','0','"& Request.ServerVariables("REMOTE_ADDR") &"')"
else
strSQL = "UPDATE inloggningar SET datum = '" & NOW & "' WHERE orgnr IN (SELECT TOP 1 orgnr FROM inloggningar WHERE orgnr = '" & Session( "orgnr" ) & "' ORDER BY datum ASC)"
end if
Connect.execute( strSQL )
Då slipper du skapa ett extra Recordset. Jag tror att det ska fungera. :)
pRob3Medlem sedan maj 2003151 inlägg När jag prövar din kod så får jag detta fel mess:
Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.
/loggain_do.asp, line 54
@ndersMedlem sedan juni 200032 969 inlägg Använder man Access bör man omsluta datumvärden med brädgårdar.
Annars; vad är det för datatyp på de olika fälten? Text-/-strängtyper skall omslutas med apostrofer, taltyper skall inte omslutas med någon typ av literaler.
Mvh
pRob3Medlem sedan maj 2003151 inlägg orgnr är av typen tal och datum är datum/tid.
@ndersMedlem sedan juni 200032 969 inlägg Oki, bort med apostroferna runt värdet för orgnr då, och in med brädgårdar istället för apostrofer runt datumvärdet.
I vissa versioner av Access (2000+ ?) går det dock bra att använda apostrofer.
Mvh
pRob3Medlem sedan maj 2003151 inlägg Förstår inte vad du menar
SPiNMedlem sedan mars 20007 896 inlägg strSQL = "select count( * ) from inloggningar where orgnr = " & Session("orgnr")
intLogs = Connect.execute( strSQL )( 0 )
if intLogs <= 10 then
strSQL = "insert into inloggningar(orgnr, datum, status, ip) values(" & Session("orgnr") & ",#"& NOW() &"#,'0','"& Request.ServerVariables("REMOTE_ADDR") &"')"
else
strSQL = "UPDATE inloggningar SET datum = #" & NOW & "# WHERE orgnr IN (SELECT TOP 1 orgnr FROM inloggningar WHERE orgnr = " & Session( "orgnr" ) & " ORDER BY datum ASC)"
end if
Connect.execute( strSQL )
Så, menar han. Notera brädgårdarna ( # ) runt datumvärdet och att jag inte använder enkelfnuttar runt tal-värdet för 'orgnr'.
@ndersMedlem sedan juni 200032 969 inlägg I frågorna i SPiNs inlägg har han lagt apostrofer runt organisationsnummervärdet. Ta bort dem.
StevePMedlem sedan mars 2003772 inlägg Så här nånting..
strSQL = "select count( * ) from inloggningar where orgnr = " & Session("orgnr")
intLogs = Connect.execute( strSQL )( 0 )
if intLogs <= 10 then
strSQL = "insert into inloggningar(orgnr, datum, status, ip) values(" & Session("orgnr") & ",#"& NOW() &"#,'0','"& Request.ServerVariables("REMOTE_ADDR") &"')"
else
strSQL = "UPDATE inloggningar SET datum = #" & NOW & "# WHERE orgnr IN (SELECT TOP 1 orgnr FROM inloggningar WHERE orgnr = " & Session( "orgnr" ) & " ORDER BY datum ASC)"
end if
Connect.execute( strSQL )
Engine^Medlem sedan dec. 20003 887 inlägg Från och med Access 2002 fungerar det bra med apostrofer runt Datumtyper.
Din INSERT blir såhär
strSQL = "INSERT INTO inloggningar(orgnr, datum, status, ip) VALUES(" & Session("orgnr") & ", #" & Now & "#, '0', '" & _
Request.ServerVariables("REMOTE_ADDR") &"')"
Och din UPDATE blir såhär
strSQL = "UPDATE inloggningar SET datum = #" & Now & "# WHERE orgnr IN (SELECT TOP 1 orgnr FROM inloggningar WHERE orgnr = " & _
Session( "orgnr" ) & " ORDER BY datum)"
pRob3Medlem sedan maj 2003151 inlägg får fortfarande detta fel mess:
Microsoft JET Database Engine error '80040e57'
Overflow
/loggain_do.asp, line 54
orgnr skall vara typen text. Det finns ingen vits med att ha den som tal
SPiNMedlem sedan mars 20007 896 inlägg Hur stor Integer är Session( "orgnr" )? Vilken Connect.Execute() får du fel på?
Engine^Medlem sedan dec. 20003 887 inlägg
SPiN skrev:
Hur stor Integer har värdet Session( "orgnr" )?
En bättre fråga kan vara: Hur stort värde kan Session("orgnr") anta?
@ndersMedlem sedan juni 200032 969 inlägg Organisationsnummer är så stora så de är för stora för datatypen heltal, så det måste nog lagras som text som nämnts ovan. Att i asp-kod eller dylikt omvandla till long enligt StevePs förslag har ingen betydelse. Det är ändå en sträng som skickas som SQL-fråga.
Mvh
StevePMedlem sedan mars 2003772 inlägg Det tänkte jag inte på.
Kanske bättre att köra text som datatyp som clarkbones föreslog och slänga in apostroferna i queryn igen?