+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Creare una SELECT * FROM WHERE

  1. #1
    Giorgio_83 non è in linea Novello
    Post
    10

    Creare una SELECT * FROM WHERE

    Salve a tutti.
    Come da titolo ho una parte di codice Visual basic che rappresenta una tabella. Mi servirebbe creare una select che prenda tutti i campi (sia vuoti che pieni e,soprattutto,nulli). Qualcuno puo' aiutarmi? Posto il codice.

    codice:
    Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click
    
    Dim cm As New OleDb.OleDbCommand("SELECT * FROM Dati WHERE ") 'Problema
    cm.Parameters.AddWithValue("@ID", KeywordTextBox.Text)
    cm.Parameters.AddWithValue("@cognome", KeywordTextBox.Text)
    cm.Parameters.AddWithValue("@nome", KeywordTextBox.Text)
    cm.Parameters.AddWithValue("@CodiceFiscale", KeywordTextBox.Text)
    cm.Parameters.AddWithValue("@Note", KeywordTextBox.Text)
    
    
    
    cn.Open()
    cm.Connection = cn
    Search = cm.ExecuteReader
    
    While Search.Read()
    IDTextBox.Text = Search("ID")
    CognomeTextBox.Text = Search("Cognome")
    NomeTextBox.Text = Search("Nome")
    CodiceFiscaleTextBox.Text = Search("CodiceFiscale")
    NoteTextBox.Text = Search("Note")
    
    End While
    
    cn.Close()
    
    End Sub

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,635
    Blogs
    5
    Se deve prendere tutto usi una semplice

    Dim cm As New OleDb.OleDbCommand("SELECT * FROM Dati ")

    senza WHERE e senza parametri
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Giorgio_83 non è in linea Novello
    Post
    10
    Avevo provato a farlo ma mi da questo errore

    System.InvalidCastException: 'Cast non valido dal tipo 'DBNull' al tipo 'String'.'

    sul rigo del Search Note.

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,635
    Blogs
    5
    NoteTextBox.Text = Search("Note").ToString()
    Ultima modifica di AntonioG; 16-05-2020 07:18 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    Giorgio_83 non è in linea Novello
    Post
    10
    Allora Testato...
    (Prima di tutto ti ringrazio per l'aiuto che mi stai dando).
    Ho provato a mettere
    .toString
    al rigo note. Il problema si spostava al rigo cognome. Cosi' (a prescindere che non sono un esperto) l'ho messo a tutte le righe. Facendo una ricerca (inserendo solo il cognome) mi trova l'ultimo record inserito (qualsiasi cognome metto). Facendo un'altra ricerca va in errore,dicendo che l'id è univoco ed è presente in altre righe.Nel dubbio ho cancellato il record,ma salvandone un altro,da lo stesso errore con l'id successivo.

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,944
    Spiega meglio cosa vuoi fare. Vuoi cercare ed estrarre un solo record? Forse quello corrispondente al cognome immesso in una TextBox? Se è così non devi usare un DataReader, ma impostare correttamente la clausola Where nella query.
    Documentati meglio sull'uso dei parametri, messi così non hanno senso.
    Il regolamento del forum: la prima cosa da leggere.

  7. #7
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,635
    Blogs
    5
    Prima dici che vuoi prendere tutto, poi che hai un problema col null, poi la ricerca non è come dici tu ma non si sa come la vuoi.

    Fai una domanda precisa.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  8. #8
    Giorgio_83 non è in linea Novello
    Post
    10
    Chiedo scusa,forse mi sono espresso male. Io creato un database su access (una tabella con Nome,cognome,codice fiscale e note). Su visual studio ho un form dove inserisco dati in essa (fin qui tutto bene - riesco anche a modificarli e ad eliminarli). Poi ho creato (come ha detto Brontolo) una KeywordTextBox dove,inserisco ad esempio un cognome (rossi) e lui dovrebbe estrarmi tutti i campi riferiti a "rossi" (nome,codice fiscale,note). Chiedo scusa di nuovo,ma utilizzo questo linguaggio da meno di 2 mesi.

  9. #9
    Giorgio_83 non è in linea Novello
    Post
    10
    Grazie al vostro Aiuto ho quasi risolto. Nel senso:
    sono andato a documentarmi meglio sui parametri e modificandoli cosi'....funziona!

    Dim cm As New OleDb.OleDbCommand("Select ID,Cognome, Nome, CodiceFiscale,Note FROM Dati WHERE cognome=@cognome")

    cm.Parameters.AddWithValue("@cognome", KeywordTextBox.Text)
    Facendo cosi',inserendo solo il cognome riesco a trovare il record. Se volessi fare una ricerca (tramite qualsiasi campo - ad esempio tramite codice fiscale) dovrei aggiungere un
    cm.Parameters.AddWithValue
    per ogni campo?

  10. #10
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,635
    Blogs
    5
    No ... calma ... bisogna vedere che vuol dire "tramite qualsiasi campo" ...

    Hai una textbox in cui inserisci il dato ma se devi cercare nel cognome cerchi nel campo cognome, altrimenti nel campo in cui vuoi cercare.
    Insomma, a seconda di cosa vuoi fare ESATTAEMENTE, la WHERE va scritta in maniera opportuna.

    A questo punto diventa necessario documentarti sul linguaggio SQL, perché non si può fare un corso in una risposta in un forum.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi