348 messaggi dal 10 marzo 2013
Ciao in un form della mia applicazione ho questa situazione:

ConnectionString="<%$ ConnectionStrings:EsaWebConnectionString %>"
SelectCommand="SELECT *
FROM [V_Professional]
WHERE (IdProfessional = @IdProfessional)
OR (@P_Cognome != '' AND @P_Nome != '' AND (P_Cognome LIKE '%' + @P_Cognome + '%' AND P_Nome LIKE '%' + @P_Nome + '%'))
ORDER BY [P_DataConsegnaBrev] DESC">

dove posso effetuare una ricercasia per id che per nome and cognome.

Mi si e' presentata pero' l'esigenza di dover effetuare una ricerca solo per cognome o solo per nome o nome e cognome.
il problema e' che nel modo in cui l'ho implementata io se cerco un cognome ok, se cerco nome ok, ma se cerco per nome e cognome trovo un elenco che contiene tutti i nomi e i cognomi , non solo per esempio Mario Volpi o Luca Volpi , ma un elenco dove ci sono tutti irecord che contengono Luca, Mario e Volpi.

Spero di essermi spiegato.
Grazie Mario
Ciao,

Non è molto chiaro: "dover effetuare una ricerca solo per cognome o solo per nome o nome e cognome". 'Solo' e 'o' vanno in contrasto.
Quindi tu cerchi nomi: Luca,Mario cognome: Volpi e vuoi tutti i 'Mario', tutti i 'Luca', tutti i 'Volpi' e tutti i 'Mario Volpi' e tutti i 'Luca Volpi'?
Altrimenti devi comporre la query da programma a seconda dell'esigenza

Ormai programmano tutti... ma la professionalità appartiene a pochi
348 messaggi dal 10 marzo 2013
Si, ho fatto una domanda cosi complicata che anche la risposta non l'ho capita.
Ma è colpa mia.

In pratica devo effettuare uina ricercxa sia per id che per cognome o per cognome è nome.

Cosi copme l'ho impostata io funziona bene se cerco per cognome e nome, ma se cerco solo il cognome ovviamente non trovo niente.

Quindi sto pensando di usare una textbox oltre a quelle che ci sono e creare una query che cerchi solo per cognome.

Cosa ne pensi?
Modificato da Oiram il 02 dicembre 2015 12.01 -
Oiram ha scritto:

In pratica devo effettuare uina ricercxa sia per id che per cognome o per cognome è nome.

SelectCommand="SELECT *
FROM [V_Professional]
WHERE (IdProfessional = @IdProfessional)
OR

Quindi per prima cosa qui non ci va un OR ma un AND (sia per id che per ...)

Ormai programmano tutti... ma la professionalità appartiene a pochi
Oiram ha scritto:
Quindi sto pensando di usare una textbox oltre a quelle che ci sono e creare una query che cerchi solo per cognome.

Mi spieghi come è fatta ora l'interfaccia?

Ormai programmano tutti... ma la professionalità appartiene a pochi
348 messaggi dal 10 marzo 2013
L'interfaccia per la ricerca è così composta : 3 text box una per l'id, una per il cognome e una per il nome. Quello che stavo pensando io e' di aggiungere un'altra text solo per la ricerca del cognome e ovviamente un pulsante cerca.
Non so e' sufficiente? O può esserti utile sapere che il tutto e'collegato ad un database sql e visualizzo i dati in gridview!
Quali altri dettagli posso darti? Considera (ma te ne sarai accorto) che non sono un esperto! Ci sto studiando sopra.
Figurati, non c'è problema :) sto solo cercando di capire l'esigenza.
Dimentico per un attimo il tuo post e mi rimetto allo standard.
Manteniamo come base il form che hai:
ID __________
Nome ____________
Cognome___________
|Cerca|

Io mi aspetto che:
- se compilo il solo campo nome, cerco per nome;
- se compilo il solo campo cognome cerco per cognome;
- se compilo nome e cognome cerco per nome AND cognome.
Analogamente per l'id.
Il codice che ne deriva è il seguente (scritto al volo):
string sql = "Select * from V_Professional ";
string sqlWhere = string.Empty;

if (!String.IsNullOrEmpty(txtNome.Text))
    sqlWhere += " AND Nome=@Nome ";
if (!String.IsNullOrEmpty(txtCognome.Text))
    sqlWhere += " AND Cognome=@Cognome ";
if (!String.IsNullOrEmpty(txtID.Text))
    sqlWhere += " AND IdProfessional =@IdProfessional ";

if (!String.IsNullOrEmpty(sqlWhere))
    sql += " Where " + sqlWhere.Substring(" AND ".Length);

sql += " Order by IdProfessional ";
//risoluzione dei parametri
// esecuzione del command

Ovviamente, a seconda delle necessità puoi sostituire = con like %
Modificato da manuel0081 il 02 dicembre 2015 15.08 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
348 messaggi dal 10 marzo 2013
solo un'altra cosa:

Questo blocco di codice lo inserisco nella pagina Vb (ovviamente con i dovuti accorgimenti visto che e' in C#? o nel code behind?

Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.