webForumDet fria alternativet

Select count beskymmer

ASP

9 svar · 215 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Tja!

Jag har en select sats som ser ut så här:

m_strSQL = "SELECT TOP " & intPageSize & ", p.AnvId, p.req_Username, " & _
"d.MessId, d.Subject, d.Replies, d.[Date], d.AnvId, d.Icon, d.LastUpdate " & _
"(select count(*) from Debatt d where d.ReplyId = d.MessId) AS Antal " & _
"FROM Debatt d " & _
"INNER JOIN Profil p " & _
"on d.AnvId = p.AnvId " & _
"WHERE orgthread = true ORDER BY d.LastUpdate DESC "

och hämtar värdena så här

strUsername = arrRecords(1,I)
MessId = arrRecords(2,I)
strSubject = arrRecords(3,I)
Replies = arrRecords(4,I)
dteDate = arrRecords(5,I)
strIcon = arrRecords(7,I)
LastUpdate = arrRecords(8,I)

men jag lyckas inte få ut Antal från counten, hur hämtar jag värdet antal?
Jag använder inte en do loop utan arrays i pagingen, någon som vill hjälpa till?

mvh Jörgen

------------------
*** Det brukar lösa sig sade hon som satt och sket i vasken ***

Medlem sedan juni 200032 967 inlägg
#2
antal = ubound(arrRecords,2)

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Medlem sedan feb. 20012 412 inlägg
#3

Det blidde inte riktigt bra för jag avslutar Forslingan med det:


For I = intStartID To ((intStartID + intPageSize) -1) 

strUsername = arrRecords(1,I)
MessId = arrRecords(2,I)
strSubject = arrRecords(3,I)
Replies = arrRecords(4,I)
dteDate = arrRecords(5,I)
strIcon = arrRecords(7,I)
LastUpdate = arrRecords(8,I)
antal = ubound(arrRecords,2)

Response.Write "Alla värden"

If I = UBound(arrRecords,2) Then Exit For

Next

Kan jag avsluta med If I = UBound(arrRecords,3) Then Exit For istället eller hur gör jag då?

mvh
Jörgen

------------------
*** Det brukar lösa sig sade hon som satt och sket i vasken ***

Medlem sedan juni 200032 967 inlägg
#4

jag antar att det är ett recordset du skapat en array av mha .getrows().

problemet är är alltså att din array (det som normalt är ett recordset) aldrig innehåller fler än 10 poster, så oberoende av hur många poster som uppfyller villkoren i sql-frågan är antal <=10 ?

låt mig tänka...

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Medlem sedan feb. 20012 412 inlägg
#5

Jo, det är precis som du tror, som vanligt :-)


' recordset för att hämta alla poster --
			Set m_objRS = m_objConn.Execute(m_strSQL)
			
				If Not m_objRS.EOF Then
					m_arrRecords = m_objRS.GetRows
					getRecords = m_arrRecords
				End If

' hur många poster ska visas per sida --
intPageSize = 20

' hämta alla records, hämtas med metoden getrows och returneras 
' som en array.

arrRecords = getRecords

' hur många records finns det totalt --
intTotalRecords = UBound(arrRecords,2)

' hur många sidor finns det i recordsetet 
intTotalPages = countPages(intTotalRecords, intPageSize)

' vilken post är den första --
intStartID = getStartID(intPageSize, intPage)

Alltså bestämmer jag med intPageSize = 20 att 20 poster ska hämtas per sida.

mvh Jörgen

------------------
*** Det brukar lösa sig sade hon som satt och sket i vasken ***

[Redigerat av jorgen den 29 maj 2001]

Medlem sedan feb. 20012 412 inlägg
#6

Jo, det är precis som du tror, som vanligt :-)


' hur många poster ska visas per sida --
intPageSize = 20

' hämta alla records, hämtas med metoden getrows och returneras 
' som en array.

arrRecords = getRecords

' hur många records finns det totalt --
intTotalRecords = UBound(arrRecords,2)

' hur många sidor finns det i recordsetet 
intTotalPages = countPages(intTotalRecords, intPageSize)

' vilken post är den första --
intStartID = getStartID(intPageSize, intPage)

Alltså bestämmer jag med intPageSize = 20 att 20 poster ska hämtas per sida.

mvh Jörgen

------------------
*** Det brukar lösa sig sade hon som satt och sket i vasken ***

Medlem sedan mars 20002 836 inlägg
#7

hello,

har ingen icq för tillfället ... =( ... den vill inte funka ordentligt.

Varför annvänder du SELECT TOP?

Den ska inte behövas om jag minns rätt.

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

Medlem sedan mars 20002 836 inlägg
#8

Använder du denna, den senaste funktionen att hämta posterna med:

'## -- hämta alla poster --
Function getRecords
	Dim m_objConn
	Dim m_strConnString
	Dim m_strSQL
	Dim m_objRS
	Dim m_arrRecords
	
	'## -- provider & sökväg till db, DSN etc. --
	m_strConnString = "DSN"
		
	'## -- skapa connection object och öppna upp databasen --
	Set m_objConn = Server.CreateObject("ADODB.Connection")
		m_objConn.Open m_strConnString
		
		'## -- sql-fråga för att hämta alla poster --
		m_strSQL = "SELECT MessId, ReplyId, [Date], Subject, Comment " & _
			"FROM Debatt " & _
			"WHERE MessId = " & Request("MessId") & _
			"OR ReplyId = " & Request("MessId") & _
			" ORDER BY [Date] ASC"
						
			'## -- recordset för att hämta alla poster --
			Set m_objRS = m_objConn.Execute(m_strSQL)
			
				If Not m_objRS.EOF Then
					m_arrRecords = m_objRS.GetRows
					getRecords = m_arrRecords
				End If
				
				'## -- clean up --
				m_objRS.Close
			Set m_objRS = Nothing
			
		m_objConn.Close
	Set m_objConn = Nothing

End Function

om det är den ... så ska du inte använda TOP " & intPageSize & " i select uttrycket ..

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

Medlem sedan feb. 20012 412 inlägg
#9

Okey, då ska jag inte använda TOP, men problemet kvarstår. Att hämta värdet Antal?

mvh Jörgen

------------------
*** Det brukar lösa sig sade hon som satt och sket i vasken ***

Medlem sedan mars 20002 836 inlägg
#10

om du inte använder dig av TOP så har du totalt antal poster i: UBound(arrRecords,2)

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)