Vill inte räkna

ASP

17 svar · 288 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Trådstart#1

Vad är det som är fel på denna koden?

SQL = "UPDATE smclads SET visad_ggr=visad_ggr+1 WHERE id=" & smclrs("id")
smclrs.Execute(SQL)

Jag har provat att ha kolumnen "visad_ggr" som int, nchar och numeric.
Är det koden som är fel (Står rätt med response.write SQL) eller är det fel på tabellen i ms-sql?

Medlem sedan dec. 200012 464 inlägg
#2

SQL-syntaxen är korrekt och kolumnen borde vara integer(i alla fall numerisk), men det jag sitter och undrar på är att du använder smclrs när du gör execute. När du bygger din SQL så använder du ju den som om den vore ett recordset.

Medlem sedan sep. 2000667 inlägg
#3

Hur skulle du skriva?

Jag har bara kopierat annan text från scriptet.

Medlem sedan dec. 200012 464 inlägg
#4

När man gör en execute så behöver man ett connectionobject (eller commandobject går också bra)

  set connection = server.createobject("adodb.connection")

  connection.open "dsn=..."
  set smclrs = ...

  sqlStr = SQL = "UPDATE smclads SET visad_ggr=visad_ggr+1 WHERE id=" & smclrs("id")
  connection.execute sqlStr

ungefär så

Medlem sedan sep. 2000667 inlägg
#5

Jag har skrivit det innan, men ville posta för mycket här bara... :-)

Men den plussar ändå inte?

Nu är kolumnen int, men det händer ändå inget.

Medlem sedan dec. 200012 464 inlägg
#6

Ok, först kan du lägga in en koll på att någon post verkligen uppdateras


connection.execute sqlStr,rows,128
if  rows = 0 then
    response.write "Inga rader uppdaterades" & <br>
end if

Ett annat problem kan vara att det ligger null och inte 0 i kolumnen visad_ggr och i så fall så kommer det att förbli null då null + 1 blir null.

Man kan kontrollera om ett fält är null i SQL med villkoret

columnName is null
Medlem sedan sep. 2000667 inlägg
#7

jag använder Enterprise Manager för att kolla på databasen. De gamla annonserna har ju fått värdet null, men den nya som jag gjort, och bara kollar har värdet 0. (Alla nya som sätts in får det)

Jag har även lagt in samma script på om man svarar på annonsen. Det funkar perfekt. Den visar hur många som svarat på annonsen.

Medlem sedan dec. 200012 464 inlägg
#8

Hur är det nu? Uppdateras det någon rad? Om inte så kanske du kan lägga upp lite mer kod så ...

Medlem sedan sep. 2000667 inlägg
#9

Jag använder precis samma kod på båda scripten, på det ena stället så funkar det.

Kan det ha nånting att göra med att jag lägger koden i ett case? I det fall det inte fungerar alltså.

Medlem sedan dec. 200012 464 inlägg
#10

Tja, då låter det ju mer som om man aldrig utför den kod där man gör update. Dvs att det är någon glitch i logiken i din case.

Medlem sedan sep. 2000667 inlägg
#11

Hur ska man bära sig åt då?

Kan man inte ha
<%
kod
%>

var man än vill ha den?

Typ t.om i en tabell? Nu har jag ju inte det, men som exempel...

Medlem sedan dec. 200012 464 inlägg
#12

Jo, det går ju bra att stoppa in kod inline så där. Det man bör tänka på är att VB är känsligt för radbrytningar, dvs man kan inte dela upp statement på flera rader utan att ha fortsättningstecken och inte heller kan man ha flera statements på samma rad utan att ha ett : emellan.

Medlem sedan sep. 2000667 inlägg
#13

Men vad är det som inte funkar då?

lite tradigt när det inte går som man vill! :-/

Medlem sedan dec. 200012 464 inlägg
#14

Du verkar vara ovilliig att visa någon kod ;) . Har lite svårt att något vettigt annars.

Medlem sedan sep. 2000667 inlägg
#15

Det är bara det att det är fetmycket kod! Det är ett köpt script som jag blivit ombedd att lägga till lite nya funktioner i.

ska jag maila dig det istället? Det är för mycket att visa här.

Medlem sedan dec. 200012 464 inlägg
#16

Ok, men jag hinner nog inte titta så mycket i kväll. Måste ju jobba lite också.
Min mailadress finns i min profil,
klicka på ikonen med ansiktet och frågetecknet.

Medlem sedan dec. 200012 464 inlägg
#17

Okej, jag fick ditt mail. Efter det så har jag inte lyckats starta min mailklient (jag hann dock ta ut en papperskopia) så jag får lägga ett svar här.

Det som jag kan säga är ju att i början på din sub så har du satt upp
on error resume next
men du har ju ingen egen felhantering vid dina anrop där du gör din update. Det kan ju gå fel där så du kan ju lägga in en on error goto 0 innan.

Sen så undrar jag varför du öppnar en ny connection, du har ju redan en (smcldataconn).

Annars så får du väl försöka lägga in lite traceutskrifter på lämpliga ställen.

Samamnfattningsvis, så har jag inte sett något definitivt fel.

Medlem sedan sep. 2000667 inlägg
#18

Hmmm. Skickades mailet som HTML? Sorry! Tänkte inte på det!!

Öppnade en ny connection senare för att prova. Som jag sa.

Kan du rekommendera hur man ska skriva för att det ska bli rätt? Kan man lägga det innan in error resume next?

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)