Avatar billede plato Juniormester
03. marts 2003 - 23:14 Der er 45 kommentarer og
1 løsning

Object required.

Hejsa NG..

Dette er fejlen jeg får:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

Og her er grunden:
<%       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = " & Session("user")  & " AND mailread = false"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")%>   


Men hvorfor? er der fejl i det her. Det er kun et bid af en asp side, men det er selvstændigt.

Antal bliver kaldt sådan her:
Response.write("<img src='gfx/indbakkeimg.gif'><a href='mail.asp?mode=inbox'> Indbakke</a> (" & antal &") <br>")

Nogen der kan hjælpe ud fra disse oplysninger?
Avatar billede medions Nybegynder
03. marts 2003 - 23:16 #1
<%       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = false"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")%> 

//>Rune
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:17 #2
Typsik kommer fejlen hvis du ikke har defineret objekterne´og det er Conn og TheCount i dette tilfælde:

Set Conn = Server.CreateObject("ADODB.Connection")
Avatar billede medions Nybegynder
03. marts 2003 - 23:17 #3
Hvis det ikke virker så prøv sådan her:

<%       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 'false'"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")%> 

//>Rune
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:20 #4
Og så skal der også være en Connection ved Conn.Open hvis du ikke har det..:
 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("database.mdb")
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:21 #5
Måske du også skal medtage denne for recordset normalt ikke nødvendig ved Set TheCount = Conn.execute.

Set TheCount = Server.CreateObject("ADODB.Recordset")
Avatar billede plato Juniormester
03. marts 2003 - 23:22 #6
Skal jeg lave en connection når jeg bruger global.asa?
Avatar billede plato Juniormester
03. marts 2003 - 23:27 #7
Intet virker... Måske der skal mere indsigt i koderne..
Avatar billede plato Juniormester
03. marts 2003 - 23:28 #8
Her er mere af koderne. If session login, henter data fra en helt anden fil.
<%
        If Session("login") = False THEN
        %>
        <form method="post" name="adminlogin" action="login.asp">
        Brugernavn:<br><input class="bard" size="9" name="username" value="<%= Request.Form("Username")%>"><img src="gfx/profilimg.gif"><br>
          Password:<br><input class="bard" type="password" name="password"> <img src="gfx/laas.gif"><br>
        <input class="knap" type="image" src="gfx/login.gif"  name="Action">&nbsp;&nbsp;<a href="omlogin.asp" onclick="NewWindow(this.href,'link','215','205','no');return false;"><img src="gfx/question.gif" border="0"></a><br>
        <a href="login.asp" title="Opret ny bruger" class="pass">Opret bruger</a><br>
        <a href="login.asp" title="F&aring; tilsendt dit password" class="pass">Glemt password</a><br>

        </form>
<%       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 'false'"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")%>   

        <%
        Else
   
        Response.write("<b>Din pers. menu</b><br><img src='gfx/profilimg.gif'><a href='mail.asp?mode=own_profile'> Din profil</a><br>")
        Response.write("<img src='gfx/indbakkeimg.gif'><a href='mail.asp?mode=inbox'> Indbakke</a> (" & antal &") <br>")
        Response.write("<img src='gfx/brugerimg.gif'><a href='mail.asp?mode=bruger_list'> Brugere</a><br>")
        Response.write("<img src='gfx/forumimg.gif'><a href='forum.asp'> Forum</a><br>")
        Response.write("<img src='gfx/anmeldimg.gif'><a href='anmeld.asp'> Anmeld Film</a><br>")
        Response.write("<img src='gfx/forslaaimg.gif'><a href='forslaa.asp'> Forslå film</a><br><br>")
        Response.write("Du var sidst p&aring;<br>"& CreateDate(Session("lastlogon")) &"<br><br>")
        Response.write("<a href='logout.asp'><img src='gfx/logout.gif' border='0'></a>")
        End If
       
        %>
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:29 #9
Har du i koden en connection defineret som hedder Conn?
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:31 #10
Det kan være en skrive fejl:

eks hvis Response er stavet forkert jeg kan ikke umiddelbart se det i koden.
Avatar billede plato Juniormester
03. marts 2003 - 23:32 #11
Nej.. resten er html. men denne fil er kun en del af siden.. Venstre del. Hele siden i sig selv, mener jeg har en Conn.
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:33 #12
Ja hvad har du i globas.asa??
Der kan du kun ligge selve connection strengen du kan ikke åbne en conenction for generalt brug.
Avatar billede plato Juniormester
03. marts 2003 - 23:33 #13
Det kode der er her nu, er det eneste i den fil.
Og det er først efter den første kode jeg viste at det giver fejl.
Avatar billede plato Juniormester
03. marts 2003 - 23:34 #14
Her er min global:

<script language="vbscript" runat="server">
Sub Application_OnStart()
    Application("Online") = 0
    Application("Provider") = "Provider=Microsoft.Jet.Oledb.4.0;Data Source= " & server.MapPath("data.mdb")
End Sub

Sub Session_OnStart()
    Application.Lock
    Application("Online") = Application("Online") + 1
    Application.Unlock
    Session("login") = False
End Sub

Sub Session_OnEnd()
    Application.Lock
    Application("Online") = Application("Online") - 1
    Application.Unlock
End Sub
</script>
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:34 #15
Du skal havde en Conn for hver fil som bruger den eller skal du havde Conn i en include fil.
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:35 #16
OK så skal du tilføje dette i koden før sql sætningen:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("Provider")
Avatar billede plato Juniormester
03. marts 2003 - 23:35 #17
Hvis jeg sætter ind:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("data.mdb")     
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 'false'"

får jeg følgende fejl:

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.
Avatar billede plato Juniormester
03. marts 2003 - 23:36 #18
Samme fejl med:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("Provider")
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:36 #19
Er mailread et Ja/Nej felt så ska lder ikke ' omkring false:

SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = false"
Avatar billede plato Juniormester
03. marts 2003 - 23:37 #20
mailread er ja/nej
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:37 #21
Så prøv den sidste SQL jeg har vist.
Avatar billede plato Juniormester
03. marts 2003 - 23:38 #22
Det virker nu.. :)

Det sidste var løsningen plus:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("Provider")
Avatar billede plato Juniormester
03. marts 2003 - 23:38 #23
Tusind tak!
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:38 #24
Efter denne linie:

antal = TheCount("antal")%>

Bør du tilføje kode som lukker for connection igen

antal = TheCount("antal")
Conn.Close
Set Conn = Nothing
%>
Avatar billede plato Juniormester
03. marts 2003 - 23:39 #25
Den smækker jeg lige med :)
Avatar billede plato Juniormester
03. marts 2003 - 23:42 #26
Hmmm.. Jeg får ingen fejl.. Prøvede at sende en mail, jeg ikke har læst. Men den tæller den ikke?
Der er bare (), og der burde jo stå 1.
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:44 #27
Hvis du udskriver SQL2 passer Session navnet så med den som er modtager af mailen?
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:46 #28
false/true skulle gerne virke på Ja/Nej felter eller så prøv med 0 for false, men så skulle den vil fejle med false i:

SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 0"
Avatar billede plato Juniormester
03. marts 2003 - 23:46 #29
Du kan evt. prøve at logge ind på www.trailersiden.dk
Gæst
123456
Avatar billede plato Juniormester
03. marts 2003 - 23:47 #30
Ja.. Session user er den der er logget ind.Og mailen skal ikke tælles forend user er logget på.
Avatar billede plato Juniormester
03. marts 2003 - 23:49 #31
Det er uændret med 0 istedet for false.
Avatar billede plato Juniormester
03. marts 2003 - 23:51 #32
Nu jeg ser efter.. I taballen hvor mailen er..Hedder kolonnen mailmodtager, og user er i en anden tabel.
Måske skal user byttes ud med mailmodtager?
Avatar billede plato Juniormester
03. marts 2003 - 23:51 #33
Glem det sidste....Er vist træt..
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:54 #34
Din kode som hendter antallet ligge inde i Then på denne if sætning:

If Session("login") = False THEN


Koden skal ligge et std hvor den bliver udført før denne linie:

Response.write("<img src='gfx/indbakkeimg.gif'><a href='mail.asp?mode=inbox'> Indbakke</a> (" & antal &") <br>")
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:54 #35
Så den hendter kun antallet hvis man ikke er logget ind. Som jeg lige kan se.
Avatar billede plato Juniormester
03. marts 2003 - 23:55 #36
Det gør den også..Den ligger mellem </form> og <% else derefter :
Response.write("<img src='gfx/indbakkeimg.gif'><a href='mail.asp?mode=inbox'> Indbakke</a> (" & antal &") <br>")
Avatar billede plato Juniormester
03. marts 2003 - 23:57 #37
Okies.. Jeg er ikke lige med..

Skal den før if session("login")=false THEN ?
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:58 #38
Nej det skal flyttes så det ligge lige efter Else og ikke lige før Else.
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:59 #39
Som koden er nu:


      </form>
<%       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 'false'"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")%>   

        <%
        Else
   
        Response.write("<b>Din pers. menu</b><br><img src='gfx/profilimg.gif'><a href='mail.asp?mode=own_profile'> Din profil</a><br>")



Som koden skal være:


      </form>
        <%
        Else

       
SQL2 = "select count(*) as antal from mail WHERE mailmodtager = '" & Session("user") & "' AND mailread = 'false'"

Set TheCount = Conn.Execute(SQL2)   
antal = TheCount("antal")

   
        Response.write("<b>Din pers. menu</b><br><img src='gfx/profilimg.gif'><a href='mail.asp?mode=own_profile'> Din profil</a><br>")



BEMÆRK jeg har ikke Connection objectet med kun princippet i hvor det skal ligge.
Avatar billede eagleeye Praktikant
03. marts 2003 - 23:59 #40
:)
Avatar billede plato Juniormester
04. marts 2003 - 00:00 #41
Jeg lagde det før if session("login")=false THEN

Nu virker det! :o) Tak for din tålmodighed!
Vil du have fler points?
Avatar billede eagleeye Praktikant
04. marts 2003 - 00:01 #42
Nej det behøves ikke, selv tak :)
Avatar billede plato Juniormester
04. marts 2003 - 00:02 #43
Du skal næsten lige se:
Gæst
123456

har sendt en mail dertil

:-) Nu kan jeg sove roligt i nat :-)
Avatar billede eagleeye Praktikant
04. marts 2003 - 00:07 #44
Har du send den til Gæst?

Ja, jeg (også) smutter i seng nu, jeg skal tidligt op i morgen.
Avatar billede eagleeye Praktikant
04. marts 2003 - 00:09 #45
Jeg er imponeret over din side :) Den er rigtig flot lavet.
Avatar billede plato Juniormester
04. marts 2003 - 00:13 #46
Tusind Tak :-) Det kan jeg takke Izemate for. Han er også herinde fra..
Der er mange gode folk herinde :-)

Kan du så kommer i seng! ;-)
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