webForumDet fria alternativet

Senaste inloggningarna (MySQL till Access)

28 svar · 691 visningar · startad av pRob3

pRob3Medlem sedan maj 2003151 inlägg
#1

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
#2
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
#3

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
#4

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
#5

orgnr är av typen tal och datum är datum/tid.

@ndersMedlem sedan juni 200032 969 inlägg
#6

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
#7

Förstår inte vad du menar

SPiNMedlem sedan mars 20007 896 inlägg
#8
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
#9

I frågorna i SPiNs inlägg har han lagt apostrofer runt organisationsnummervärdet. Ta bort dem.

StevePMedlem sedan mars 2003772 inlägg
#10

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
#11

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
#12

får fortfarande detta fel mess:
Microsoft JET Database Engine error '80040e57'

Overflow

/loggain_do.asp, line 54

clarkbonesMedlem sedan feb. 20013 023 inlägg
#13

orgnr skall vara typen text. Det finns ingen vits med att ha den som tal

SPiNMedlem sedan mars 20007 896 inlägg
#14

Hur stor Integer är Session( "orgnr" )? Vilken Connect.Execute() får du fel på?

pRob3Medlem sedan maj 2003151 inlägg
#15

Långt heltal

Engine^Medlem sedan dec. 20003 887 inlägg
#16

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?

pRob3Medlem sedan maj 2003151 inlägg
#17

mellan 8 och 13 siffror

StevePMedlem sedan mars 2003772 inlägg
#18

Om du använder dig av

clng(Session( "orgnr" ))
@ndersMedlem sedan juni 200032 969 inlägg
#19

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
#20

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?

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