01. maj 2002 - 12:36Der er
35 kommentarer og 1 løsning
En record, men hvor en post skal udskrives flere gange - kommasep
DB-kaldet: <% If Request.Querystring ("Ordrenummer") > "0" Then %> <% Set dbOracle = CreateObject("ADODB.Connection") get_adno = request.querystring ("ordrenummer") strConn = "DSN=SAOraclebak;Database=pub;uid=drs;pwd=drs" dbOracle.Open strConn strSQL = "Select distinct(a.adno), p.pdate, a.iremarks, p.colour, p.xsize, p.ysize, p.paper, a.ad_type, p.prmethod, p.ready, a.maker, a.salno, p.modifier, p.remarks, p.adrno, a.adrname, a.adrtel, a.receiver FROM pub p, ad a WHERE p.adno=a.adno AND a.adno='"&get_adno&"' order by p.paper, length(p.paper)" Set rsOracle = CreateObject("ADODB.Recordset") rsOracle.Open strSQL, dbOracle %>
PROBLEM: Tabeloplysningerne er ens - på nær p.paper. Derfor vil jeg gerne have udskrevet et kald af adno, så den kun vises en gang på siden, men hvor p.paper viser alle forekomster, kommasepareret. Når jeg laver en EOF viser den jo tabellerne for hver gang der er en oplysning om p.paper og det vil jeg helst undgå - hvordan skal man lave kaldet så alle tebellerne kun vises en gang og så p.paper vises for alle forekomster?
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
Hvis jeg har forstået dig ret, så laver du en select, og alle rækkerne er identiske med undtagelse af indholdet i p.paper? Har du så ikke en voldsom mængde redundans i din database?
Du kan sagtens få det udskrevet som du vil. Du kan allerede i den første række smide alle kolonne-værdierne over i nogle variable du opretter til formålet. Så udskriver du dem, og når du så når til p.paper looper du bare igennem hele det RS objekt indtil du når til EOF, og så udskriver du de variable du ikke udskrev før p.paper.
...og hvis det KUN er p.pager der varierer fra række til række, er det endda overflødigt at smide noget i midlertidige variable. Så kan du bare sætte <%=RS("kolonnenavn")%> ind istedet for <%=vaerdi1%> osv...
Alle de variable du udskriver EFTER du har udskrevet rsOracle("paper") skal lægges over i nogle midlertidige variable INDEN du kommer til din loop nr. 2, for ellers vil loop nr. 2 køre dit rsOracle helt til enden, og så får du en fejl når du bagefter forsøger at udskrive rsOracle("remarks") eller hvad du nu udskriver bagefter, for på det tidspunkt er dit rsOracle jo bladret frem til EOF.
hmm - det fattede jeg vist ikke en brikaf :) Jeg kan forstå at man ike må lave en løkke i en løkke - men det gør jeg jo heller ikke, for jeg har kun en løkke i paper-tabellen (da det andet jo kun skal vises éen gang - Jeg har slået hele kildekoden op her: http://www.jman.dk/test/default.html Hvis du liiige gad kigge ;0)
Uha.... Og som jeg skrev lige før, så vil det være nødvendigt at smide alle værdierne du udskriver EFTER dit loop over i nogle midlertidige variable...
Du udskriver kolonnerne maker, salno, modifier, remarks og chkremarks
FØR du kommer ind i din while løkke, skal du lige smide dem over i nogle variable... tmpVarMaker = rsOracle("maker") tmpVarSalno = rsOracle("salno") osv....
Længere nede skal du så ikke kalde rsOracle("maker") for at udskrive den. Dit rsOracle objekt er jo nået til vejs ende, og kan derfor ikke kalde denne kolonne! Istedet udskriver du din tmpVarMaker variabel.
OK - nu ser det sgu ud til at virke! Du har lige løst mit problem gennem 48 timer :0) Der er blot en ting tilbage: <td colspan="6"> <p style="margin-top: 0; margin-bottom: 0"><h4><b>Aviser: </b></h4> <% DO WHILE NOT rsOracle.EOF %> <h4><%=rsOracle("paper") & ", " %></h4> <% rsOracle.movenext Loop %> </td> giver mig visningen af Paper, men den viser det således:
Det kan være din kolonne er for smal, og den derfor laver linieombrydning? Prøv evt. at udskrive dem uden komme og uden mellemrum, så det bliver til eet laaaaaaang ord S3S90S99 - bare i testøjemed, så du kan konstatere at det ER p.g.a. pladsmangel at den ombryde linien.
Ahhhh..... NU forstod jeg spørgsmålet.... Det er lige det der med at læse det ordentligt....
Du skal nok pakke heeeeeele svineriet ind i en <% if RS.eof then %> Der er ikke noget ADNO med nummer <%=get_adno%>.<br>Tryk tilbage og prøv igen. <% else %> .... al din øvrige kode .... <% end if %>
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.