webForumDet fria alternativet

Ful-koda

ASP

15 svar · 1 779 visningar · startad av PBF

Medlem sedan mars 200657 inlägg
Frågan#1

Hej.

Har bestämt mig för att ful-koda följande:

Set objRSNews = objConn.Execute("SELECT TOP 1\* FROM News Where Team='Hammarby'")
Set objRSNews = objConn.Execute("SELECT TOP 1\* FROM News Where Team='Masarna'")

	If objRSNews.Eof Then
		Message="\<br /\>\<font color=""red""\>\<b\>Det finns inga nyheter skrivna av något lag ännu.\</b\>\</font\>"
		Response.Write(""& Message &"")
	Else

// all kod som loopas ut...

Skall alltså hämta ut den senaste nyheten från varje lag i en databas, men inte ens detta fungerar. Den skriver bara ut den senaste nyheten från Masarna, fast det finns en nyhet för Hammarby också. Hur fixar jag detta?

Medlem sedan juni 20003 076 inlägg
#2

Du har minst två möjligheter för att lösa detta. :)
1. Använd olika namn på dina recordset: objRsNews1, objRsNews2
2. Sätt en variabel emellan databashämtningarna:

Set objRSNews = objConn.Execute("SELECT TOP 1* FROM News Where Team='Hammarby'")

Dim HammarbyText
HammarbyText = objRsNews("Texten")
Set objRsNews = Nothing

Set objRSNews = objConn.Execute("SELECT TOP 1* FROM News Where Team='Masarna'")

...
Medlem sedan dec. 19996 721 inlägg
#3

...och en TOP 1 är inte intressant om du inte kompletterar med en ORDER BY.

Jag vet inte vad du använder för DBMS, men en sökning i stil med denna plockar ut den senast inlagda nyheten (baserat på id) för varje lag

SELECT * FROM News where newsid IN (SELECT MAX(newsid) FROM News GROUP BY Team)
Medlem sedan mars 200657 inlägg
#4

Emission:
I.o.m. att jag kör SQL Server och har då detta ID:
C2EF6B43-9B75-4316-983C-145656C99EA6
i tabellen så får jag följande felmeddelande:

Operand data type uniqueidentifier is invalid for max operator.

Medlem sedan okt. 20041 556 inlägg
#5

...i och med. Du måste ju inte använda ett replikerings-id. Du kan ju ha en vanlig räknar e också, om du vill göra som emission föreslog villsäga.

Medlem sedan mars 200657 inlägg
#6

Travoni skrev:

...i och med. Du måste ju inte använda ett replikerings-id. Du kan ju ha en vanlig räknar e också, om du vill göra som emission föreslog villsäga.

Så det går inte att lösa på något annat sätt?
Jag kör med uniqueIdentifier med Rowguid, hur gör jag den till vanlig räknare? Skall ID då vara primärnycket och Allow:a nulls?
Eller finns det fler förslag?

Medlem sedan juni 200032 967 inlägg
#7

Det borde gå alldeles utmärkt att använda ett datumfält istället för en räknare. Ett datumfält antar jag att du har på dina nyheter?

Medlem sedan mars 200657 inlägg
#8

@nders skrev:

Det borde gå alldeles utmärkt att använda ett datumfält istället för en räknare. Ett datumfält antar jag att du har på dina nyheter?

Hej.
Den skriver nu ut alla poster. Lustigt.

Medlem sedan juni 200032 967 inlägg
#9

Hur ser din kod ut nu då?

Medlem sedan mars 200657 inlägg
#10

Set objRSNews = objConn.Execute("SELECT * FROM News where Date IN (SELECT MAX(Date) FROM News GROUP BY Team)")

Medlem sedan mars 200657 inlägg
#11

Någon?

Medlem sedan sep. 2006867 inlägg
#12

Testa:

SELECT n1.*
      FROM News n1, (SELECT Team, max(Date) AS max_date FROM News GROUP BY Team) n2
      WHERE n1.Team = n2.Team AND n1.Date = n2.max_date
Medlem sedan mars 200657 inlägg
#13

headbug skrev:

Testa:

SELECT n1.*
      FROM News n1, (SELECT Team, max(Date) AS max_date FROM News GROUP BY Team) n2
      WHERE n1.Team = n2.Team AND n1.Date = n2.max_date

Tjenare.
Detta resulterar olyckligtvis i följande felmeddelande:
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.

Och jag kör på följande kod:
http://www.aspsidan.se/code/default.asp?c=6761

Detta felmesset får jag naturligtvis på rad 3.

Medlem sedan juli 200659 inlägg
#14

<offtopic> PBF varför funkar inte din hemsida (pbfsoft.com) för? :S </offtopic>

Medlem sedan juni 200032 967 inlägg
#15

PBF skrev:

Tjenare.
Detta resulterar olyckligtvis i följande felmeddelande:
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.

Och jag kör på följande kod:
http://www.aspsidan.se/code/default.asp?c=6761

Detta felmesset får jag naturligtvis på rad 3.

Nu vet jag inte om det är detta som ger felet, men det är alltid bra att stava rätt.

Set objRSNews = objConn.[b]Exeucte[/b] ....
Medlem sedan mars 200657 inlägg
#16

Tjenare.

Anders: Det var det som orsakade felet, tack för din observation.
Nu är det dock så att den skriver ut alla nyheter ändå. Vad är det som ställer till detta?

Ha det gött!

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