Visa första 500 träffarna

Databaser & SQL

9 svar · 265 visningar · startad av HeHo

Medlem sedan apr. 2000277 inlägg
Trådstart#1

Hur modifierar jag min SQL fråga så att man visar bara de 500 första träffarna.
Har testat med count, men får bara felmeddelanden.

strSQL = "SELECT regnr,datum,film,dok,id FROM bil WHERE regnr = '" &strRegnr& "'ORDER BY regnr ASC"
Medlem sedan juni 200032 967 inlägg
#2
strSQL = "SELECT TOP 500 regnr,datum,film,dok,id FROM bil WHERE regnr = '" &strRegnr& "'ORDER BY regnr ASC"

should do the trick...

Medlem sedan apr. 2000277 inlägg
#3

Nähä :(
Det funkar ju inte. Jag får inget felmeddelande, men alla träffar listas, så TOP verkar ignoreras.
Varför?

Medlem sedan juni 200032 967 inlägg
#4

vad använder du för databasmotor?

Medlem sedan apr. 2000277 inlägg
#5

Databasmotor??? Förstår inte riktigt!! Jag har Access 2000 på en Win 2000 med IIS. Databasen skall senare läggas över på en SQL server.

Medlem sedan juni 200032 967 inlägg
#6

ok. antar att du använder asp. lägg gärna upp hela den koden här, så får vi kika lite...

Medlem sedan apr. 2000277 inlägg
#7

Lite nedkortat ser det ut så här!!

<%@ Language=VBScript %>
<%Option Explicit%>
<!--#include file="mallar/connection.asp" -->
<!--#include file="mallar/Root_mall.asp"-->
<!--#include file="mallar/JS_mall.asp"-->
<%
Dim objConnection, objRS, strHTML, strSQL, strRegnr, strFrom, strTom, strDok, strTraff

	strRegnr = Trim(Ucase(Request.Form ("regnr")))
	strFrom=Trim(Request.Form("from"))
	strTom=Trim(Request.Form("tom"))
	strDok=Request.Form("dok")
	strTraff=Trim(Request.Form("traff"))
'************************************
Public sub SQL()

	if not strRegnr="" and strFrom="" and strTom="" and strDok="" then
		strSQL = "SELECT TOP " &strTraff& " regnr,datum,film,dok,id FROM bil WHERE regnr = '" &strRegnr& "'ORDER BY regnr ASC"
	end if	
			
	Call _
		Main(strSQL)

End Sub
'************************************
Public Sub Main(SQL)
	Set objRS = server.CreateObject ("ADODB.RecordSet")
		objRS.Open SQL, objConnection, 3, 2
	
		if objRS.EOF then
			strHTML = strHTML & "<DIV ALIGN=LEFT><B>Din sökning gav inget resultat</B></DIV>" 
		else
			strHTML = strHTML & "" &strTraff& "."
			strHTML = strHTML & "<DIV ALIGN=LEFT>Din sökning gav följande resultat</DIV><P>"_
						  & "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 WIDTH='100%'>"_
						  & "<TR BGCOLOR=#0033cc>"_
						  & "<TD> <B CLASS=bold>Nr</B></TD>"_
						  & "<TD> <B CLASS=bold>Registeringsnummer</B></TD>"_
						  & "<TD> <B CLASS=bold>Datum</B></TD>"_
						  & "<TD> <B CLASS=bold>Film</B></TD>"_
						  & "<TD> <B CLASS=bold>Dokument</B></TD>"_
						  & "<TD ALIGN='center'><B CLASS=bold>Antal</B></TD>"_
						  & "<TD WIDTH=50><IMG SRC='images/trans.gif'></TD>"_
						  & "</TR>"
			do while not objRS.EOF
				intAnt = intAnt + 1
				strHTML = strHTML & "<FORM METHOD=post ACTION=shop/add.asp>"_
						  & "<TR BGCOLOR=#e9f0f2>"_
						  & "<TD> " &intAnt& "</TD>"_
						  & "<TD>" &objRS("regnr")& "</TD>" _
						  & "<TD>" &objRS("datum")& "</TD>"_
						  & "<TD>" &objRS("film")& "</TD>"_
						  & "<TD> <A HREF=javascript:oppnaFonster('" &objRS("dok")& "');>" &objRS("dok")& "</A></TD>"_
						  & "<TD ALIGN=center WIDTH=40><INPUT NAME=Antal SIZE=1 VALUE=1  ALIGN=center></TD>"_
						  & "<TD WIDTH=50 ALIGN=center><INPUT TYPE=hidden NAME=id VALUE=" &objRS("id")& "><INPUT ID=submit1 BORDER=0 NAME='Placera i korgen' LANGUAGE=javascript onclick=submit1_onclick() SRC='images/kop.gif' NAME=I1 ALT='Placera i korgen' BORDER=0 TYPE=image WIDTH=90 HEIGHT=16 CLASS=submit></TD>"_
						  & "</TR></FORM>"
				objRS.MoveNext
			Loop
				strHTML = strHTML & "</TABLE>"_
						  & "<P> </P>"_
						  & "<A HREF=sok.asp>Ny enkel sökning</A> &#0124; <A HREF=av_sok.asp>Ny avancerad sökning</A>"
						  
		end if
End sub
'************************************
Call Init()
Call SQL()
Call CleanUP()
%>

'***********CONNECTION.ASP***********
<%
Public Sub Init()
	Set objConnection = Server.CreateObject ("ADODB.Connection")
		objConnection.Open Application("Connection1_ConnectionString")
End Sub
'************************************
Public Sub CleanUp()
	objRS.Close()
	set objRS = Nothing
	objConnection.Close()
End Sub

%>

[Redigerat av HeHo den 26 mar 2001]

Medlem sedan dec. 200012 464 inlägg
#8

TOP 500 i Access fungerar så att den tar de 500 första + de som är lika (med avseende på de kolumner som ingår i order by tolkar jag det som enligt den något oklara dokumentationen). Det du gör order by på innehåller ju endast ett värde så den fyller ingen funktion. Du kan ju testa att göra


strSQL = "SELECT TOP 500 regnr,datum,film,dok,id FROM bil WHERE regnr = '" &strRegnr& "'ORDER BY id ASC"
Medlem sedan apr. 2000277 inlägg
#9

Kanon! Så enkelt det kan vara för de som kan :)
Jag ändrade Order By till datum istället och då fungerar det ju.
Tack så mycket för hjälpen, LarsG och @nders.

Medlem sedan juni 200032 967 inlägg
#10

från mitt håll: varsågod! :)

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