• User Newbie

    [ASP.NET] usare un parametro per il nome della tabella

    Un saluto al forum.

    questa la mia domanda,

    ho questo codice

    
               <asp:AccessDataSource ID="magazzino" runat="server" DataFile="mdb-database/magazzino.mdb"
            SelectCommand="SELECT * FROM prodotto WHERE ([id] <>0)">
         <SelectParameters>
                <asp:QueryStringParameter Name="aa" QueryStringField="tab" />
         </SelectParameters>
               </asp:AccessDataSource>      
    
    ```passando con metodo GET il nome della tabella nella variabile "tab",
    
    posso assegnare come nome di tabella nella select la variabile aa ricavata dalla QueryStringField ?
    
    ossia posso fare una cosa del genere :
    SelectCommand="SELECT * FROM aa WHERE ([id] <>0)"
    
    Grazie di eventuale risposta.

  • User

    Premetto che non amo gli oggetti AccessDataSource e SqlDataSource quindi non li conosco bene.

    Comunque, per quanto ho potuto constatare, questi oggetti non ti permettono di selezionare il nome della tabella a seconda di una variabile. Devo dire che mi trovo d'accordo con MS, poiché nella pagina usi la stessa struttura e quindi dovresti usare una tabella sola, in aggiunta ad un discriminatore (se hai bisogno di fare delle distinzioni), cioè un campo che indica il tipo di record, ergo è giusto solo l'uso del/i parametro/i di select.

    Se vuoi, in ogni caso, cambiare il nome della tabella in accordo ad un parametro get, devi cambiare la select nell'evento onLoad della pagina.

    
    protected void Page_Load(object sender, EventArgs e)
    {
    String nomeTabella = Request.QueryString["tab"];
    if (!String.IsNullOrEmpty(nomeTabella))
       magazzino.SelectCommand = String.Format("select * from {0} where ([id] <> 0)", nomeTabella);
    }
    
    

    Spero di essere stato chiaro
    :ciauz:


  • User Newbie

    Grazi Holin
    si hai spiegato bene la cosa e ho capito il sistema.

    grazie