F Frella Medlem sedan feb. 2005 24 inlägg Frågan 11 apr. 2005 09:36 #1 Jag har ett problem, jag har skrivit en kod som ska göra en <hr> efter varje familjenummer. Problemet just nu är att det skapas en <hr> efter varannan medlem och inte då familjenumren skiljer sig från varandra som det är tänkt att det ska göra. Tex att om det finns 4 medlemmar i familj 1 så ska <hr> dras efter dessa 4, innan den går till nästa familj osv.
Bifogar nuvarande kod, hoppas någon kan hjälpa.
<%
var current = 0;
var familj = 0;
while(rsMedlemmar && !rsMedlemmar.EOF)
{
familj = rsMedlemmar("Familjenummer");
if(familj =! current)
{
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
}
%>
<tr id="famlista_cross_namn">
<td><%=rsMedlemmar("Efternamn")%></td>
<td><%=rsMedlemmar("Förnamn")%></td>
<td><%=rsMedlemmar("Adress")%></td>
<td><%=rsMedlemmar("Postnummer")%></td>
<td><%=rsMedlemmar("Ort")%></td>
<td><%=rsMedlemmar("Telefon")%></td>
<td><%=rsMedlemmar("Mobiltelefon")%></td>
<td><%=rsMedlemmar("Medlemsnummer")%></td>
<td><%=rsMedlemmar("Familjenummer")%></td>
</tr>
<%
current=familj;
rsMedlemmar.MoveNext();
}
%>
</table>
<%
rsMedlemmar.Close();
rsMedlemmar = null;
%>
@nders Medlem sedan juni 2000 32 967 inlägg Borde inte det här funka?
<%
var current = 0;
var familj = 0;
while(rsMedlemmar && !rsMedlemmar.EOF)
{
familj = rsMedlemmar("Familjenummer");
if(familj != current && current != 0)
{
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
current=familj;
}
%>
<tr id="famlista_cross_namn">
<td><%=rsMedlemmar("Efternamn")%></td>
<td><%=rsMedlemmar("Förnamn")%></td>
<td><%=rsMedlemmar("Adress")%></td>
<td><%=rsMedlemmar("Postnummer")%></td>
<td><%=rsMedlemmar("Ort")%></td>
<td><%=rsMedlemmar("Telefon")%></td>
<td><%=rsMedlemmar("Mobiltelefon")%></td>
<td><%=rsMedlemmar("Medlemsnummer")%></td>
<td><%=rsMedlemmar("Familjenummer")%></td>
</tr>
<%
rsMedlemmar.MoveNext();
}
%>
</table>
<%
rsMedlemmar.Close();
rsMedlemmar = null;
%>
mvh
F Frella Medlem sedan feb. 2005 24 inlägg @anders: Nu får jag inte med en enda <hr>, den skriver bara listan rakt uppochned...
@nders Medlem sedan juni 2000 32 967 inlägg Nä, självklart. Mitt misstag. Så här borde det se ut.
if(familj != current)
{
if (current != 0) {
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
}
current=familj;
}
edit: du kanske vill ha en linje ovanför den översta familjen? Ta bort den inre if-satsen i så fall.
mvh
F Frella Medlem sedan feb. 2005 24 inlägg Tyvärr så funkar det inte ändå, jag får fortfarande bara en rak lista utan några som helst linjer.
@nders Medlem sedan juni 2000 32 967 inlägg Hur ser hela kodstycket ut nu alltså?
F Frella Medlem sedan feb. 2005 24 inlägg Ser ut som följer
<html>
<head>
<title>Familjelista NMK</title>
<link rel=stylesheet href="main.css" type="text/css">
</head>
<body id="famlista">
<%@ Language="javascript" %>
<%
var conn = Server.CreateObject("ADODB.Connection");
conn.open = "Driver={Microsoft Access Driver (*.mdb)};dbq=c:/inetpub/wwwroot/test/Medlemsregister.mdb";
var strSQL = "SELECT [QRY_BASE_Alla medlemmar].*, [QRY_BASE_Alla familjer].Efternamn FROM [QRY_BASE_Alla familjer] INNER JOIN [QRY_BASE_Alla medlemmar] ON [QRY_BASE_Alla familjer].Familjenummer = [QRY_BASE_Alla medlemmar].Familjenummer ORDER BY [QRY_BASE_Alla familjer].Familjenummer";
rsMedlemmar = conn.Execute(strSQL);
%>
<table id="famlista_tbl" cellpadding="0" cellspacing="0">
<tr>
<td><h3>Familjelista NMK</h3></td>
</tr>
<tr id="famlista_cross_rubrik">
<td><h5><h5>Efternamn</h5></td><td><h5>Förnamn</h5></td><td><h5>Adress</h5></td><td><h5>Postnr</h5></td><td><h5>Ort</h5></td><td><h5>Telnr</h5></td><td><h5>Mobilnr</h5></td><td><h5>Medlemsnr</h5></td><td><h5>Familjenr</h5></td>
</tr>
<%
var current = 0;
var familj = 0;
while(rsMedlemmar && !rsMedlemmar.EOF)
{
familj = rsMedlemmar("Familjenummer");
if(familj != current)
{
if (current != 0) {
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
}
current=familj;
}
%>
<tr id="famlista_cross_namn">
<td><%=rsMedlemmar("Efternamn")%></td>
<td><%=rsMedlemmar("Förnamn")%></td>
<td><%=rsMedlemmar("Adress")%></td>
<td><%=rsMedlemmar("Postnummer")%></td>
<td><%=rsMedlemmar("Ort")%></td>
<td><%=rsMedlemmar("Telefon")%></td>
<td><%=rsMedlemmar("Mobiltelefon")%></td>
<td><%=rsMedlemmar("Medlemsnummer")%></td>
<td><%=rsMedlemmar("Familjenummer")%></td>
</tr>
<%
rsMedlemmar.MoveNext();
}
%>
</table>
<%
rsMedlemmar.Close();
rsMedlemmar = null;
%>
</body>
</html>
@nders Medlem sedan juni 2000 32 967 inlägg Gör lite testutskrifter för att se vad familj resp. current innehåller. Jag tycker dock att det ser rätt ut...
F Frella Medlem sedan feb. 2005 24 inlägg Testade det och det den skriver ut är True för familj och False för Current, alternativt 1 och 0. Men varför bool?
F Frella Medlem sedan feb. 2005 24 inlägg Allting verkar uppdateras innan utskriften, alltså blir resultatet alltid samma. Nån lösning med pekare eller nåt annat vis kanske?
J.N. Medlem sedan apr. 2003 1 660 inlägg HEJ!
Men, @nders, kan man verkligen skriva != i VBScript?
Det finns inte med i dokumentationen (på DevGuru), men det kanske är inbyggt underförstått att det ska fungera?
http://www.devguru.com/Technologies/vbscript/quickref/vbscript_list.html
Jag använder alltid <> istället.
http://www.devguru.com/Technologies/vbscript/quickref/inequality.html
@nders Medlem sedan juni 2000 32 967 inlägg J.N., vi pratar inte VBScript.
Men, nej, man kan inte skriva != i VBScript.
J.N. Medlem sedan apr. 2003 1 660 inlägg HEJ!
@nders skrev:
J.N., vi pratar inte VBScript.
Men, nej, man kan inte skriva != i VBScript.
Nä, det gör vi ju inte, det står ju tom i rubriken. :r
Kontrollerade dessutom att det var inom <% %>, men missade helt att det kan vara Javascript ändå!
F Frella Medlem sedan feb. 2005 24 inlägg Ingen som har något nytt att komma med här? Lade detta på is ett tag då det inte funkade, och det gör det fortfarande inte nu när jag testat igen. Oerhört frustrerande.
Som jag sa innan så verkar det som att Current och Familj byter värde samtidigt, och värdet verkar heller inte sparas, alltså är de alltid lika, därav inga linjer...
Jesper T Medlem sedan nov. 2001 7 144 inlägg Typkonvertera lite:
var current = 0;
while(rsMedlemmar && !rsMedlemmar.EOF)
{
if(current!=parseFloat(rsMedlemmar("Familjenummer")))
{
if (current != 0) {
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
}
current=parseFloat(rsMedlemmar("Familjenummer"));
}
F Frella Medlem sedan feb. 2005 24 inlägg Tack!, funkade kanon nu. men varför kan man inte spara så som jag testade innan? Och vad är parseFloat? Förutom att den verkar spara currents värde på ett bättre sätt än en egen variabel.
Jesper T Medlem sedan nov. 2001 7 144 inlägg Visst, du kan lägga in det i en variabel också.
Men när värdet kommer ifrån databasen så är datatypen en sträng/variant och då kan du inte göra en jämförelse med ett tal.
Du kan även använda parseInt() för heltal.
var current = 0;
var familj;
while(rsMedlemmar && !rsMedlemmar.EOF)
{
familj = parseInt(rsMedlemmar("Familjenummer"));
if(current!=familj)
{
if (current != 0) {
Response.Write("<tr><td colspan=9>");
Response.Write("<hr noshade></td></tr>");
}
current=familj;
}
F Frella Medlem sedan feb. 2005 24 inlägg Ok, jag försökte göra det till en int, men på samma sätt som i c++, då jag inte hittade nåt exempel. Men det funkade ju inget vidare, men då är jag med.
Tack återigen.