Avatar billede agerled Nybegynder
21. april 2004 - 18:09 Der er 25 kommentarer og
1 løsning

hvad kan jeg gøre ved denne fejl

Fejlmeldingen:
Fejltype:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
/intranet/OracleConnXal1.asp, line 18

Min kode:
<table width="100%" cellspacing="1" cellpadding="0" border="0">
       
        <% set rs = oracle("select * from hitrate_dk where dato = '" & date() & "' and navn <> 'dagstotal' order by hitrate DESC") %>
       
        <tr>
        <td bgcolor="FFFFCC" colspan="4">&nbsp;<font size="2"><b><% =rs("dato") & " kl. " & left(rs("lastupdate"),5) %></b></font></td>
        <td colspan="2">
        <select name="dato" class="login">
        <%
        set datoer = oracle("select distinct(dato) from hitrate_dk order by dato DESC")
        while not datoer.eof
        %>
        <option value="<% =datoer("dato") %>"><% =datoer("dato") %></option>
        <%
        datoer.movenext
        wend
        set datoer = nothing
        %>
        </select>
        </td>
        </tr>
        <tr bgcolor="99CCFF">
        <td width="14">&nbsp;Navn</td>
        <td width="20">&nbsp;Kald</td>
        <td width="40">&nbsp;Reg.</td>
        <td width="20">&nbsp;List</td>
        <td width="20">&nbsp;Pot.</td>
        <td width="20">&nbsp;Prod.</td>
        <td width="20">&nbsp;Abb.</td>
        <td width="20">&nbsp;Hit%</td>
        <td width="20">&nbsp;Point idag</td>
        <td width="20">&nbsp;Pr. prod.</td>
        <td width="20">&nbsp;Tidl. Point</td>
        <td  width="20">&nbsp;Ready %</td>
        <td width="20">&nbsp;Besv.<br>%</td>
        <td width="26">&nbsp;R.<br>Saldo</td>
        </tr>
        <%
        while not rs.eof
       
        hit = cint(rs("hitrate"))
        readysaldo = cint(rs("readysaldo"))
        besvarelse = cint(rs("besvarelse"))
        readyprocent = cint(rs("readyprocent"))
       
        ' Farve for hitprocent
        if hit => 100 then
        hitbgcolor = "#339966"
        hittextcolor = "ffffff"
        end if
       
        if hit => 85 and hit =< 99.9 then
        hitbgcolor = "#ffff99"
        hittextcolor = "000000"
        end if
       
        if hit =< 85 then
        hitbgcolor = "#ff0000"
        hittextcolor = "ffffff"
        end if
       
        ' Farve for readysaldo
        if readysaldo => 1 then
        saldobgcolor = "#339966"
        saldotextcolor = "ffffff"
        end if
       
        if readysaldo =< 0 then
        saldobgcolor = "#ff0000"
        saldotextcolor = "ffffff"
        end if
       
        ' Farve for besvarelse
        if besvarelse => 90 then
        besvbgcolor = "#339966"
        besvtextcolor = "ffffff"
        end if
       
        if besvarelse => 80 and besvarelse =< 89  then
        besvbgcolor = "#ffff99"
        besvtextcolor = "000000"
        end if
       
        if besvarelse =< 79 then
        besvbgcolor = "#ff0000"
        besvtextcolor = "ffffff"
        end if
       
        ' Farve for ready % idag
        if readyprocent => 70 then
        readybgcolor = "#339966"
        readytextcolor = "ffffff"
        end if
       
        if readyprocent =< 69.9 then
        readybgcolor = "#ff0000"
        readytextcolor = "ffffff"
        end if

       
           
        %>
        <tr class="hitraterows">
        <td width="14" bgcolor="FFCC99">&nbsp;<% =rs("navn") %></td>
        <% if rs("kald") <> "0" then %>
        <td width="20">&nbsp;<% =rs("kald") %></td>
        <td width="40">&nbsp;<% =rs("reg") %></td>
        <td width="20">&nbsp;<% =rs("listen") %></td>
        <td width="20">&nbsp;<% =rs("pot") %></td>
        <% else %>
        <td width="20">&nbsp;0</td>
        <td width="40">&nbsp;0</td>
        <td width="20">&nbsp;<% =rs("listen") %></td>
        <td width="20">&nbsp;0,0</td>
        <% end if %>
        <td width="20">&nbsp;<% =rs("produkter") %></td>
        <td width="20">&nbsp;<% =rs("abon") %></td>
        <td width="20" bgcolor="<% = hitbgcolor %>">&nbsp;<font color="<% =hittextcolor %>"><% =formatnumber(rs("hitrate"),1) %>%</font></td>
        <td width="20">&nbsp;<% =rs("points") %></td>
        <td width="20">&nbsp;<% =rs("avgproduktpoint") %></td>
        <td width="20">&nbsp;<% =rs("totalpoints") %></td>
        <td width="20" bgcolor="<% =readybgcolor %>">&nbsp;<font color="<% =readytextcolor %>"><% =formatnumber(rs("readyprocent"),0) %>%</font></td>
        <td width="20" bgcolor="<% =besvbgcolor %>">&nbsp;<font color="<% =besvtextcolor %>"><% =formatnumber(rs("besvarelse"),0) %>%</font></td>
        <td width="26" bgcolor="<% =saldobgcolor %>">&nbsp;<font color="<% =saldotextcolor %>"><% =rs("readysaldo") %></font></td>
        </tr>
        <%
        rs.movenext
        wend
        set rs = nothing
        %>
</table>

includefilen: OracleConnXal1.asp:
<%
dim oracleconn, oracleobj

Function OoracleConn()

Set oracleconn = Server.CreateObject("ADODB.Connection")

oracleConn.Open "dsn=xal1;uid=web_test;pwd=web_test_psw;"

End Function

Function oracle(sRSSource)
    'if oracleConnObj.State = 0 then
        OoracleConn()
    'end if
    Set oracleObj = Server.CreateObject("ADODB.Recordset")
    oracleObj.Open sRSSource, oracleconn, 1,&H0002
    RSCounter = oracleObj.RecordCount
    Set oracle = oracleObj
   
    Set oracleObj = Nothing
   
End Function

Sub Closeoracle()
    oracleConn.Close
End Sub
%>
Avatar billede agerled Nybegynder
21. april 2004 - 18:16 #1
den melder denne fejl hver gang jeg prøver at lave en distinct() eller SUM() i en forespørgsel...
Avatar billede thesurfer Nybegynder
21. april 2004 - 18:21 #2
Du lukker forbindelsen for tidligt:

Function oracle(sRSSource)
    'if oracleConnObj.State = 0 then
        OoracleConn() ' her lukkes forbindelse!

Prøv:

Function oracle(sRSSource)
    'if oracleConnObj.State = 0 then
       
    'end if
    Set oracleObj = Server.CreateObject("ADODB.Recordset")
    oracleObj.Open sRSSource, oracleconn, 1,&H0002
    RSCounter = oracleObj.RecordCount
    Set oracle = oracleObj
 
    Set oracleObj = Nothing
  OoracleConn() ' luk forbindelsen
End Function
Avatar billede thesurfer Nybegynder
21. april 2004 - 18:22 #3
Eller:

    'if oracleConnObj.State = 0 then
    '    OoracleConn()
    'end if


Eller uden ' tegnene:

    if oracleConnObj.State = 0 then
        OoracleConn()
    end if
Avatar billede agerled Nybegynder
21. april 2004 - 18:25 #4
jeg har prøvet alle de ting du nævner, men får desværre stadig samme fejl..
Avatar billede agerled Nybegynder
21. april 2004 - 18:26 #5
jeg tror ikke det er fordi jeg lukker forbindelsen for tidligt for det virker fint hvis jeg laver en helt alm select * from table....?
Avatar billede thesurfer Nybegynder
21. april 2004 - 18:35 #6
Jeg kiggede forkert..

Prøv det her:

    RSCounter = oracleObj.RecordCount
    oracle = oracleObj  ' uden "Set"

i stedet for det her:

    RSCounter = oracleObj.RecordCount
    Set oracle = oracleObj
Avatar billede kimovitch Nybegynder
21. april 2004 - 19:09 #7
Hej
> thesurfer: Det skal være SET oracle

>agerled:
Fejlen er at du ikke tester om recordsettet rs er tomt før du henter værdier fra det

Her:
<td bgcolor="FFFFCC" colspan="4">&nbsp;<font size="2"><b><% =rs("dato") & " kl. " & left(rs("lastupdate"),5) %></b></font></td>

M.v.h.
Kim
Avatar billede agerled Nybegynder
21. april 2004 - 19:20 #8
--> kimovitch:

det er ikke den linie der fejler. Det er når jeg laver den select distinct() til min selectbox..
Avatar billede agerled Nybegynder
21. april 2004 - 19:27 #9
Når jeg fjerner dette stykke kode virker det fint:

<select name="dato" class="login">
        <%
        set datoer = oracle("select distinct(dato) from hitrate_dk order by dato DESC")
        while not datoer.eof
        %>
        <option value="<% =datoer("dato") %>"><% =datoer("dato") %></option>
        <%
        datoer.movenext
        wend
        set datoer = nothing
        %>
        </select>
Avatar billede kimovitch Nybegynder
21. april 2004 - 20:04 #10
Hm...lyder weird

Under alle omstændigheder får du fejl hvis der ikke er nogen poster i hitrate_dk for dags dato, så det burde du nok rette.
Jeg har ikke arbejdet med oracle, så jeg ved ikke om der er specielle ting at tage hensyn til m.h.t. sql - normalt skriver jeg SELECT DISTINCT dato i stedet for SELECT DISTINCT(dato), men har lige testet i Access og begge dele fungerer fint så det er næppe det...

Jeg tygger lige lidt på det.
Kim
Avatar billede agerled Nybegynder
21. april 2004 - 20:07 #11
tak for det..
Avatar billede thesurfer Nybegynder
21. april 2004 - 20:26 #12
hmm.. du kalder på en funktion (kaldet "oracle"):
set datoer = oracle("sele.....")

Når en funktion skal returnere noget, skriver man: funktionens_navn = værdi

agerled> har du prøvet?: oracle = oracleObj  ' uden "Set"
Avatar billede agerled Nybegynder
21. april 2004 - 20:32 #13
jeg har ikke prøvet uden "set" endnu da jeg ikke længere er på arbejde og først kan teste det i morgen.

Jeg har ikke selv lavet den funktion så hvis der er nogen der har en bedre måde den kan laves på er i velkomne til at komme med forslag..
Avatar billede agerled Nybegynder
21. april 2004 - 20:35 #14
jeg har også prøvet at tage distinct med i min første select sætning så jeg allerede har resultatet der: <% set rs = oracle("select distinct(dato) as dato,* from hitrate_dk where dato = '" & date() & "' and navn <> 'dagstotal' order by hitrate DESC") %>

...men det virker heller ikke. Ved ikke om det overhovedet kan lade sig gøre i samme sætning?
Avatar billede kimovitch Nybegynder
21. april 2004 - 20:54 #15
Dine funktioner virker fint, jeg har lige bakset en access db sammen med de samme feltnavne som du bruger - og jeg får ingen fejl med distinct. Jeg tror stadig mest på at det er det første recordset (rs) der laver fejl. Når du får lejlighed til at prøve det synes jeg du skal teste det ved at smide en 'if not rs.eof' rundt om den øverste tabelrække. Som sagt kan der være noget oracle-specifikt - evt. med dato-formattering, men den stump kode du mener der er fejl i er meget enkel, så...

Hvor mange linier har du ovenover det du har sendt (af hensyn til fejl-linie nr)?
-Kim
Avatar billede kimovitch Nybegynder
21. april 2004 - 20:55 #16
P.s.: Jeg har prøvet funktionen uden set og det virker ikke.
Avatar billede agerled Nybegynder
21. april 2004 - 21:02 #17
det er denne linie den melder fejl i:
RSCounter = oracleObj.RecordCount

...men jeg har prøvet at udkommentere den og giver stadig samme fejl.
Avatar billede kimovitch Nybegynder
21. april 2004 - 21:13 #18
Jeg har ikke flere gode ideer lige nu...
Som sagt virker det hos mig i en Access - med datoer i drop-down box og farver osv.
Lad os se på det imorgen, når du har adgang til at teste.
M.v.h.
Kim
Avatar billede agerled Nybegynder
21. april 2004 - 21:16 #19
ok, takker..
Avatar billede agerled Nybegynder
22. april 2004 - 08:55 #20
godmorgen. der var desværre ikke nogle af jeres forslag der hjalp. Andre?
Avatar billede kimovitch Nybegynder
22. april 2004 - 10:04 #21
Ja. Nu bliver jeg stædig...
Her er din kode, hvor jeg har pillet alt der ikke har noget med recordsettet 'datoer' at gøre ud, prøv at gemme den som f.eks. 'test1.asp' og se om der sker noget.
Kim

<%
dim oracleconn, oracleobj

Function OoracleConn()
  Set oracleconn = Server.CreateObject("ADODB.Connection")
  oracleConn.Open "dsn=xal1;uid=web_test;pwd=web_test_psw;"
End Function

Function oracle(sRSSource)
    'if oracleConnObj.State = 0 then
        OoracleConn()
    'end if
    Set oracleObj = Server.CreateObject("ADODB.Recordset")
    oracleObj.Open sRSSource, oracleconn, 1,&H0002
    RSCounter = oracleObj.RecordCount
    Set oracle = oracleObj
   
    Set oracleObj = Nothing
End Function

Sub Closeoracle()
    oracleConn.Close
End Sub
%>

<%
set datoer = oracle("select distinct(dato) from hitrate_dk order by dato DESC")
while not datoer.eof
  response.write datoer("dato") & "<br>"
  datoer.movenext
wend
set datoer = nothing
%>
Avatar billede agerled Nybegynder
22. april 2004 - 10:34 #22
har jeg gjort nu, men den melder stadig samme fejl:

Fejltype:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
/intranet/test1.asp, line 15
Avatar billede agerled Nybegynder
22. april 2004 - 10:36 #23
først melder den at fejlen er her: RSCounter = oracleObj.RecordCount

...hvis jeg så tager den linie væk melder
den at fejlen er her: while not datoer.eof

...?
Avatar billede kimovitch Nybegynder
22. april 2004 - 10:50 #24
Tre ting mere, du kan prøve for at finde fejlen (en ad gangen):
1: Test en helt skrabet sql:
  set datoer = oracle("select dato from hitrate_dk")

2: Fjern linien 'Set oracleObj = Nothing' i functionen oracle

3: Fjern de to sidste parametre fra den linie der åbner recordsettet:
  oracleObj.Open sRSSource ', oracleconn, 1,&H0002
  (Også RSCounter, da den er afhængig af cursor-typen)
Avatar billede agerled Nybegynder
22. april 2004 - 10:59 #25
jeg kan sagtens lave en helt almindelig sql. det har jeg hele tiden kunne, men lige meget hvad jeg gør så melder den fejlen når jeg vil lave en distinct eller Sum..
Avatar billede agerled Nybegynder
08. november 2004 - 07:22 #26
lukket.
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