webForumDet fria alternativet

komplicerad select sats/utskriftsloop

2 svar · 145 visningar · startad av rollo

rolloMedlem sedan aug. 2001203 inlägg
#1

Hej!

Jag hade 30 tabeller innan, nu siktar jag på 5! Nu har jag en huvudtabell som heter db_h som innehåller räknar, id, identifierare, avd, samt en andra identifierare vad. db_i är innehållstabellen som innehåller 1 räknare, id, som referens till db_h samt fält för inmatning.

Men, vid mitt första test så fick jag lite problem med looparna som skriver ut resultat på asp-sidan.

	tmp_nyheter = "'Nyheter'"
	SQL = "SELECT * FROM db_h WHERE vad = "& tmp_nyheter

	Set DataConn = Server.CreateObject("ADODB.Connection")
	DataConn.Open Application("koppling")
    Set cmdTemp = Server.CreateObject("ADODB.Command")
    Set a2 = Server.CreateObject("ADODB.Recordset")
	cmdTemp.CommandText = SQL
    Set cmdTemp.ActiveConnection = DataConn
    a2.Open cmdTemp, , 1, 1

Denna söker genom db_h efter nyheter för olika avdelningar, funkar bra.

		<% Do until a2.EOF
		
		
		tmp_datum = date
		tmp_tid = time
		tmp_tid2 = Left((time),5)
		tmp_test = tmp_datum + tmp_tid
		tmp_test2 = "'"& tmp_test &"'"
		tmp_id = a2("id")

		SQL2 = "SELECT * FROM db_i WHERE t_id = "& tmp_id
		SQL2 = SQL2 &"AND falt04 <= "& tmp_test2
		SQL2 = SQL2 &"ORDER BY falt04 desc"

		Set DataConn = Server.CreateObject("ADODB.Connection")
		DataConn.Open Application("koppling")
		Set cmdTemp = Server.CreateObject("ADODB.Command")
		Set a1 = Server.CreateObject("ADODB.Recordset")
		cmdTemp.CommandText = SQL2
		Set cmdTemp.ActiveConnection = DataConn
		a1.Open cmdTemp, , 1, 1		
		%>

      	<% i = 1 %>
		<% Do until a1.EOF%>
		<%i = i + 1%>

<%=a1("falt01")%>
    <%
	a1.MoveNext
	Loop	
	%>
		<%
		a2.MoveNext
		Loop	
		%>

Här hämtar jag nyheterna som är lagrade i db_i och identifieras med t_id som är en referens till id i db_h

Finns det något sätt att få a1-loopen att skriva ut resultatet efter min ORDER BY ?

Nu går den på den första selectsatsens resultat, dvs ordningen på avdelningarna som nyheterna tillhör!

rollo

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Join är lösningen på alla dina problem.

tmp_nyheter = "'Nyheter'"
tmp_datum = date
tmp_tid = time
tmp_tid2 = Left((time),5)
tmp_test = tmp_datum + tmp_tid
tmp_test2 = "'"& tmp_test &"'"
SQL = " select * from db_i " & _
 " where t_id in (SELECT id  FROM db_h WHERE vad = "& tmp_nyheter & ")" & _
 " AND falt04 <= "& tmp_test2 & _
 " ORDER BY falt04 desc"
Set DataConn = Server.CreateObject("ADODB.Connection")
DataConn.Open Application("koppling")
Set cmdTemp = Server.CreateObject("ADODB.Command")
Set a2 = Server.CreateObject("ADODB.Recordset")
cmdTemp.CommandText = SQL
Set cmdTemp.ActiveConnection = DataConn
a2.Open cmdTemp, , 1, 1
i = 0

Do until a2.EOF
i = i + 1 %>
<%=a2("falt01")%>
<%
a2.MoveNext

Loop 
%>

Så blir det lite mindre kod

------------------
essentitia preter non sans multiplicandum

rolloMedlem sedan aug. 2001203 inlägg
#3

YES!!

Den funkade!

Du är klippa LarsG!

Om du varit här, och tjej, hade jag kysst dig!

122 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)