Avatar billede tjgrindsted Nybegynder
10. januar 2007 - 22:25 Der er 14 kommentarer og
1 løsning

kan ikke sætte en Request.QueryString som er lig med session

Jeg har dette i min default.aspx.vb
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs)
        Dim PageID As Integer
        Session("pageid") = PageID
        If Request.QueryString("PageIdentity") = "" Then
            PageID = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            PageID = Request.QueryString("PageIdentity").ToString
        End If
    End Sub

End Class


Og så har jeg dette på min default.aspx
        Dim CommandText As String = "SELECT [myID], [myText] FROM [mainText] WHERE [myID] ='" + Session("pageid") + "'"
        cmd = New OleDbCommand(CommandText)
  cmd.Connection = con
  rdr = cmd.ExecuteReader()

..::Problem::..
Når jeg køre test i VWD2005EE så får jeg denne fejl:
Detaljer om undtagelse: System.Data.OleDb.OleDbException: Datatyperne stemmer ikke overens i kriterieudtrykket.

Kildefejl:


Linje 48:        cmd = New OleDbCommand(CommandText)
Linje 49:  cmd.Connection = con
Linje 50:  rdr = cmd.ExecuteReader()
Linje 51:   
Linje 52:  Dim strText As String = ""


omkring linje 50.

..::Ønske::..
Session(pageid) skal være = med PageID som er = med Request.QueryString("PageIdentity").

Til at starte på når man vil gå ind på default.aspx så vil Request.QueryString("PageIdentity") jo være = "" derfor skal Session(pageid) så være = "1".
derefter vil PageIdentity så være = med et tal og så er Session(pageid) så = dette fra Request.QueryString("PageIdentity").

Men hvad skyldes denne fejl !?
Avatar billede helmet Nybegynder
10. januar 2007 - 22:28 #1
Er myID i din database et tekstfelt?
Avatar billede kalp Novice
10. januar 2007 - 22:36 #2
Dim CommandText As String = "SELECT [myID], [myText] FROM [mainText] WHERE [myID] =" + Session("pageid") + ""
Avatar billede flashit Nybegynder
10. januar 2007 - 22:39 #3
Hvilken værdi har Session("pageid") når du kommer til din sql. Jeg kan nemlig ikke se hvor du sætter den.

Hvad med dette:

  If Request.QueryString("PageIdentity") = "" Then
            Session("pageid") = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            Session("pageid") = Request.QueryString("PageIdentity").ToString
        End If
Avatar billede kalp Novice
10. januar 2007 - 22:42 #4
Da jeg smutter ligger jeg lige et svar hvis jeg ramte rigtigt..

men ellers kan du finde dit problem i indholdet af denne

CommandText

debug og se hvad den indeholder..
Avatar billede tjgrindsted Nybegynder
10. januar 2007 - 22:48 #5
HELMET
Nej det er et Autonum.


FLASHIT
Hvis Request.QueryString("PageIdentity") = "" så er Session("pageid") = "1"


KALP
Det hjalp ikke at fjerne ' og '



Hvis jeg fjerner ' og ' så kommer denne fejl om linje 50
Detaljer om undtagelse: System.Data.OleDb.OleDbException: Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "[SiteMainID] =".
Avatar billede tjgrindsted Nybegynder
10. januar 2007 - 22:49 #6
Ved Debug er CommandText Nothing
Avatar billede flashit Nybegynder
10. januar 2007 - 23:02 #7
Er det bare mig :-)

If Request.QueryString("PageIdentity") = "" Then
            PageID = "1"

Det giver at ikke din session nogen værdi?
Avatar billede flashit Nybegynder
10. januar 2007 - 23:03 #8
Session("pageid") = PageID

skal vel være under dín if else
Avatar billede tjgrindsted Nybegynder
11. januar 2007 - 00:12 #9
Okay men hvis jeg laver min kode om i default.aspx.vb til:
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs)
        If Request.QueryString("PageIdentity") = "" Then
            Session("pageid") = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            Session("pageid") = Request.QueryString("PageIdentity").ToString
        End If
    End Sub

End Class

men gør jeg det og laver en Response.Write(Session("pageid")) på min default.aspx side så udskriver den intet altså Session("pageid") indenholder åbentbart ikke noget og den skulle jo være = 1 når man bare er på default.aspx og Request.QueryString("PageIdentity") er intet. !!
Avatar billede kalp Novice
11. januar 2007 - 09:21 #10
Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs)
        If Request.QueryString("PageIdentity") = "" Then
            Session["pageid"] = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            Session["pageid"] = Request.QueryString("PageIdentity").ToString
        End If
    End Sub

hvis ikke det skal gøres med skarpe []

så skal du nok ikke tjekke på om din query er = "" ,men rettere null !!
Avatar billede kalp Novice
11. januar 2007 - 09:31 #11
uden at kunne VB så tror jeg det er sådan.

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs)
        If  Request.QueryString("PageIdentity") = Nothing OrElse Request.QueryString("PageIdentity") = "" Then
            Session("pageid") = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            Session("pageid") = Request.QueryString("PageIdentity").ToString
        End If
    End Sub

End Class
Avatar billede tjgrindsted Nybegynder
11. januar 2007 - 22:06 #12
jeg kan bare ikke få det til at virke med det session.

Kalp du er mest til C# har jeg fundet ud af, hvordan ville dette se ud i C# !? for så kan jeg conventerer det til VB.

Har prøvet med det du skriver i default.aspx.vb og på min default.aspx har jeg så
Response.Write(Session("pageid"))
og et SessionParameter DefaultValue="1" Name="SiteMainID" SessionField="pageid"

Når jeg køre mit site i VWD2005EE så viser den selvf. record 1 med linket
default.aspx  men hvis jeg skriver default.aspx?PageIdentity=2 så viser den bare stadigvæk record 1 og min Response.Write(Session("pageid")) skriver intet i alle tilfælde så session("pageid") er altså af en eller andet grund ikke = noget..
Avatar billede kalp Novice
11. januar 2007 - 23:46 #13
først en sidste ting.. det du oprindeligt lavede skal nok se sådan her ud

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs)
        Dim PageID As Integer
        If Request.QueryString("PageIdentity") = "" Then
        Session("pageid") = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
        Session("pageid") = Request.QueryString("PageIdentity").ToString
        End If
    End Sub
End Class

hvis den brokker sig stadig så prøv lige at rette her også
Dim CommandText As String = "SELECT [myID], [myText] FROM [mainText] WHERE [myID] =" + Convert.ToInt32(Session("pageid")) + ""


hvis det ikke virker så må du lige fortælle hvilke datatyper det har du har i din db.. og endnu vigtige er at udskrive "CommandText" så vi kan se hvad den indeholder.
Avatar billede tjgrindsted Nybegynder
11. januar 2007 - 23:49 #14
Kalp  Jeg siger mange tak, jeg har ikke testet det sidste du skrev men kiggede lidt på det du skrev tidligere og kunne se at det manglede en handles me.load så rettede til dette:

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub page_load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        If Request.QueryString("PageIdentity") = Nothing OrElse Request.QueryString("PageIdentity") = "" Then
            Session("pageid") = "1"
        ElseIf Request.QueryString("PageIdentity") <> "" Then
            Session("pageid") = Request.QueryString("PageIdentity").ToString
        End If
    End Sub

End Class

og nu virker det som det skal mange 1000 tak.
Avatar billede kalp Novice
11. januar 2007 - 23:51 #15
super duper=)

tak for point;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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