Avatar billede Jman Praktikant
01. maj 2002 - 12:36 Der 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?
Avatar billede sbm Nybegynder
01. maj 2002 - 13:02 #1
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.
Avatar billede Jman Praktikant
01. maj 2002 - 13:05 #2
ja, den er jeg med på - men så viser den også en ny tabel for hver forekomst.
Og det er det jeg vil undgå - Så altså; én tabel med alle forekomster
Avatar billede sbm Nybegynder
01. maj 2002 - 13:19 #3
Nej da?

<table>
    <tr>
        <td>
<%=vaerdi1%>
        </td>
        <td>
<%=vaerdi2%>
        </td>

....osv osv indtil du når til p.pager ....

        <td>
<%
    while not RS.eof
        response.write RS("p.pager") & ", "
        RS.movenext
    loop
%>
        </td>

...og så afslutter du med de sidste værdier, og får sluttet række og tabel af...

Med mindre jeg stadig ikke har forstået problemstillingen?
Avatar billede sbm Nybegynder
01. maj 2002 - 13:23 #4
...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...
Avatar billede Jman Praktikant
01. maj 2002 - 13:30 #5
Microsoft VBScript compilation error '800a0400'

Expected statement

/prepres/sapss/default.asp, line 188

WEND
Avatar billede Jman Praktikant
01. maj 2002 - 13:30 #6
sorry - det var en fejl -
men jeg får følgende fejlmeddelelse:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/prepres/sapss/default.asp, line 145
Avatar billede sbm Nybegynder
01. maj 2002 - 13:31 #7
Jeg kan ikke ud af din besked se hvilken linie der er 145?
Avatar billede Jman Praktikant
01. maj 2002 - 13:40 #8
Tajh - det var også mig, der var stavenørd ;O)

Men - NU kommer der så en ny fejl:
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/prepres/sapss/default.asp, line 0
----
Jeg har da ingen linie 0 (?)
Avatar billede Jman Praktikant
01. maj 2002 - 13:43 #9
..og jeg skal lige sige at record er der, for jeg får alle oplysningerne inden:

<% Do WHILE NOT rsOracle.EOF %>
    <td colspan="6"><p style="margin-top: 0; margin-bottom: 0"><h4><b>Aviser: </b><% response.write rsOracle("paper") & ", " %></h4></td>
<%
rsOracle.movenext
loop
%>
Avatar billede sbm Nybegynder
01. maj 2002 - 13:43 #10
Hvad kalder du dit RS objekt? Jeg har skrevet RS, men kalder du det også RS i resten af din egen kode?
Avatar billede sbm Nybegynder
01. maj 2002 - 13:46 #11
Ahhh. Never mind. Du svarede samtidig med mig.... Jeg kigger lige.
Avatar billede Jman Praktikant
01. maj 2002 - 13:51 #12
måske kan dette hjælpe - jeg får samme fejl, hvis jeg søger på et nummer, der IKKE eksisterer i databasen
Avatar billede sbm Nybegynder
01. maj 2002 - 13:52 #13
Hmmm. Jeg kan ikke se noget forkert.... Prøv evt. at skifte dit
    <% response.write rsOracle("paper") & ", " %>

ud med
    <%=rsOracle("paper") & ", "%>

Eller evt. kolonnenummer istedet for navn... rsOracle(7) istedet for rsOracle("paper")

Jeg er lidt på herrens mark. Jeg tror du laver et eller andet udenfor den kode du her har vist, for jeg kan ikke umiddelbart spotte nogen fejl her.
Avatar billede sbm Nybegynder
01. maj 2002 - 13:55 #14
Ahhhhhh..... Du befinder dig vel allerede inde i en while not RS.eof loop når du kommer til det loop som jeg har foreslået...? Det går jo nok galt.

Jeg hitter lige på en løsning....
Avatar billede sbm Nybegynder
01. maj 2002 - 13:58 #15
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.

Håber det var forståeligt? :-)
Avatar billede Jman Praktikant
01. maj 2002 - 14:05 #16
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)
Avatar billede sbm Nybegynder
01. maj 2002 - 14:11 #17
Øhm... Hvor er det du prøver at udskrive rsOracle("paper") ? Jeg søger på paper men finder ikke noget efter din SELECT statement...?
Avatar billede Jman Praktikant
01. maj 2002 - 14:11 #18
...jeg kan evt. "bytte" med lidt grafik, hvis du mangler *lokke-lokke*
Jeg så bare dit sp. for vanløse floorball
Avatar billede Jman Praktikant
01. maj 2002 - 14:14 #19
DOH - det er den forkerte kildekode (en gl. backup)
Nu er den der (samme adresse)
Avatar billede sbm Nybegynder
01. maj 2002 - 14:16 #20
Prøv lige at indskyde en
        rsOracle.movenext
lige efter din
        rsOracle.Open strSQL, dbOracle
Avatar billede sbm Nybegynder
01. maj 2002 - 14:22 #21
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.
Avatar billede sbm Nybegynder
01. maj 2002 - 14:36 #22
...og du kan nok se bort fra min forrige kommentar om at indsætte en rsOracle.movenext

(Min kommentar fra kl. 14:16:46)
Avatar billede Jman Praktikant
01. maj 2002 - 14:47 #23
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:

aviser:
S3,
S90
S99,


I stedet for:
Aviser: S3, S90, S99

Kan du fixe denne lille ting også?
Avatar billede sbm Nybegynder
01. maj 2002 - 14:55 #24
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.
Avatar billede sbm Nybegynder
01. maj 2002 - 14:56 #25
doh! komme = komma
Avatar billede sbm Nybegynder
01. maj 2002 - 14:57 #26
Jeg er væk fra keyboardet den næste times tid... Bare så du ikke sidder og venter på svar. :-)
Avatar billede Jman Praktikant
01. maj 2002 - 15:06 #27
Nej, det var ikke det (den er 600 pixels bred)
Avatar billede Jman Praktikant
01. maj 2002 - 15:19 #28
hmmm - hvis nu et indtastet adno ikke eksisterer, fejler siden på tmp-variablerne.. Hvad kan man gøre for at bypasse det?

Fejl:
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/prepres/sapss/default.asp, line 38

Linie 38: tmpVarMaker = rsOracle("maker")
Avatar billede sbm Nybegynder
01. maj 2002 - 15:38 #29
Hmmm. Jeg kan ikke få det til at passe at du får den fejl p.g.a. det... Kan du ikke opdatere din kildekode-side igen?
Avatar billede sbm Nybegynder
01. maj 2002 - 15:44 #30
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 %>
Avatar billede Jman Praktikant
01. maj 2002 - 16:18 #31
hmmm... :(
Har lige opdateret kildekoden
Er vi ikke enige om at det skal ind, der hvor jeg har sat det ?
Avatar billede Jman Praktikant
01. maj 2002 - 16:22 #32
nevermind - det skulle selvfølgelig være rsOracle
Avatar billede Jman Praktikant
01. maj 2002 - 16:23 #33
TUSIND, TUSIND tak - DU HAR VÆRET EN KÆMPE HJÆLP!!!

:0)
:0)
:0)
Avatar billede Jman Praktikant
02. maj 2002 - 14:20 #34
Måske ikke helt legitimt, men kunne du ikke kaste et blik på:
http://www.eksperten.dk/spm/206030 ?
Avatar billede sbm Nybegynder
02. maj 2002 - 14:31 #35
Gerne, men jeg har ikke satans god tid lige nu... Det bliver først engang i aften såfremt der ikke er fundet en løsning inden da.
Avatar billede Jman Praktikant
02. maj 2002 - 14:34 #36
OK - tak
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