/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL med "syntaksfejl i updatesætningen" ?
Fra : Jakob Munck


Dato : 03-09-01 07:17

I min lille nye chat vil jeg gerne have, at brugere der har glemt at logge
sig ud løbende stryges af deltagerlisten, og det sker ved at sætte variablen
"chatOnline" til 0 når forskellen mellem deres indlogningstidspunkt
("DateDiff('n', Now, datoInd)") og nu ("Now") er mere end 60 minutter. Jeg
har derfor skrevet følgende SQL-sætning:

---------------------------------------

sql2 = "UPDATE bruger " & _
"SET chatOnline = 0," & _
" WHERE ('DateDiff('n', Now, datoInd)') > 60"
set rs = Conn.Execute(sql2)

------------------------------------------

Men den giver den - for mig - svært forståelige fejlmelding, at der er "en
syntaksfejl i updatesætningen" . Ja, men hvilken fejl ?

Hvem kan se den?
Skal koden laves på en helt anden måde?

v.h.
Jakob Munck



 
 
Jakob Munck (03-09-2001)
Kommentar
Fra : Jakob Munck


Dato : 03-09-01 07:34

Jeg har forsøgt at forbedre koden lidt ved at skrive "MinuteDiff" i stedet
for "DateDiff", ved at skrive "chatStart" (tekstvariabel med
starttidspunktet i db). Men fejlmeldingen er stadig den samme som før. Nu er
koden:

-------------------------------------------------------

sql2 = "UPDATE bruger " & _
"SET chatOnline = 0," & _
" WHERE ('MinuteDiff('n', Now, chatStart)') > 60"
set rs = Conn.Execute(sql2)


---------------------------------------

Hvad er galt?

v.h.
Jakob Munck



Jørn Andersen (03-09-2001)
Kommentar
Fra : Jørn Andersen


Dato : 03-09-01 08:34

On Mon, 3 Sep 2001 08:34:26 +0200, "Jakob Munck"
<jakob.munck@tdcadsl.dk> wrote:

Hej Jakob,

>Jeg har forsøgt at forbedre koden lidt ved at skrive "MinuteDiff" i stedet
>for "DateDiff",

Er MinuteDiff din egen funktion, for den eksisterer mig bekendt ikke i
VBScript?

>ved at skrive "chatStart" (tekstvariabel med
>starttidspunktet i db). Men fejlmeldingen er stadig den samme som før. Nu er
>koden:
>
>-------------------------------------------------------
>
>sql2 = "UPDATE bruger " & _
> "SET chatOnline = 0," & _

Jeg tror det er kommaet i linien herover, der driller.

> " WHERE ('MinuteDiff('n', Now, chatStart)') > 60"

- og så vil jeg heller ikke tro, at du skal have de to anførselstegn
yderst i den store parantes, da du jo vil have et tal, så du kan
sammenligne med 60.

Hvis det heller ikke hjælper, så prøv at indsætte her:

Response.Write sql2
Response.End
- og tag et kig på SQL'en, så kan det være der falder en ti-øre :)

>set rs = Conn.Execute(sql2)


Din samlede SQL bliver:

sql2 = "UPDATE bruger" & _
" SET chatOnline = 0" & _
" WHERE (DateDiff('n', Now, chatStart)) > 60;"


Good luck,
Jørn

--
Jørn Andersen
Brønshøj

Jakob Munck (03-09-2001)
Kommentar
Fra : Jakob Munck


Dato : 03-09-01 17:04

> sql2 = "UPDATE bruger" & _
> " SET chatOnline = 0" & _
> " WHERE (DateDiff('n', Now, chatStart)) > 60;"
>


Hej Jørn

jeg har testet din kode, og den giver ingen fejlmelding, men den laver til
gengæld heller ikke det den skal, nemlig at sætte chatOnline = 0.

Response.write giver følgende udskrift:

UPDATE bruger SET chatOnline = 0 WHERE (DateDiff('n', Now, chatStart)) > 1;

Det får mig til at tænke, om jeg skal definere chatStart, som er et felt i
databasen, et andet sted inden SQL, for jeg får indtrykket af, at serveren
slet ikke fortolker koden inden for paranteserne !

v.h.
Jakob Munck



Jakob Munck (03-09-2001)
Kommentar
Fra : Jakob Munck


Dato : 03-09-01 17:29

Hej igen Jørn Andersen

jo, koden virkede faktisk udmærket, men den måler bare tidsforskellen
negativt, så man skal vende < om, så virker det.

Tusind tak for (altid) kloge hjælp.

v.h.
Jakob Munck



Anders Lund (03-09-2001)
Kommentar
Fra : Anders Lund


Dato : 03-09-01 15:13

"Jakob Munck" <jakob.munck@tdcadsl.dk> skrev i en meddelelse
news:3b931eca$0$233$edfadb0f@dspool01.news.tele.dk...
> I min lille nye chat vil jeg gerne have, at brugere der har glemt at logge
> sig ud løbende stryges af deltagerlisten, og det sker ved at sætte
variablen
> "chatOnline" til 0 når forskellen mellem deres indlogningstidspunkt
> ("DateDiff('n', Now, datoInd)") og nu ("Now") er mere end 60 minutter. Jeg
> har derfor skrevet følgende SQL-sætning:

Du laver da vel ikke en chat basseret på en database???? Det er yoyalt
onsvagt, de er en database slet egnet til. Brug istedet session og
applikation variabler.

Forstår jeg dig ret vil du have at når now er en time senere end
indlogningstidspunktet vil du have brugeren fjernet? HVAD så hvís en per son
sidder og chartter i en time? Skal han så også bare smides af. Ville det
ikke være bedre at bruge en tidsgrænse på ca 10 minutter fra sidste besked
personen har skrævet. Men et godt råd er alså, lad vær med at brug en
database til en chat!



--
Mvh
Anders Lund
webmaster@123grin.dk
---------------------------------------------------
Webmaster for GEnet.dk, Jyllands bedste netparty



Jakob Munck (03-09-2001)
Kommentar
Fra : Jakob Munck


Dato : 03-09-01 17:11

>
> Du laver da vel ikke en chat basseret på en database???? Det er yoyalt
> onsvagt, de er en database slet egnet til. Brug istedet session og
> applikation variabler.
>

Når jeg forsøger at lave den med en database i stedet for de nævnte
objekter, så er det fordi jeg gerne vil logge (gemme) indskrivningen i
chatten, og - ikke mindst - fordi jeg véd at der i starten vil gå 1-2 timer
mellem hver af gæsterne kommer i chatten, og så skal indskrivningen de laver
blive stående. Hvis man bruger applikation-objektet, så slettes
indtastninger hver gang serveren restartes (og måske også på andre
tidspunkter), hvilket før at indlæggene ikke gemmes, som jeg ønsker det.

Det er mit argument for at bruge en database, og jeg mener at andre har
gjort det samme valg, f.eks. på Dating.dk.



> Forstår jeg dig ret vil du have at når now er en time senere end
> indlogningstidspunktet vil du have brugeren fjernet? HVAD så hvís en per
son
> sidder og chartter i en time? Skal han så også bare smides af. Ville det
> ikke være bedre at bruge en tidsgrænse på ca 10 minutter fra sidste besked
> personen har skrævet. Men et godt råd er alså, lad vær med at brug en
> database til en chat!
>

Ja, det bedste er, hvis brugerne logger sig af på regulær vis, ved at trykke
på "Slut chat" knappen, for så slettes de fra brugerlisten straks. Men der
er desværre også brugere, der ikke "gider" klikke på denne knap, og bare
bruger browseren eller sitens generelle menusystem, vil at forlade chatten.
Når de gør det, så står de stadig på brugerlisten, selv om de rent faktisk
er et helt andet sted på siten. Så må man jo have en regel for hvornår de
slettes som brugere. Og kan man lave den på anden vis end ved at sætte en
tidsgrænse?

v.h.
Jakob Munck



Anders Lund (04-09-2001)
Kommentar
Fra : Anders Lund


Dato : 04-09-01 13:53

> Ja, det bedste er, hvis brugerne logger sig af på regulær vis, ved at
trykke
> på "Slut chat" knappen, for så slettes de fra brugerlisten straks. Men der
> er desværre også brugere, der ikke "gider" klikke på denne knap, og bare
> bruger browseren eller sitens generelle menusystem, vil at forlade
chatten.
> Når de gør det, så står de stadig på brugerlisten, selv om de rent faktisk
> er et helt andet sted på siten. Så må man jo have en regel for hvornår de
> slettes som brugere. Og kan man lave den på anden vis end ved at sætte en
> tidsgrænse?
Der er faktsik en meget smart måde. Nu nævner du selv deting.dk, de bruger
et popup vindu til at logge brugeren ud. Det er laver i javascript og ser
såden ud:

OnBeforeUnload="self.window.open
('chat/logoffGlob.asp','MLO','left=0,top=0,height=10,width=10,resizable=no,s
tatus=no,toolbar=no,menubar=no,location=no')"

'chat/logoffGlob.asp', skal så bare skiftes ud med en asp side der logger
brugeren ud, så skal du bare sætte script stumpen ind i det body tag på din
chat side.


--
Mvh
Anders Lund
webmaster@123grin.dk
---------------------------------------------------
Webmaster for GEnet.dk, Jyllands bedste netparty



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste