Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Nessun valore predefinito per il parametro [@categoria].

    ciao scusa il disturbo ma navigando ho visto che hai avuto e poi risolto un porblema simile al mio riguardo una pagina asp.net

    ho questo problema:
    dato il listato seguente quando vado a compilare e processare la riga

    dim objreader as oleDBdataReader =objbike.ottienicategoria(categoriaID)

    mi viene dato quest'errore:
    Nessun valore predefinito per il parametro [@categoria].

    questo è il listato

    <%@ Page Language="VB" Debug="true" %>
    <%@ Register TagPrefix="bike" TagName="intestazione" Src="intestazione.ascx" %>
    <%@ Register TagPrefix="bike" TagName="menu" Src="menu.ascx" %>
    <%@ import Namespace="system.data" %>
    <%@ import Namespace="system.data.oledb" %>
    <script runat="server">

    sub page_load(sender as object, e as eventargs)
    'ottieni categoriaid grazie query
    dim categoriaID as string = cstr(request.params("cat"))

    'imposta immagine e etichetta
    image1.imageurl = "images/" & categoriaID & ".gif"
    label1.text = "" & categoriaID & ""

    'popola elenco con categorie prodotti
    dim objbike as new bikebuilding.bikebuilding


    dim objreader as oleDBdataReader =objbike.ottienicategoria(categoriaID)




    datalist1.datasource=objreader
    datalist1.databind()
    objreader.close()
    objbike.disponi
    end sub

    </script>
    <html>
    <head>
    </head>
    <body>
    <td align="top" width="110">
    <asp:Image id="Image1" align="texttop" border="1" runat="server"></asp:Image>


    <asp:Label id="Label1" runat="server"></asp:Label></td>
    <td valign="top">
    <form runat="server">
    <aspataList id="DataList1" runat="server" RepeatColumns="2">
    <ItemTemplate>
    <table width="200">
    <tbody>
    <tr>
    <td valign="center" width="200">
    <%# container.dataitem("nome")%>


    <%# container.dataitem("descrizione")%>


    Prezzo: <%# system.string.format("{0;c}", container.dataitem("prezzo"))%>


    <a href="aggiungialcarrello.aspx?partID=<%# container.dataitem("partid")%>&cat=<%# container.dataitem("categoria")%>"> <font color="#9d0000"> Aggiungi
    al carrello
    </font> </a></td>
    </tr>
    </tbody>
    </table>
    </ItemTemplate>
    </aspataList>
    </form>
    </td>
    </body>
    </html>

    la funzione ottienicategoria è dichiarata all'interno di un file .vb (corretamente compilato) come segue:

    public function ottienicategoria (categoria as string) as _
    oledbdatareader
    dim reader as oledbdatareader

    dim objcmd as new oledbcommand ("ottienicategoria", _
    conn)
    objcmd.commandtype = commandtype.storedprocedure

    dim param = new oledbparameter ("@categoria", _
    oledbtype.char)
    param.value = categoria
    objcmd.parameters.add(param)

    try
    conn.open
    reader = objcmd.executereader
    catch e as exception
    throw e
    end try

    return reader
    end function

    e la stored procedure in access ottienicategoria(si chiama cosi anche lei) recita così:

    SELECT partid, nome, prezzo, descrizione, categoria
    FROM tblparti
    WHERE categoria=[@categoria];



    sapreste darmi una mano?? grazie

  2. #2
    objcmd.parameters.add("@categoria",categoria)

    prova in modo!

  3. #3
    ciao ho provato come suggerito da te ma mi da lo stesso errore..

  4. #4
    Non uso access quindi non saprei dirti bene l'errore pero' prova ad approfondire l'uso della proprieta' SourceColumn dell'oggetto parameter (access non ha delle vere e proprie storedprocedure quindi probabile sia necessario specificargli questa proprieta' per usare query parametriche).
    Per il resto, la funzione che hai scritto fossi in te non la userei o perlomeno cambierei il valore di ritorno. Non mi sembra infatti una grande idea far restituire un datareader da una funzione per il semplice motivo che il datareader e' intimamente legato con la connessione che quindi andrebbe aperta usata e chiusa il prima possibile e nel punto in cui serve. Semmai, sarebbe piu' corretto che la funzione restituisse una datatable che invece e' un oggetto cosideetto disconnesso e quindi lo puoi far andare da una libreria all'altra a cuor leggero.
    Saluti a tutti
    Riccardo

  5. #5
    ho provato utilizzando il valore sourcecolumn scrivendo così:

    dim param = new oledbparameter ("@categoria", _
    oledbtype.char)
    param.value = categoria

    param.sourcecolumn = ("@categoria")

    ma stavolta mi dice:

    numero parametri insufficienti. previsto 1

  6. #6
    dovresti riscrivere il codice completo della procedura che usi per creare ed assegnare il parametro al command
    Saluti a tutti
    Riccardo

  7. #7
    ho risolto eliminando la @ dalla funzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.