Jag har hållt på hela kvällen. I webbverktyget använder jag getRows() och sparar dom i olika sessioner, typ session("listAllLinks")
Dom tilldelas när man loggar in:
[b]confirm.asp[/b]
' ## LIST UNSENT OFFERS
SQL = "SELECT * FROM [job] " _
& " WHERE [x_userID] = " & session("x_memberID") _
& " AND [x_isSent] = FALSE;"
set mySQL = Conn.Execute(SQL)
on error resume next
session("listUnsentOffers") = mySQL.GetRows()
Sen är det tänkt att man ska kunna titta på dom där... Det fungerar på en blank sida men inte på sidan koden egentligen ska ligga på!
73. IF session("listUnsentOffers") <> "" THEN
response.write "xxxxxxxx<BR><BR>"
END IF
För den där koden blir det:
Microsoft VBScript runtime error '800a000d'
Type mismatch
/production/offer/index.asp, line 73
Om jag däremot kör koden på en tom sida så är det helt okej, men om jag kör koden längst upp på den tänkta sidan (alltså innan all kod på rad 1) blir det runtime error.
Är inte session("listUnsentOffers") en array? Då tror jag inte du kan jämföra med tom sträng.
Har jag rätt för mig när jag tänker isArray()? I så fall kan du också kolla ubound på den andra dimensionen för att veta om det är en array och den inte är tom.
Om det går att göra på en tom sida, vet jag i så fall inte varför.
Mvh,
------------------
All your base are belong to me.
Om du plockar bort on error resume next så kommer du märka att du får ett felmeddelande. Det beror på att du inte kan göra .GetRows() på ett tomt recordset.
En liten ifsats alltså:
if not mySQL.eof then
session("listUnsentOffers") = mySQL.GetRows()
else
session("listUnsentOffers") = ""
end if
Nånting sånt kanske skulle göra susen?
Red: Tror jag i alla fall... ;)
Mvh,
------------------
All your base are belong to me.
Nytt problem
Denna gången inte relaterat till getRows() men dock till sessions.
Det gäller loginfunktionen på webbplatsen. En användare ska kunna vara antingen Leverantör [x_customer] eller Inköpare [x_member]. (Namnvalen är helt wacko men det får du ta...)
Inloggningen sker som brukligt, man kollar om användarens lösenord i databasen stämmer överens med det sparade värdet i databasen.
Om det gör det så tilldelas olika sessioner motsvarande värden från databasen.
OK, ni hajar. Längre ner på sidan tilldelas sessioner med olika getRows() ungefär som det ursprungliga problemet på denna tråd.
' ## LIST CUSTOMER / MEMBER MENU
IF mySQL("x_customer") = TRUE THEN
TMP = "SELECT * FROM [menu] WHERE [x_customer] = TRUE AND [x_view] = TRUE ORDER BY [x_sortfield];"
ELSEIF mySQL("x_member") = TRUE THEN
TMP = "SELECT * FROM [menu] WHERE [x_member] = TRUE AND [x_view] = TRUE ORDER BY [x_sortfield];"
END IF
set myTMP = Conn.Execute(TMP)
' on error resume next
session("listMenu") = myTMP.GetRows()
' ## LIST MEMBER MENU
IF mySQL("x_member") = TRUE THEN
TMP = "SELECT * FROM [menu] WHERE [x_member] = TRUE AND [x_view] = TRUE ORDER BY [x_sortfield];"
set myTMP = Conn.Execute(TMP)
' on error resume next
IF NOT myTMP.EOF THEN
session("listMemberMenu") = myTMP.GetRows()
ELSE
session("listMemberMenu") = ""
END IF
END IF
' ## LIST CUSTOMER MENU
IF mySQL("x_customer") = TRUE THEN
TMP = "SELECT * FROM [menu] WHERE [x_customer] = TRUE AND [x_view] = TRUE ORDER BY [x_sortfield];"
set myTMP = Conn.Execute(TMP)
' on error resume next
IF NOT myTMP.EOF THEN
session("listCustomerMenu") = myTMP.GetRows()
ELSE
session("listCustomerMenu") = ""
END IF
END IF
Det ser lite rörigt ut kanske men de tilldelade sessionerna används sedan i menu.asp som är inkluderad på varje sida.
Det är givetvis inte meningen att man ska se båda menyerna men grejen är att IF satsen fungerar inte!
Byter jag IF mySQL("x_customer") = TRUE... mot IF session("x_customer") = TRUE... då fungerar det som det är tänkt! Problemet består i att båda menyerna tolkas som TRUE. Jag testade att skriva ut session("x_customer") och session("x_member") i filen menu.asp och dom var korrekta.
---
Jag kör med sessions nu tills vidare för det fungerar men det är en sunkig och osnygg lösning och vad tycker vi om sunkiga och osnygga lösningr?? ;-)
Nej det hjälpte inte. Denna koden körs trots att värdet i x_member är FALSE.
' ## LIST MEMBER MENU
IF CBool(mySQL("x_member")) = TRUE THEN
TMP = "SELECT * FROM [menu] WHERE [x_member] = TRUE AND [x_view] = TRUE ORDER BY [x_sortfield];"
set myTMP = Conn.Execute(TMP)
' on error resume next
IF NOT myTMP.EOF THEN
session("listMemberMenu") = myTMP.GetRows()
ELSE
session("listMemberMenu") = ""
END IF
END IF
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2