Avatar billede reino Nybegynder
27. august 2003 - 10:39 Der er 8 kommentarer og
1 løsning

Loop array

hejsa,

er lige stødt ind i et problem.

Har en database med 8 kolonner i en tabel

Kolonnerne hedder v1, v2, v3, v4 etc.

Nu vil jeg gerne lave noget output hvor der bliver lavet et db kald som så skal udskrive værdierne såfremt de ikke er tomme. Har lavet flg, men denne udskriver jo kun 1. værdi og ikke de efterfølgende såfremt de ikke er tomme. Der skal vel laves en form for count eller lignende:

            <%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        %>
       
            <tr>
              <td align="left" valign="top"><%response.write ObjRs("v1")%>
</td>
            </tr>

        <%
                objrs.MoveNext
        Loop
        Conn.Close
%>
Avatar billede dk_akj Nybegynder
27. august 2003 - 10:43 #1
Måske har jeg misforstået det fuldstændigt... men er det ikke dette du vil ??

ds_ansatt_plan_skift_bemanding_uge      <%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        %>
       
            <tr>
              <td align="left" valign="top">
<%response.write ObjRs("v1")%>
          </td>
              <td align="left" valign="top">
<%response.write ObjRs("v2")%>
          </td>
              <td align="left" valign="top">
<%response.write ObjRs("v3")%>
          </td>
              <td align="left" valign="top">
<%response.write ObjRs("v4")%>
          </td>


            </tr>

        <%
                objrs.MoveNext
        Loop
        Conn.Close
%>

//akj
Avatar billede sblar Nybegynder
27. august 2003 - 10:44 #2
Du kommer lige til at forklare hvad du mener med tomme værdier. Det du tester for i Do Until objRs.EOF er om dit recordsæt overhovedet indeholder nogen poster og ikke om værdierne i de enkelte felter er tomme. Vil du kun udskrive felternes værdier hvis de ikke er tomme eller hvad?
Avatar billede ellebaek Nybegynder
27. august 2003 - 10:45 #3
<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        for i = 1 to 8
%>
            <tr>
              <td align="left" valign="top">felt v<%=i%> <%response.write ObjRs("v" & i)%>
</td>
            </tr>
<%
Next
objrs.MoveNext
        Loop
        Conn.Close
%> Sådan her får du de 8 felter hver gang...

Så kan du lave et check for om det er tomt på denne måde:
<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        for i = 1 to 8
if ObjRs.Fields("v" & i) <> Null then
%>
            <tr>
              <td align="left" valign="top">felt v<%=i%> <%response.write ObjRs("v" & i)%>
</td>
            </tr>
<%
end if
Next
objrs.MoveNext
        Loop
        Conn.Close
%>
Avatar billede mm12010 Nybegynder
27. august 2003 - 10:46 #4
Do Until objRS.EOF
       
        %>
       
            <tr>
              <td align="left" valign="top">
<%if ObjRs("v1") <> "" then response.write ObjRs("v1") end if%>
          </td>
              <td align="left" valign="top">
<%if ObjRs("v2") <> "" then response.write ObjRs("v2") end if%>
          </td>
              <td align="left" valign="top">
<%if ObjRs("v3") <> "" then response.write ObjRs("v3") end if%>
          </td>
              <td align="left" valign="top">
<%if ObjRs("v4") <> "" then response.write ObjRs("v4") end if%>
          </td>


            </tr>

        <%
                objrs.MoveNext
        Loop
Avatar billede dk_akj Nybegynder
27. august 2003 - 10:47 #5
Endnu et bud....

//akj

<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        %>
       
            response.write "<tr>"
        for i = 1 to 8
            ret = rs("v" & i)
            if ret <> "" then
                response.write "<td align='left' valign='top'>" & ret & "</td>"
            else
                response.write "<td align='left' valign='top'>" & "-" & "</td>"
            end if
        next


            response.write "/<tr>"

        <%
                objrs.MoveNext
        Loop
        Conn.Close
%>
Avatar billede ellebaek Nybegynder
27. august 2003 - 10:48 #6
Der hvor du laver check af om et felt er tomt skal det se ud som dette...

<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"


Set Objrs = Conn.Execute(SQL)



        Do Until objRS.EOF
       
        for i = 1 to 8
if ObjRs.Fields("v" & i) <> "" then
%>
            <tr>
              <td align="left" valign="top">felt v<%=i%> <%response.write ObjRs("v" & i)%>
</td>
            </tr>
<%
end if
Next
objrs.MoveNext
        Loop
        Conn.Close
%>

Så får du alle felterne hvor der er indskrevet data udskrevet...
Forudsat at du har 8 felter (v1, v2, ... , v8) i din database
Avatar billede ellebaek Nybegynder
27. august 2003 - 10:54 #7
Og når du nu opbygger i en tabel bliver du nødt til at have noget i tabellen hvis felterne nu er tomme...

Sådan her skal den endelige se ud.
<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=sti

SQL = "SELECT * FROM produkter where vare like'"+vare+"'"

Set Objrs = Conn.Execute(SQL)
        Do Until objRS.EOF
     
        for i = 1 to 8

response.write "<tr>"
if ObjRs.Fields("v" & i) <> "" then
%>
  <td align="left" valign="top">felt v<%=i%> <%=ObjRs("v" & i)%></td>
<% else
response.write "<td>&nbsp;</td>"
end if
%>
</tr>
<%
end if
Next
objrs.MoveNext
        Loop
        Conn.Close
%>
Avatar billede reino Nybegynder
27. august 2003 - 10:55 #8
Hej alle, tusinde tak for hurtig response og de gode bud. Super. Ellebaeks eksempel var lige præcis det jeg havde brug for. Tak igen :)
Avatar billede ellebaek Nybegynder
27. august 2003 - 10:56 #9
anytime..
Takker for pointz

..Ellebæk!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester