webForumDet fria alternativet

Jämföra två databaser

ASP

3 svar · 221 visningar · startad av klementin

Medlem sedan aug. 2001117 inlägg
Frågan#1

Hej!
Har två stycken access databaser. I den ena (users.mdb) finns alla användare som har tillgång till sidan och i den andra (vote.mdb) finns det hur dom har röstat (om dom har röstat) i en fråga. Mitt problem är nu att när jag försöker hämtat ur alla användare ur users.mdb och kolla om dom har röstat eller inte så plockar den bara ur dom som har röstat, alltså jag vill att alla användare skall visas och OM dom har rösta så ska deras namn markeras i fetstil (eller nått). Detta låter ju inte så krångligt men jag får inte till det riktigt.
Tack på förhand

	<%

	s_date_current = Date()

	s_dbpath_vote = "E:\vote\votes.mdb"
	s_dbpath_user = "E:\Customers\1692240\db\secured02\users.mdb"

	Set Conn_user = Server.CreateObject("ADODB.Connection")
	Conn_user.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s_dbpath_user & ";"

	Set Conn_vote = Server.CreateObject("ADODB.Connection")
	Conn_vote.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s_dbpath_vote & ";"

	arr = Array ("Konsult", "UnderKonsult", "Säljare", "Administration", "VD", "Styrelse")

	For a = 0 To uBound (arr)

		strArray = arr(a)

		If strArray = "Konsult" Then strArrayText = "Konsulter"
		If strArray = "UnderKonsult" Then strArrayText = "Underkonsulter"
		If strArray = "Säljare" Then strArrayText = "Säljare"
		If strArray = "Administration" Then strArrayText = "Administration"
		If strArray = "VD" Then strArrayText = "VD"
		If strArray = "Styrelse" Then strArrayText = "Styrelse"

		SQL_user = "SELECT Web_Username, Web_displayname FROM Users WHERE Work_Assignment = '" & strArray & "' ORDER BY Web_Displayname ASC "
		Set rs_user = Conn_user.Execute(SQL_user) 

		Response.write "<U>" & strArrayText & "</U><BR>"

		If Not rs_user.EOF Then

			Do Until rs_user.EOF

				SQL_vote = "SELECT * FROM v_usr "
				Set rs_vote = Conn_vote.Execute(SQL_vote) 

				If Not rs_vote.EOF Then

					If rs_vote("v_user_name") = rs_user("Web_Username") Then		

						Response.write "<B>" & rs_user("Web_Username") & "</B><BR>"

					Else

						Response.write rs_user("Web_Username") & "<BR>"

					End If
				
				End If

				rs_user.MoveNext				

			Loop

		End If

	Next

	Conn_vote.Close()
	Set Conn_vote = Nothing

	Conn_user.Close()
	Set Conn_user = Nothing

%>
Medlem sedan nov. 20017 144 inlägg
#2

Lägg i allt i samma databas i stället, med flera tabeller, det kommer att bli mycket enklare att skapa sql:er då.

Medlem sedan mars 20015 287 inlägg
#3

Precis, du kommer slippa en massa strul samt nästlade loopar.

Medlem sedan aug. 2001117 inlägg
#4

Fixade det. Det var inte så konstigt, däremot så blir ju prestandan rutten men i mitt fall gör detta inget då detta skript kommer att köras sällan.

	<%

	Dim s_dbpath_vote
	Dim s_dbpath_user
	Dim s_scr

	s_dbpath_vote = "E:\votes.mdb"
	s_dbpath_user = "E:\users.mdb"

	Set Conn_user = Server.CreateObject("ADODB.Connection")
	Conn_user.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s_dbpath_user & ";"

	Set Conn_vote = Server.CreateObject("ADODB.Connection")
	Conn_vote.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s_dbpath_vote & ";"

	SQL_user = "SELECT Web_Username, Web_Displayname FROM Users ORDER BY Web_Displayname ASC "
	Set rs_user = Conn_user.Execute(SQL_user) 

	If Not rs_user.EOF Then

		Do Until rs_user.EOF

			SQL_vote = "SELECT * FROM v_usr WHERE v_user_name = '" & rs_user("Web_Username") & "' "
			Set rs_vote = Conn_vote.Execute(SQL_vote) 
 
			If Not rs_vote.EOF Then

				s_scr = s_scr & "<B>" & rs_user("Web_Displayname") & "</B><BR>"

			Else

				s_scr = s_scr & rs_user("Web_Displayname") & "<BR>"

			End If

			rs_user.MoveNext				

		Loop

	End If

	Conn_vote.Close()
	Set Conn_vote = Nothing

	Conn_user.Close()
	Set Conn_user = Nothing

	Response.Write s_scr

%>
280 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
140 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)