webForumDet fria alternativet

Skriva ut information från tre tabeller från A -> Ö

ASP

3 svar · 358 visningar · startad av peppar

Medlem sedan dec. 2001873 inlägg
Frågan#1

Har tre tabeller

  1. medlemsregister med personinformation (typ förnamn, efternamn tlefon osv.)
  2. med_kategorier (odlare, uppfödare, förädlare, matlagare, övrig resurs)
    3 med_origin (här lagras vilken medlem som tillhör vilka kategorier)

När jag skriver ut innehållet i mitt recordset så för jag på vissa poster "UNDANTAG INTRÄFFADE" och jag förstår inte vad det beror på.... Kan det vara innerjoinen i frågan?
Hur skall frågan se ut om jag tar bort KRAVET med innerjoinen?
Eller kan det vara något annat?

Jag vill skriva ut informationen om alla medlemmar och jag använder denna fråga mot databasen

sql = 	"SELECT"&_
	" medlemsregister.*, med_origin.*, med_kategorier.*, *"&_
	" FROM"&_
	" ((medlemsregister INNER JOIN"&_
	" med_origin ON medlemsregister.usrId = med_origin.usr_USRORIGIN)"&_
	" LEFT OUTER JOIN"&_
	" med_kategorier ON med_origin.usr_KATEGORI = med_kategorier.usr_KATID)"&_
	" WHERE usrID <> "& dummy &" ORDER BY usrEfternamn ASC"
set rs = conndb1.execute(sql)

Jag har försökt skriva ut alla poster för att rada upp alla namn snyggt och prydligt såhär:

A
Anders Andersson OÖ
B
Bertil Bertilsson M

osv... koden jag använder ser ut såhär:

strPreviousLetter = "" 
for j = 75 to 83
	do while chr(j) = ucase(left(rs("usrEfternamn"), 1)) or chr(197) = ucase(left(rs("usrEfternamn"), 1)) 
	
		if rs("usrID") <> z then response.write "<br>"
		z = rs("usrID")
		if not q = rs("usrID") then
			If UCase(Left(RS("usrEfternamn"), 1)) <> strPreviousLetter Then
				strPreviousLetter = UCase(Left(RS("usrEfternamn"), 1))     
				Response.Write("<br><b>" & strPreviousLetter & "</b><br />")
			End If
			response.write "<span class=""style1"">" & rs("usrFornamn") &" "& rs("usrEfternamn") &" <b>"& ucase(left(rs("med_kategorier.usr_kategori"),1)) &"</b></span>"
		else
			response.write "<span class=""style1""><b>"& ucase(left(rs("med_kategorier.usr_kategori"),1)) &"</b></span>"
		end if
		q = rs("usrID")
	
rs.movenext
loop
next
Medlem sedan dec. 2001873 inlägg
#2

Knepigt, knepigt... Jag får undantagsfelet när jag kommer till bokstaven W i alfabetet. fram tills dess går det utmärkt att skriva ut på mitt sätt.
Det konstiga är att posten som innhåller W i databasen ser ut på samma vis som föregående poster.

Medlem sedan dec. 2001873 inlägg
#3

Anledningen varöfr jag delar upp recordsetet med forloopen för att kolla vilken bokstav man är i i loopen är att jag vill dela upp den utskrivna listan i två spalter.
Men det verkar inte vara så lätt som jag trodde.
Såhär skriver jag ut listan från a -> ö

do until rs.eof
	if rs("usrID") <> z then response.write "<br>"
	z = rs("usrID")
	if not q = rs("usrID") then
		response.write rs("usrFornamn") &" "& rs("usrEfternamn") &" <b>"& ucase(left(rs("med_kategorier.usr_kategori"),1)) &"</b>"
	else
		response.write "<b>"& ucase(left(rs("med_kategorier.usr_kategori"),1)) &"</b> "
	end if
	q = rs("usrID")
	
rs.movenext
loop

Hmmm? Kan man kolla igenom hur många poster det finns och sedan dela på två för att skriva ut?

Medlem sedan dec. 2001873 inlägg
#4

peppar skrev:

Hmmm? Kan man kolla igenom hur många poster det finns och sedan dela på två för att skriva ut?

Jepp, precis så

Jag kollar hela recordsettet för att se hur många utav alfabetets bokstäver som finns representerade i tabellem medlemsregister.

det talet delar jag med två och skriver ut klabbet såhär:

<table width="100%" border="0">
       <tr>
         <td width="198" valign="top">
		  <%
		    rsFirstHalf = 0
		  	do until rs.eof
		  					
				if rs("usrID") <> z then response.write "<br>"
					z = rs("usrID")
					
					'##-- Vida varje namn skriv ut ALLA bockade kategorier
					call usrKatFunc(ucase(left(rs("med_kategorier.usr_kategori"),1)))
					
					if not q = rs("usrID") then
						If UCase(Left(RS("usrEfternamn"), 1)) <> strPreviousLetter Then
							strPreviousLetter = UCase(Left(RS("usrEfternamn"), 1)) 
							
							'##-- Om vi nått halvvägs så splitta och skriv ut i kolummn två (tre egentligen)   
							if rsFirstHalf = strFirstHalf then
								response.write "</td>" & vbCrlf
								response.write "<td width=""20"" valign=""top"" style=""background-image:url(bilder/linje_1pt_grey.gif); background-repeat:repeat-y;"">&nbsp;</td>" & vbCrlf
								response.write "<td width=""226"" valign=""top""> "& vbCrlf
							else
							end if	
							'##-- Skriv ut varje bokstav i alfabetet fetmarkerad 
							Response.Write("<br><b>" & strPreviousLetter & "</b><br />")
							rsFirstHalf = rsFirsthalf + 1
								
									
						End If
						response.write "<span class=""style1"">" & rs("usrFornamn") &" "& rs("usrEfternamn") &" "& usr_kategori &"</span>"
					else
						response.write "<span class=""style1""> "& usr_kategori &" </span>"
					end if
					q = rs("usrID")
					
			rs.movenext
			loop %>
		</td>
       </tr>
     </table>

Schwing!

514 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
380 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)