Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Ricerca elementi (query access)

    Ho una query del tipo
    ...
    WHERE ((Contratti.DataContratto)>=[@DataInizio] And (Contratti.DataContratto)<=[@DataFine]) AND (Contratti.CodiceGruppoCliente = @CodiceGruppoCliente) AND (Contratti.CodiceAzione = @CodiceAzione) AND (Contratti.CodiceTariffa = @CodiceTariffa)
    GROUP BY Anag_Comuni.Comune;

    e da codice:

    DsDati = new DataSet();
    myCommandCP.Parameters.Add(new OleDbParameter("@DataInizio", DataInizioRic.Text));
    myCommandCP.Parameters.Add(new OleDbParameter("@DataFine", DataFineRic.Text));
    myCommandCP.Parameters.Add(new OleDbParameter("@CodiceGruppoCliente", ddlGruppoRic.SelectedValue));
    myCommandCP.Parameters.Add(new OleDbParameter("@CodiceAzione", ddlAzioneRic.SelectedValue));
    myCommandCP.Parameters.Add(new OleDbParameter("@CodiceTariffa", ddlTariffaRic.SelectedValue));
    myCommandCP.CommandType=CommandType.StoredProcedur e;
    OleDbDataAdapter DataAdatp = new OleDbDataAdapter(myCommandCP);
    DataAdatp.Fill(DsDati, "ElencoContratti");

    Come posso modificare la query per fare in modo che, anche se non passo valori al codice

    (esempio ddlTariffaRic.SelectedValue nullo) mi vengano selezionati *tutti* gli elementi .... a differenza di quanto ddlTariffaRic.SelectedValue ha un valore, caso in cui mi vengono recuperati solo gli elementi che contengono tale valore?

  2. #2
    Allora, cerco di essere breve e chiaro:

    Prima di tutto ti conviene utilizzare una storedProcedure e l'esempio che ti riporto fà riferimento ad una tabella (inventata al momento) su cui ci sono diversi campi.

    Supponiamo di avere la tabella Anagrafica che contiene i campi: Nome,Cognome,DataDiNascita,CodiceFiscale,Indirizzo .

    Ora creo una storedProcedure che mi permetta di ricercare all'interno di questa tabella secondo uno o più parametri "passati":
    codice:
    CREATE PROCEDURE anagraficaCerca 
     @Nome varchar(20) = null,
     @Cognome varchar(20) = null, 
     @DataDiNascita datetime = null,
     @CodiceFiscale char(16) = null, 
     @Indirizzo varchar(20) = null
    AS
     SELECT a.Nome,a.Cognome,a.DataDiNascita,a.CodiceFiscale,a.Indirizzo
     FROM dbo.Anagrafica a
     WHERE a.Nome = ISNULL(@Nome,a.Nome)
     AND a.Cognome = ISNULL(@Cognome,a.Cognome)
     AND a.DataDiNascita = ISNULL(@DataDiNascita,a.DataDiNascita)
     AND a.CodiceFiscale = ISNULL(@CodiceFiscale,a.CodiceFiscale)
     AND a.Indirizzo = ISNULL(@Indirizzo,a.Indirizzo)
    Nota nella storedProcedure tutti i parametri sono impostati @Param = NULL in fase di dichiarazione, in questo modo possiamo successivamente omettere il passaggio del parametro, e se sono null quando viene eseguita la query provvedere a sostituire ognuno di essi con il corrispettivo valore di colonna della tabella ( ... Table.Param = ISNULL(@Param, Table.Param) in questo modo vengono selezionati tutti i dati in quando l'uguaglianza e logica trattandosi di una comparazione del tipo Colonna = StessaColonna.

    Per quanto riguarda la scrittura del codice, niente di speciale. Io "mastico c#" e te lo scrivo cosi come ricordo:

    supponiamo di avete i seguenti campi:
    Nome: TextBox
    Cognome: TextBox
    DataDiNascita: DateTimePicker
    CodiceFiscale: TextBox
    Indirizzo: TextBox

    Ora la porzione di codice in cui viene inizializzato un oggetto di tipo System.Data.SqlClient.SqlCommand:

    codice:
     SqlCommand cm = new SqlCommand(...)
     if(!string.IsNullOrEmpty(Nome.text))
      cm.Parameters.Add(....)
    stessa cosa vale per tutti gli altri campi, spero di esserti stato d'aiuto, se hai dubbi avvisami! Questo è solo uno dei tanti modi in cui è possibile eseguire query di questo tipo!
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Scusa ma io utilizzo access... infatti avevo scritto query Access.... ecco perchè stavo utilizzando le stored query... come posso fare?

    Thanks

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.