webForumDet fria alternativet

Räkna antalet kolumner i ett recordset

ASP

5 svar · 207 visningar · startad av ekke_t

Medlem sedan juli 2001203 inlägg
Frågan#1

Tjena!

Jag har ett lite problem...

Jag ska loopa igenom ett recordset och skriva ut en kommaseparerad lista på allt i den... efter varje rad i recordsetet ska det vara ett radbryt...

Problemet är att jag behöver veta antalet kolumner i recordsetet för att veta när radbryt ska ske... jag vill göra lösningen generisk så att man inte behöver ändra i koden så fort man har lagt till en kolumn i tabellen...

Här är lite kod...

dim objConn, objRS, strSQL

set objConn = server.CreateObject("adodb.connection")
objConn.Open getDB()

set objRS = server.CreateObject("adodb.recordset")

stype = Request.QueryString("type")
if stype = "teaser" then
	strSQL = "SELECT * FROM tblEmail_eml ORDER BY intId"
	antal = 2
elseif stype = "submit" then
	strSQL = "SELECT * FROM tblSubmit_sub ORDER BY intId"
	antal = 10
end if
objRS.Open strSQL, objConn

rows = objRS.GetRows

i = 1

for each row in rows
	if i = antal then
		Response.Write(row & vbcrlf)
		i = 1
	else
		Response.Write(row & ",")
		i = i+1
	end if
next

Som ni ser har jag specificerat variabeln antal men detta vill jag slippa...

Hur ska jag göra??

Medlem sedan mars 2001196 inlägg
#2

Jag skulle ta reda på det genom att kolla i recordset't med (efter öppnandet av objRS): antal = objRS.Fields.count

Medlem sedan juli 20003 825 inlägg
#3

rows = objRS.GetRows

Du har det ju där ju!

antal = UBound(rows,2)
antal = UBound(rows,2) + 1

(+1 är beroende på vad som åsyftas...)

Medlem sedan juli 20003 825 inlägg
#4

Från ett projekt... Klistra in din data i stället

'' ## LOOP ALL POSTS
'IF IsArray(listUnsentOrders) THEN
'myRow = listUnsentOrders
'FOR j = 0 to UBound(myRow, 2)
'	FOR i = 0 to UBound(myRow, 1)
'		response.write i & "," & j & "> " & myRow(i, j) & " " & vbCRLF
'	NEXT
'	IF NOT j = UBound(myRow, 2) THEN response.write "<BR><BR>"
'NEXT
'END IF
Medlem sedan juli 2001203 inlägg
#5

det Eclipse föreslog räknar väl bara antalet rader i recordsetet och inte kolumner som jag ville...

däremot det lolukokasos föreslog fungerade utmärkt! Tack så mycket :birp

Medlem sedan mars 20002 836 inlägg
#6

men, man kan även räkna UBound på den första dimensionen istället för den andra som i eclipse förslag:

antal = UBound(rows,1) + 1  '## -- index börjar på 0 och ej 1 därför + 1 --

så får du hur många fält det är :e

cya,
PatrikB

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)