+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

Mostrare risultato inner Join su datagridview

  1. #1
    SanzWeb non è in linea Novello
    Buongiorno a tutti del forum.

    Ho necessità di prendere il risultato di una query che seleziona i dati mediante indici tra due tabelle e fare il refresh della datagridview con i dati filtrati.

    La query estrai i dati correttamente ma mi accoda nella datagrid anche i risultati della seconda tabella

    Come faccio a limitare l'adapter ed assegnare al datasource solo i risultati filtrati della prima tabella dbcommesse.ordinifor ?

    Allego codice di seguito:

     Private Sub caricaOrdiniCliente(Tipo)
            Using myconn As New MySqlConnection(stringaConn)
                myconn.Open()
                With cmd
                    .Connection = myconn
                    .CommandText = "Select * FROM dbcommesse.ordinifor INNER JOIN Dbcommesse.anacli On anacli.idcliente = ordinifor.idcliente WHERE anacli.tipo = '" & Tipo & "';"
                End With
    
                adapter.SelectCommand = cmd
                dt.Clear()
                adapter.Fill(dt)
                DGORDINI.DataSource = dt   'immagino sia qua il problema
                myconn.Close()
            End Using
    
        End Sub
    
    ringrazio anticipatamente per i vostri suggerimenti
    SanzWeb

  2. #2
    Sgrubak non è in linea Scribacchino
    Quote Originariamente inviato da SanzWeb Visualizza il messaggio
    La query estrai i dati correttamente ma mi accoda nella datagrid anche i risultati della seconda tabella
    Questa cosa non ha senso... Se esegui la query direttamente dall'IDE del DB, ottieni il risultato corretto?

    Nelle istruzioni che hai riportato non ci sono operazioni di accodamento, quindi probabilmente devi verificare bene l'istruzione SQL. Deve essere quella che restituisce i dati errati.

    Poi:
    1) Anche gli oggetti MySqlCommand andrebbero racchiusi in un blocco Using;
    2) Esplicita il tipo del parametro [Tipo] della sub, e non concatenarlo brutalmente nella WHERE, a usa i parametri;
    3) All'interno di un blocco Using, la chiamata del metodo MySqlConnection.Close è superflua.
    4) Sicuro che ti servano tutti i campi di entrambe le tabelle? io rivedrei (in ogni caso) l'utilizzo del [SELECT * FROM...].

  3. #3
    SanzWeb non è in linea Novello
    Ciao Sgrubak, grazie per l'interessamento...

    Mah... da quello che vedo in realtà i dati filtrati restituiti sono giusti...
    Solo che nel momento di mostrare il risultato del datasource nella datagridview mi mostra tutte le colonne della prima tabella e tutte quelle della anagrafica clienti (che appunto non voglio)

    I dati della tabella ordinifornitori mi servono tutti (a parte gli id che nascondo con visible = false) per poi mandarli in stampa.


    Io dovrei far visualizzare solo i campi della prima tabella ordini per un determinato cliente che è appunto specificato in Tipo TK o RM (passando il valore che è di tipo stringa)

  4. #4
    Sgrubak non è in linea Scribacchino
    Quote Originariamente inviato da SanzWeb Visualizza il messaggio
    ...mi mostra tutte le colonne...
    Ah! avevo frainteso il termine "accodare" del primo post.

    Il problema è nell'asterisco all'interno del predicato SQL.

    Sostituiscilo con i nomi espliciti delle colonne che ti interessano. Una cosa tipo:
    SELECT ordinifor.Colonna1,
           ordinifor.Colonna2,
           anacli .Colonna1
    FROM ordinifor
        INNER JOIN anacli On anacli.idcliente = ordinifor.idcliente
    WHERE anacli.tipo = @Tipo;
    

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Quote Originariamente inviato da SanzWeb Visualizza il messaggio
    ...mi mostra tutte le colonne della prima tabella e tutte quelle della anagrafica clienti...
    L'astetrisco significa proprio questo.
    ℹ️ Leggi di più su Brontolo ...

  6. #6
    SanzWeb non è in linea Novello
    Già... - ti ringrazio.

  7. #7
    SanzWeb non è in linea Novello
    Grazie Sgrubak...query risolutiva...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 4
    Ultimo Post: 06-03-2012, 13:01
  2. Mostrare risultato di una query in una textbox
    Da delfino73 nel forum Visual Basic .Net
    Risposte: 25
    Ultimo Post: 27-01-2012, 22:56
  3. Risolto: INNER JOIN e visualizzazione di alcune colonne in DataGridView
    Da Sambu nel forum Visual Basic .Net
    Risposte: 16
    Ultimo Post: 14-06-2011, 15:25
  4. Passare risultato Query a un DataGridView
    Da nikkysixx nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 01-02-2010, 19:13
  5. [Teoria]Differenza tra Natural join ed equi-join
    Da newpc82 nel forum Altri Database Server
    Risposte: 2
    Ultimo Post: 29-06-2007, 01:11