det som jag vill göra är att jag vill visa allt som jag har i databasen delat i två kolumn ex: du får sätta in en räknare... <code> jag använde din kod och jag fick det till så här: jo jag vet, ville bara få dej att tänka på rätt sätt... nu beror det ju på hur många du vill visa i varje rad.. ett sätt ä'r att göra så här VADDÅ?? ahh... glömde en sak Jag skulle skrivit något sådant här om jag ville ha ett fast antal rader: jag får detta felmeddelandet ... jag kunde inte hitta lösningen... Låter som du glömt sätta den: Jag som gjort fel. Flytta ut: <code> Har inte läst igenom alla poster här så möjligt att ni redan löst det, så här skulle min enklaste lösning se ut: din kod ser ut som precis hur jag hade tänkt mig ... men jag fick det inte riktigt rätt ... Har fixat koden nu åt dig jag förstår inte vad det e du ändrade .. det verkar vara samma kod ... :) Är samma kod i det stora hela, skippade bara ett steg. detta e hela koden som har med min fråga och göra ...sortera databasen i en tabel
----------
| ID: |
----------
| 1 | 3 |
----------
| 2 | 4 |
----------
så vill jag ha det så och databasen ska sköta det själv .. hoppas ni fattar vad jag menar!!
OBS!! om det e jobbigt att lösa .. så bara ge mig en ledtråd så att jag själv söker efter lösningen!!
TACKSv: sortera databasen i en tabel
<code>
<table>
<tr>
<%
rs.open bla bla bla
do until rs.eof
raknare="1"
raknare = raknare+1
if raknare="5" then
raknare = "0"
end if
%>
<td>info <%if raknare="1" then %><tr><%end if%>
<% rs.movenext
loop
rs.close%>
</code>
det där var baar en skiss.. hoppas du förstår principenSv: sortera databasen i en tabel
<table>
<tr>
<%
rs.open bla bla bla 'öppna recordset
raknare="0" 'ge raknaren värdet 0 som startväde
do until rs.eof 'skapa en loop som loopar genom tabellen
raknare = raknare+1 'varje gång du loopar så blir räknarens värde 1 mer
if raknare="5" then ' om den är 5
raknare = "0" ' ska den bli 0 igen
end if
%>
<td>databas värde
<%if raknare="1" then %></tr><tr><%end if%> om räknaren är 1 börjar den på en ny rad
<% rs.movenext 'gå till nästa fält
loop 'gör om loopen
rs.close 'stäng rs
%>
</table>
</code>
ändrade lite i koden nu så den ska bli lättare att förståSv: sortera databasen i en tabel
<code>
<table border="1">
<tr>
<%
Set RecSet=connect.Execute("SELECT * FROM ara_bk_dikt WHERE booknr = "&RecSet2("id")&" ORDER BY sort ASC")
raknare="0"
do until RecSet.eof
raknare = raknare+1
if raknare="2" then
raknare = "0"
end if
%>
<td>&id=<%=RecSet("id")%>"><%=RecSet("diktrubrik")%><br>
<%if raknare="1" then %></tr><tr><%end if%>
<% RecSet.movenext
loop
RecSet.close
%>
</table>
</code>
och resultatet som jag fick var:
1
2 3
4 5
6 7
men det jag vill ha är:
1 5
2 6
3 7
4
:-)Sv: sortera databasen i en tabel
<table border="1" align="left">
<tr>
<%
Set RecSet=connect.Execute("SELECT * FROM ara_bk_dikt WHERE booknr = "&RecSet2("id")&" ORDER BY sort ASC")
raknare="-1"
do until RecSet.eof
raknare = raknare+1
if raknare="5" then 'ange hur många som ska visas i varje kolumn
raknare = "0"
end if
%>
<td>&id=<%=RecSet("id")%>"><%=RecSet("diktrubrik")%><br>
<%if raknare="5" then %></tr></table><table border="1" align="left"><tr><%end if%>
<% RecSet.movenext
loop
RecSet.close
%>
</table> Sv: sortera databasen i en tabel
denna koden visar så här:
ID
1 2 3 4 5 6 7
-----------------------------------------------------------------------------------
alltså jag vet hur jag ska göra så här :
ID
1 2 3 4
5 6 7 8
men jag vill ha det så här:
1 5
2 6
3 7
4 8
det verkar som jag inte kan förklara problemet tydligt ... :-)Sv: sortera databasen i en tabel
<table border="1" align="left">
<tr>
<%
Set RecSet=connect.Execute("SELECT * FROM ara_bk_dikt WHERE booknr = "&RecSet2("id")&" ORDER BY sort ASC")
raknare="-1"
do until RecSet.eof
raknare = raknare+1
if raknare="5" then 'ange hur många som ska visas i varje kolumn
raknare = "0"
end if
%>
<tr>
<td>&id=<%=RecSet("id")%>"><%=RecSet("diktrubrik")%><br></td></tr>
<%if raknare="5" then %></table><table border="1" align="left"><%end if%>
<% RecSet.movenext
loop
RecSet.close
%>
</table> Sv: sortera databasen i en tabel
<code>
<!--METADATA TYPE="typelib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" -->
<%
Dim rsSub
Dim rsMain
Dim connect
Dim Row
Dim MaxRow
'Om det inte funkar med ADODB Type Library
'Const adOpenStatic = 3
'Const adLockReadOnly = 1
Set connect = Server.CreateObject("ADODB.Connection")
connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("DinDatabas.mdb")
Set rsSub = Server.CreateObject("ADODB.Recordset")
Set rsMain = Server.CreateObject("ADODB.Recordset")
rsMain.Open "SELECT *" & vbCrLf & _
"FROM Books" & vbCrLf & _
"ORDER BY BookTitle", _
connect
Do Until rsMain.EOF
%>
<h3><%=Server.HTMLEncode(rsMain("BookTitle"))%></h3>
<table border="0">
<tr>
<td>
<table border="1" align="left">
<%
rsSub.Open "SELECT *" & vbCrLf & _
"FROM ara_bk_dikt" & vbCrLf & _
"WHERE booknr = " & rsMain("Id") & vbCrLf & _
"ORDER BY [Sort] ASC", _
connect, adOpenStatic, adLockReadOnly
MaxRow = rsSub.RecordCount \ 2
Do Until rsSub.EOF
If Row >= MaxRow Then
%>
</table>
</td>
<td>
<table border="1" align="left">
<%
Row = 0
Else
Row = Row + 1
End If
%>
<tr>
<td>
&id=<%=rsSub("id")%>"><%=Server.HTMLEncode(rsSub("diktrubrik"))%><br>
</td>
</tr>
<%
rsSub.movenext
Loop
rsSub.Close
Loop
Set rsSub = Nothing
rsMain.Close
Set rsMain = Nothing
connect.Close
Set connect = Nothing
%>
</table>
</td>
</tr>
</table>
</code>
Om du vill ha ett fast antal kolumener:
<code>
<!--METADATA TYPE="typelib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" -->
<%
Dim rsSub
Dim rsMain
Dim connect
Dim Row
'Om det inte funkar med ADODB Type Library
'Const adOpenStatic = 3
'Const adLockReadOnly = 1
Set connect = Server.CreateObject("ADODB.Connection")
connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("DinDatabas.mdb")
Set rsSub = Server.CreateObject("ADODB.Recordset")
Set rsMain = Server.CreateObject("ADODB.Recordset")
rsMain.Open "SELECT *" & vbCrLf & _
"FROM Books" & vbCrLf & _
"ORDER BY BookTitle", _
connect
Do Until rsMain.EOF
%>
<h3><%=Server.HTMLEncode(rsMain("BookTitle"))%></h3>
<table border="0">
<tr>
<td>
<table border="1" align="left">
<%
rsSub.Open "SELECT *" & vbCrLf & _
"FROM ara_bk_dikt" & vbCrLf & _
"WHERE booknr = " & rsMain("Id") & vbCrLf & _
"ORDER BY [Sort] ASC", _
connect, adOpenStatic, adLockReadOnly
Do Until rsSub.EOF
If Row >= 7 Then
%>
</table>
</td>
<td>
<table border="1" align="left">
<%
Row = 0
Else
Row = Row + 1
End If
%>
<tr>
<td>
&id=<%=rsSub("id")%>"><%=Server.HTMLEncode(rsSub("diktrubrik"))%><br>
</td>
</tr>
<%
rsSub.movenext
Loop
rsSub.Close
Loop
Set rsSub = Nothing
rsMain.Close
Set rsMain = Nothing
connect.Close
Set connect = Nothing
%>
</table>
</td>
</tr>
</table>
</code>
Har ju lagt på lite kod som jag skulle skrivit det. En skillnad är den återanvänder instansen av recorsetet i subloopen.Sv: sortera databasen i en tabel
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.
i raden:
rsSub.Open "SELECT *" & vbCrLf & _ Sv: sortera databasen i en tabel
<code>
Set rsSub = Server.CreateObject("ADODB.Recordset")
</code>
Det sker utanför loopen i min kod.Sv: sortera databasen i en tabel
<code>
Set rsSub = Nothing
</code>
Utanför loopen.
;o)Sv: sortera databasen i en tabel
<HTML>
<BODY>
<!--METADATA TYPE="typelib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" -->
<%
Dim rsSub
Dim rsMain
Dim connect
Dim Row
Dim MaxRow
'Om det inte funkar med ADODB Type Library
'Const adOpenStatic = 3
'Const adLockReadOnly = 1
Set connect = Server.CreateObject("ADODB.Connection")
connect.Open "Driver={MySQL ODBC 3.51 Driver}; server=localhost; database=adnan; uid=; pwd=;"
Set rsSub = Server.CreateObject("ADODB.Recordset")
Set rsMain = Server.CreateObject("ADODB.Recordset")
rsMain.Open "SELECT *" & vbCrLf & _
"FROM ara_bk_book" & vbCrLf & _
"ORDER BY sort", _
connect
Do Until rsMain.EOF
%>
<h3><%=Server.HTMLEncode(rsMain("bildnr"))%></h3>
<table border="0">
<tr>
<td>
<table border="1" align="left">
<%
rsSub.Open "SELECT *" & vbCrLf & _
"FROM ara_bk_dikt" & vbCrLf & _
"WHERE booknr = " & rsMain("Id") & vbCrLf & _
"ORDER BY [Sort] ASC", _
connect, adOpenStatic, adLockReadOnly
MaxRow = rsSub.RecordCount \ 2
Do Until rsSub.EOF
If Row >= MaxRow Then
%>
</table>
</td>
<td>
<table border="1" align="left">
<%
Row = 0
Else
Row = Row + 1
End If
%>
<tr>
<td>
&id=<%=rsSub("id")%>"><%=Server.HTMLEncode(rsSub("diktrubrik"))%><br>
</td>
</tr>
<%
rsSub.movenext
Loop
rsSub.Close
Loop
Set rsSub = Nothing
rsMain.Close
Set rsMain = Nothing
connect.Close
Set connect = Nothing
%>
</table>
</td>
</tr>
</table>
</BODY>
</HTML>
</code>
detta e en bara test sida ....
felet:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC-drivrutinen stöder inte de begärda egenskaperna.
/adnan/test/test.asp, line 39Sv: sortera databasen i en tabel
<code>
records = RecSet.RecordCount
'Följande gör hälften av allt jobb
Do Until i=CInt(records/2)
kolumn1 = kolumn1 + RecSet("fält")
i = i+1
RecSet.MoveNext
Loop
'Nu fortsätter vi med resten
Do Until RecSet.EOF
kolumn2 = kolumn2 + RecSet("fält")
RecSet.MoveNext
Loop
Response.write "<table><tr><td>" & kolumn1 & "</td><td>" & kolumn2 & "</td></tr></table>"
</code>
Detta listar som följande
1 | 5
2 | 6
3 | 7
4 | 8
Med att ändra lite på "CInt(records/2)" så den alltid avrundar uppåt får du vänster kolumn att alltid vara "längre" om det är ojämnt antal fält.Sv: sortera databasen i en tabel
koden ser ut så här:
<code>
Set RecSet=connect.Execute("SELECT * FROM ara_bk_dikt")
records = RecSet.RecordCount
do until i=CInt(records/2)
kolumn1 = kolumn1 + RecSet("diktrubrik") + "<br>"
i = i+1
RecSet.MoveNext
Loop
Do Until RecSet.EOF
kolumn2 = kolumn2 + RecSet("diktrubrik") + "<br>"
RecSet.MoveNext
Loop
Response.write "<table border='10'><tr><td>" & kolumn1 & "</td><td>" & kolumn2 & "</td></tr></table>"
RecSet.close
</code>
svaret som jag får:
| 1
| 2
| 3
| 4
| 5
| 6
| 7
det verkar inte som kolumn1 får något värde ...Sv: sortera databasen i en tabel
<code>
do until i=CInt(RecSet.RecordCount/2)
kolumn1 = kolumn1 + RecSet("Namn") + "<br>"
i = i+1
RecSet.MoveNext
Loop
Do Until RecSet.EOF
kolumn2 = kolumn2 + RecSet("namn") + "<br>"
RecSet.MoveNext
Loop
Response.write "<table border='10'><tr><td>" & kolumn1 & "</td><td>" & kolumn2 & "</td></tr></table>"
</code>
För att få det att fungera måste dina Records räknas rätt och då måste du antingen använda en pekare som är KeySet eller Static, annars får RecordCount värdet -1.
KetSet: RecSet.CursorType = 1
Static: RecSet.CursorType = 3
Deklareras INNAN du öppnar recordsetet.
Mvh
Daniel 'Pikkenix' Eriksson
http://www.pikkenix.comSv: sortera databasen i en tabel
Sv: sortera databasen i en tabel
Själva koden är rätt men du måste ändra recordsettets pekare...
ge mig hela din koppling till databasen och när du deklarerar recordsetet så kan jag visa dig.Sv: sortera databasen i en tabel
<code>
<%
Set RecSet=connect.Execute("SELECT * FROM ara_bk_dikt WHERE booknr = "&RecSet2("id")&" ORDER BY sort ASC")
records = RecSet.RecordCount
do until i=CInt(records/2)
kolumn1 = kolumn1 + RecSet("diktrubrik") + "<br>"
i = i+1
RecSet.MoveNext
Loop
Do Until RecSet.EOF
kolumn2 = kolumn2 + RecSet("diktrubrik") + "<br>"
RecSet.MoveNext
Loop
Response.write "<table border='10'><tr><td>" & kolumn1 & "</td><td>" & kolumn2 & "</td></tr></table>"
RecSet.close
%>
</code>
Tack