webForumDet fria alternativet

var är felet?

.NET

11 svar · 376 visningar · startad av MizzK

Medlem sedan juni 2003410 inlägg
Frågan#1

kan någon hjälpa mig att hitta felet.. följande felmeddelande kommer:

Typblandningsfel i villkorsuttryck

Dim antal As Integer = cmd.ExecuteScalar()

klagar den på.. försökt kolla av med db:n om jag angett fel i sql satsen, och vad jag ser är det rätt
i db attributen följande:

sortNr = tal
orderNr = text
datum = datum
antal = tal

 Function antalet(ByVal sortnr As Integer)

        'Skapar anslutning (anropar fran web.config)
        Dim strConn As String = GetstrConnection()
        Dim myConn As New OleDbConnection(strConn)

        Dim strsql As String = "SELECT Count(sortNr) AS Uttryck FROM kundvagn WHERE OrderNr = '" & Session("OrderNumber") & "' AND sortNr =  ' & sortnr & '"
        Dim myCommand As New OleDbCommand(strsql, myConn)

        Dim cmd As OleDbCommand = New OleDbCommand()
        cmd.CommandType = CommandType.Text
        cmd.Connection = myConn
        cmd.CommandText = strsql

        myConn.Open()
        Dim antal As Integer = cmd.ExecuteScalar()
        myConn.Close()

        Return antal

    End Function

    Sub AddToCart(ByVal Src As Object, ByVal Args As CommandEventArgs)
        Dim sortNr As Integer
        sortNr = CInt(Args.CommandName)

        If Session("OrderNumber") = "" Then
            Randomize()
            Session("OrderNumber") = (Int((9999999 - 1111111 + 1) * Rnd() + 1111111)).ToString()
        End If

        If antalet(sortNr) = 0 Then

            Response.Write("antalet= 0")

            Dim myconn As OleDbConnection = New OleDbConnection(GetstrConnection)
            myconn.Open()
            Dim strsql As String = "INSERT INTO Kundvagn (OrderNr, OrderDatum, SortNr, antal) VALUES"
            strsql = strsql + " ( '" & Session("OrderNumber") & "', '" & Today & "',  ' & sortNr & ', 1)"

            Dim myCommand As OleDbCommand = New OleDbCommand(strsql, myconn)
            myCommand = New OleDbCommand(strsql, myconn)
            myCommand.ExecuteNonQuery()
            myconn.Close()

        End If
        Response.Write("nu så")

    End Sub
Medlem sedan sep. 20011 914 inlägg
#2
Dim antal As Integer = DirectCast(cmd.ExecuteScalar(), Integer)
Medlem sedan juni 2003410 inlägg
#3

hjälper inte, är inte det som är felet.. =/

felet ligger ngnstans här

sortNr =  ' & sortnr & '
Medlem sedan sep. 20011 914 inlägg
#4

Så här då.

Dim antal As Integer = CType(cmd.ExecuteScalar(), Int)

Och ta bort

Dim cmd As OleDbCommand = New OleDbCommand()
cmd.CommandType = CommandType.Text
cmd.Connection = myConn
cmd.CommandText = strsql

red//Såg inte din redigering. Men ovan skall ändå vara rätt.

Medlem sedan sep. 20011 914 inlägg
#5
Dim strsql As String = string.Format("SELECT Count(sortNr) AS Uttryck FROM kundvagn WHERE OrderNr = '{0}' AND sortNr = {1}", Session("OrderNumber").ToString(), sortNr)
Medlem sedan juni 2003410 inlägg
#6

samma fel fortfarande:
kan inte felet ha ngt med detta:

 Dim sortNr As Integer
sortNr = CInt(Args.CommandName)

på knappen ser ut så här:

<asp:ImageButton ID="bestallknapp" CommandName='<%# Container.DataItem("sortNr") %>' AlternateText="kk" ImageUrl="../bilder/kk.gif" runat="server" OnCommand="AddToCart" />
Medlem sedan juni 2003410 inlägg
#7

tack Dino! den sql satsen hjälpte med fick samma fel nu fast på en annan rad..

myCommand.ExecuteNonQuery()
Medlem sedan dec. 20003 563 inlägg
#8

Du ska ta bort enkelfnuttarna kring sortNr

Medlem sedan sep. 20011 914 inlägg
#9
Dim strsql As String = string.Format("INSERT INTO Kundvagn (OrderNr, OrderDatum, SortNr, antal) VALUES('{0}', '{1}', {2}, {3})", Session("OrderNumber").ToString(), Today, sortNr, 1)"

Bättre är väl att använda Parametrar(lite osäker vb kod)

Dim strsql As String = string.Format("INSERT INTO Kundvagn (OrderNr, OrderDatum, SortNr, antal) VALUES(?, ?, ?, ?)"

Dim myCommand As OleDbCommand = New OleDbCommand(strsql, myconn)
myCommand.Parameters.Add(new OleDbParameter("@ordernr", Session("OrderNumber").ToString()))
myCommand.Parameters.Add(new OleDbParameter("@today", Today))
myCommand.Parameters.Add(new OleDbParameter("@sortnr", sortNr))
myCommand.Parameters.Add(new OleDbParameter("@antal", 1))
Medlem sedan juni 2003410 inlägg
#10

tog bort först bara ' ' på sorNr då fick jag detta:

Syntaxfel (operator saknas) i frågeuttrycket '& sortNr &'.

sedan tog jag bort & också och då fick jag detta:

No value given for one or more required parameters.

Medlem sedan juni 2003410 inlägg
#11

tusen tack DINO!

Medlem sedan juni 2003410 inlägg
#12

löst

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)