Con più domande
Query di ricerca che restituisce vero o falso

Domanda
-
Buongiorno a tutti e buona domenica, premettendo che sono auto didatta e quindi con grandi lacune :-) vi chiedo un aiutino per il mio problema...sicuramente a voi semplice.
Ho un database con all'interno alcune tabelle, dentro alle tabelle una serie di record, dovrei fare un controllo di presenza di un codice in una di queste tabelle, per verificare che non ne esista uno "uguale", pensavo di creare una query di ricerca del codice che vorrei controllare e quindi dovrebbe restituirmi solo vero o falso, in modo da poter modificare il codice, ma non riesco a capire come fare...
Grazie
Guido
Tutte le risposte
-
Non so se sono sulla buona strada, ho trovato che andrebbe utilizzato l'operatore NULL per falsa e IS NULL per vera, ma in una query di questo tipo come si incorpora?
SELECT IdManutenzioni, Codice_Manutenzioni, Codice_Lavorazioni, Data_Manutenzione, Tipo_Manutenzione, Descrizione_Manutenzione, Note, c1, c2, c3 FROM dbo.Table_Manutenzioni WHERE (Codice_Manutenzioni = @Codice_Manutenzioni) ORDER BY Codice_Manutenzioni
Questa farebbe la ricerca del dato...
-
Non so se sono sulla buona strada, ho trovato che andrebbe utilizzato l'operatore NULL per falsa e IS NULL per vera, ma in una query di questo tipo come si incorpora?
SELECT IdManutenzioni, Codice_Manutenzioni, Codice_Lavorazioni, Data_Manutenzione, Tipo_Manutenzione, Descrizione_Manutenzione, Note, c1, c2, c3 FROM dbo.Table_Manutenzioni WHERE (Codice_Manutenzioni = @Codice_Manutenzioni) ORDER BY Codice_Manutenzioni
Questa farebbe la ricerca del dato...
Con ado.net, la query ti restituisce un insieme di "record". Se questo insieme non contiene elementi (cioè la sua dimensione è zero) vuol dire che la ricerca non ha avuto esito positivo.
- Modificato BlueLed domenica 30 agosto 2015 09:42
-
Ciao BlueLed, cercando ho provato a fare così...non so se è il modo migliore:
ho creato una query che mi restituisse il valore cercato, siccome creo le query in modo guidato...perdonate..ma di meglio non riesco, ho fatto la sequenza di creazione per la restituzione di un valore e scritta la seguente query:
SELECT Codice_Manutenzioni FROM Table_Manutenzioni WHERE (Codice_Manutenzioni = @Param1)
questa mi restituisce il valore cercato se esiste altrimenti mi da valore NULL, da qui verifico se esiste o no.
Giusto?
Guido
-
Ciao BlueLed, cercando ho provato a fare così...non so se è il modo migliore:
ho creato una query che mi restituisse il valore cercato, siccome creo le query in modo guidato...perdonate..ma di meglio non riesco, ho fatto la sequenza di creazione per la restituzione di un valore e scritta la seguente query:
SELECT Codice_Manutenzioni FROM Table_Manutenzioni WHERE (Codice_Manutenzioni = @Param1)
questa mi restituisce il valore cercato se esiste altrimenti mi da valore NULL, da qui verifico se esiste o no.
Giusto?
Guido
Dovrebbe andare bene. In quale contesto la esegui? Ado.Net? CodeFirst? Chi più ne ha più ne metta?
-
-
ho usato un database creato in LocalDB v11.0, spero fosse questo quello che volevi sapere...soprattutto per chi legge ed ha necessità di trovare una soluzione..
Comunque tu usi il Visual Basic, quindi anche in questo caso suppongo che hai lanciato la query tramite VB.NET.
-
si, infatti, non ho postato il codice perché pensavo che non fosse corretto inserirlo in un forum SQL....
Stavo guardando sul web per fare in modo che la query restituisse True o False usando il comando IF...ma non c'ho capito molto...potresti darmi un esempio e se possibile una piccola spiegazione? utilizzando l'ultima query postata... :-)
Grazie in anticipo...
- Modificato Guido.G domenica 30 agosto 2015 11:22 correzione
-
si, infatti, non ho postato il codice perché pensavo che non fosse corretto inserirlo in un forum SQL....
Stavo guardando sul web per fare in modo che la query restituisse True o False usando il comando IF...ma non c'ho capito molto...potresti darmi un esempio e se possibile una piccola spiegazione? utilizzando l'ultima query postata... :-)
Grazie in anticipo...
Qui ci sono esempi su come connettersi al db con Ado.Net
https://msdn.microsoft.com/it-it/library/dw70f090%28v=VS.110%29.aspx
Non ti serve ottenere True o False dalla query. Se il risultato della query viene memorizzato in un DbDataReader, come ad esempio SqlDataReader, la variabile di tipo DbDataReader avrà una proprietà chiamata HasRows che vale true se il risultato della query contiene almeno una riga o false altrimenti.
- Modificato BlueLed domenica 30 agosto 2015 11:39
-
-
ad esempio nel Link si trova questo esempio:
Private Sub HasRows(ByVal connection As SqlConnection) Using connection Dim command As SqlCommand = New SqlCommand( _ "SELECT CategoryID, CategoryName FROM Categories;", _ connection) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader() If reader.HasRows Then Do While reader.Read() Console.WriteLine(reader.GetInt32(0) _ & vbTab & reader.GetString(1)) Loop Else Console.WriteLine("No rows found.") End If reader.Close() End Using End Sub
però usano (perdonate la mia sintassi errata) creare la query sotto command, ma io la query già l'ho impostata nel database e non capisco come poter fare...
e...come si fa a capire da quale tabella leggerà idat? capisco che se, come nell'esempio lo indica la query.... ma se c'è il modo di non scrivere la query come nell'esempio e quindi usare quella memorizzata nel DB...come fare?- Modificato Guido.G domenica 30 agosto 2015 13:07
-
ad esempio nel Link si trova questo esempio:
Private Sub HasRows(ByVal connection As SqlConnection) Using connection Dim command As SqlCommand = New SqlCommand( _ "SELECT CategoryID, CategoryName FROM Categories;", _ connection) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader() If reader.HasRows Then Do While reader.Read() Console.WriteLine(reader.GetInt32(0) _ & vbTab & reader.GetString(1)) Loop Else Console.WriteLine("No rows found.") End If reader.Close() End Using End Sub
però usano (perdonate la mia sintassi errata) creare la query sotto command, ma io la query già l'ho impostata nel database e non capisco come poter fare...
e...come si fa a capire da quale tabella leggerà idat? capisco che se, come nell'esempio lo indica la query.... ma se c'è il modo di non scrivere la query come nell'esempio e quindi usare quella memorizzata nel DB...come fare?
Che vuol dire che hai la "query impostata nel database" ?
Hai una stored procedure? In tal caso qui mostra come eseguirla:
https://support.microsoft.com/it-it/kb/310070 -
-
volevo dire questo:
ho provato a vedere il link...mi dispiace..forse è troppo complicato per me...non ci arrivo.. :-(
e non è uno stored procedure...Il table adapter che ti ha creato il wizard dovrebbe gestire un data table. Se il numero di righe del data table è zero vuol dire che la query non ha prodotto risultati.
Per quanto il wizard possa automatizzare le cose, ti sarà difficile poi usarne i risultati se non conosci Ado.Net.
-
certo hai perfettamente ragione, proverò a prendere un libro sull'argomento e vedere di capirci qualcosa....hai un suggerimento?
qualcosa che possa capire...visto che...essendo autodidatta e non un professionista ...
grazie delle spiegazioni e dei riferimenti per l'aiuto.
Guido
-
certo hai perfettamente ragione, proverò a prendere un libro sull'argomento e vedere di capirci qualcosa....hai un suggerimento?
qualcosa che possa capire...visto che...essendo autodidatta e non un professionista ...
grazie delle spiegazioni e dei riferimenti per l'aiuto.
Guido
Puoi guardare qui:
"Recupero e modifica di dati in ADO.NET"
https://msdn.microsoft.com/it-it/library/ms254937%28v=vs.110%29.aspx"DataSet, DataTable e DataView"
https://msdn.microsoft.com/it-it/library/ss7fbaez%28v=vs.110%29.aspx"ADO.NET"
https://msdn.microsoft.com/it-it/library/e80y5yhx%28v=vs.110%29.aspx___________________________________
La query per il vero o falso la puoi fare così:
SELECT COUNT(*) > 0
FROM Table_Manutenzioni
WHERE Codice_Manutenzioni = @Param1ti restituisce 1 o 0
-
certamente BlueLed ti ha messo sulla strada giusta ma io non ho capito se tu vuoi lavorare con il codice di una applicazione esterna oppure vuoi lavorare solo con T-SQL dentro al database.
puoi spiegarti meglio ?
la ricerca di questo codice a cosa ti serve ?
Edoardo Benussi
Microsoft MVP - Directory Services
edo[at]mvps[dot]org -
Grazie BlueLed, proverò a leggere vedere se riesco a capirci qualcosa e proverò la query.
Ciao Edoardo, all'inizio cercavo una query...ma anche l'uso di ADO non mi dispiace, visto che provo a pasticciare in VB.net, ma come dico sempre...fino alla nausea...sono autodidatta e quindi con un mare di lacune, sono interessanti entrambi i modi....
a me serviva per fare un controllo in una cella di una tabella, verificando se esiste un dato ugualea quello che l'applicazione sta creando, in modo da non crearne uno già esistente.
Guido
- Modificato Guido.G lunedì 31 agosto 2015 10:29 correzione
-
Ciao...
io farei una di queste 3 cose (in ordine di preferenza):
- indice univoco sul campo di ricerca interessato
- sp con parametro di controllo e codice "IF EXIST (tua select)"
- usare nel codice "IF EXIST (tua select)"
- Modificato Piv47 martedì 1 settembre 2015 08:24