webForumDet fria alternativet

join problem

ASP

18 svar · 357 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

kan nån hitta felet efter wheresatsen?

("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers, tblUsers_imail WHERE reciever= Session("username")")
Medlem sedan nov. 20017 144 inlägg
#2
'Är reciver av typen tal:
("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers, tblUsers_imail WHERE reciever="& Session("username"))

'Är reciver av typen text:
("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers, tblUsers_imail WHERE reciever='"& Session("username")&"'")
Medlem sedan apr. 2004778 inlägg
#3

Du måste ha en koppling mellan tblUsers och tblUsers_imail i din SELECT. Lägg till en JOIN.
Får du nåt felmeddelande? I så fall vad?

Medlem sedan feb. 20032 027 inlägg
#4

När jag nu loggar in med mottagaren så finns det 1 mail i databasen, men jag ser 5 likadana när jag kollar i "inboxen"

och när jag loggar in med en som INTE ska ha mail så får jag undantag inträffade.

Hela koden är

<%Set readmail=objConn.Execute("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers, tblUsers_imail WHERE reciever='"& Session("username")&"'")%>

	<%
	If  Session("username") = readmail("reciever") Then
		do until readmail.eof
	%>
		<a href="read.asp?userID=<%=readmail("userID")%>&headline=<%=readmail("headline")%>&message=<%=readmail("message")%>&datum=<%=readmail("datum")%>&sender=<%=readmail("sender")%>"><%=readmail("headline")%></a><br>
		<%
		readmail.MoveNext
		Loop
		%>
	<%End If%>
Medlem sedan apr. 2004778 inlägg
#5

Du använder två tabeller i din SELECT men har som jag skrev tidigare inte gjort någon koppling mellan dom. Du måste lägga till en JOIN ON eller en AND tblUsers.kolnamn = tblUsers_imail.kolnamn

Medlem sedan feb. 20032 027 inlägg
#6

Exakt samma problem med
SELECT tblUsers.username, tblUsers.username, tblUsers_imail.* FROM tblUsers, tblUsers_imail

Medlem sedan feb. 20032 027 inlägg
#7

skrev fel, förlåt

det blir samma med SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.username = tblUsers_imail.reciever

Medlem sedan apr. 2004778 inlägg
#8

Hur ser tabellerna ut?

Medlem sedan feb. 20032 027 inlägg
#9

Har en tabell tblUsers där all grundläggande info finns och tblUses_imail där alla fält för imailen finns. username i tabell 1 är i relation med reciever i tabell 2. Glömde kriva innan att nu får jag bara ett mail som det ska vara, men jag vet inte varför undantag inträffar när nån som inte har mail kollar i sin inbox

Medlem sedan apr. 2004778 inlägg
#10

Det undantaget kommer säkerligen av att du inte har någon koll för när resultatet är tomt.

Medlem sedan feb. 20032 027 inlägg
#11

försökte lösa det med
<%Set readmail=objConn.Execute("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.username = tblUsers_imail.reciever WHERE reciever='"& Session("username")&"'")%>

\<%
If  Session("username") = readmail("reciever") Then
	do until readmail.eof
%\>
	\<a href="read.asp?userID=\<%=readmail("userID")%\>&headline=\<%=readmail("headline")%\>&message=\<%=readmail("message")%\>&datum=\<%=readmail("datum")%\>&sender=\<%=readmail("sender")%\>"\>\<%=readmail("headline")%\>\</a\>\<br\>
	\<%
	readmail.MoveNext
	Loop
	%\>
	\<%ElseIf readmail("reciever") = "" Then%\>
	Det finns inga mail i din inkorg :-(
\<%End If%\>

men det är fortfarande undantag som inträffar

Medlem sedan apr. 2004778 inlägg
#12

På vilken rad får du undantaget?

Medlem sedan feb. 20032 027 inlägg
#13

på raden If Session("username") = readmail("reciever") Then

Medlem sedan apr. 2004778 inlägg
#14

Med andra ord så försöker du kolla ett värde i readmail innan du kollar om den är EOF. Inte så konstigt att du får fel när det är tomt.
Du måste lägga den IF frågan innanför din EOF loop.

Medlem sedan feb. 20032 027 inlägg
#15

men om jag kollar först med
<%Set readmail=objConn.Execute("SELECT tblUsers.username, tblUsers_imail.* FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.username = tblUsers_imail.reciever WHERE reciever='"& Session("username")&"'")
If readmail("reciever") = "" Then%>
Det finns inga mail i din inkorg :-(
<%ElseIf Session("username") = readmail("reciever") Then
do until readmail.eof
%>
<a href="read.asp?userID=<%=readmail("userID")%>&headline=<%=readmail("headline")%>&message=<%=readmail("message")%>&datum=<%=readmail("datum")%>&sender=<%=readmail("sender")%>"><%=readmail("headline")%></a><br>
<%
readmail.MoveNext
Loop
%>
<%End If%>
så är det samma felmeddelande på samma ställe If readmail("reciever") = "" Then%>

Medlem sedan apr. 2004778 inlägg
#16

Du kan inte göra kontroller mot readmail innan du kollat om det är EOF eller inte. Du gör fortfarande det på flera ställen

 [B]If readmail("reciever") = "" Then%>[/B] 
Det finns inga mail i din inkorg :-(
[B]<%ElseIf Session("username") = readmail("reciever") Then[/B] 
do until readmail.eof
%>
<a href="read.asp?userID=<%=readmail("userID")%>&headline=<%=readmail("headline")%>&message=<%=readmail("message")%>&datum=<%=readmail("datum")%>&sender=<%=readmail("sender")%>"><%=readmail("headline")%></a><br>
<%
readmail.MoveNext
Loop
%>
<%End If%>

Har satt fet stil på de ställen du försöker kolla innan EOF kollen.

Medlem sedan feb. 20032 027 inlägg
#17

Nåt bra förslag, börjar bli seg i skallen :-D

Medlem sedan apr. 2004778 inlägg
#18
If readmail.EOF Then%> 
Det finns inga mail i din inkorg :-(
<%ElseIf Session("username") = readmail("reciever") Then 
do until readmail.eof
%>
<a href="read.asp?userID=<%=readmail("userID")%>&headline=<%=readmail("headline")%>&message=<%=readmail("message")%>&datum=<%=readmail("datum")%>&sender=<%=readmail("sender")%>"><%=readmail("headline")%></a><br>
<%
readmail.MoveNext
Loop
%>
<%End If%>
Medlem sedan feb. 20032 027 inlägg
#19

Nu funkar allt, tack så jättemycket för all hjälp och för att du stod ut med min okunnighet :-)

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