Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - vb.net 2010 - select from where
Forum - C# / VB.NET - vb.net 2010 - select from where

Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 15:41
Martedì, 17/01/2012
ciao a tutti eccomi alla disperata presa con db access. sto riuscnedo bene o male e fin'ora con il seguente codice riesco a leggere il contenuto di una tabelle:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim selezione = New OleDbDataAdapter("SELECT * FROM Docenti", archivio)
  2.                selezione.Fill(DataSet1, "Docenti")
  3.                archivio.Close()
  4.                DataGridView1.DataSource = DataSet1.Tables("Docenti")


e fin qui ci sono arrivato senza problemi ma, se avessi delle relazioni tra tabelle e la mia select includesse quindi WHERE, il Fill di DataSet1 non sarà più la tabella Docenti ma il risultato della query giusto? Come dovrei cambiare di conseguenza secondo voi a questo punto
Codice sorgente - presumibilmente Plain Text

  1. selezione.Fill(DataSet1, "??????????")
  2.     DataGridView1.DataSource = DataSet1.??????


    selezione.Fill(DataSet1, "??????????")
    DataGridView1.DataSource = DataSet1.??????

PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 15:49
Martedì, 17/01/2012
Scusate se riapro  lo stesso come topic ma in ignoranza avevo postato il mio problema come domanda.
Riagganciandomi al post precedente sotto suggerimento di Renny ho modificato il tutto in:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim selezione = New OleDbDataAdapter("SELECT Docenti.Nome, Docenti.Cognome, Docenti.Luogo_di_nascita, Provincie.Provincia, Provincie.Comune, Provincie.Cognome FROM Docenti, Provincie WHERE Docenti.Cognome = Provincie.Cognome", archivio) 'Comando SQL
  2.          selezione.Fill(DataSet1, "risultato")
  3.          archivio.Close()
  4.          DataGridView1.DataSource = DataSet1.Tables("risultato")


Il tutto sembra funzionare, solo che in datagrid mi aggiunge oltre alle campi che mi aspettavo quindi Nome,Luogo_di_nascita,Provincia,Comune anche dei campi che si chiamo appunto Docenti.Cognome e Provincie.Cognome

Mi viene suggerito di cambiare da FROM - WHERE a FROM - JOIN in quanto normalmente nel WHERE non viene accettatta più di una tabella come servirebbe nel mio caso.
Ora mi metto e vi farò sapere se e cosa riuscirò a fare.
Ciao e grazie.

PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 16:13
Martedì, 17/01/2012
L'equivalente della precedente query con il JOIN dovrebbe essere:
("SELECT Docenti.Nome, Docenti.Cognome, Docenti.Luogo_di_nascita, Provincie.Provincia, Provincie.Comune, Provincie.Cognome FROM Docenti INNER JOIN Provincie ON Docenti.Cognome = Provincie.Cognome", archivio
Infatti come risultato mi esegue un filtro in base al criterio desiderato ma, rimane il fatto che la datagrid rappresenta in più oltre al previsto il campi Docenti.Cognome e Provincie.Cognome
Scrivo qualcosa di sbagliato concettualmente o di sinstassi nella query?
Grazie

PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 23:01
Martedì, 17/01/2012
Ciao.. Ma.. a questo punto puoi toglierli dalla query direttamente..
prova così:
SELECT Docenti.Nome, Docenti.Cognome, Docenti.Luogo_di_nascita, Provincie.Provincia, FROM Docenti INNER JOIN Provincie ON Docenti.Cognome = Provincie.Cognome"

PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 14:53
Mercoledì, 18/01/2012
Ciao Renny,

fatto ma mi restituisce un'eccezzione oledb del tipo:
L'istruzione SELECT include una parola riservata o un argomento scritto in modo errato o mancante oppure la punteggiatura non è corretta.

Provo a vedere cosa riesco a capire e torno.

Ciao e grazie.

PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 18:06
Mercoledì, 18/01/2012
Ciao.
Dunque, io le query o le faccio con Access oppure uso visual Studio.
Il procedimento è lo stesso, selezioni i campi che ti servono, imposti il "criterio", cioè il WHERE e il gioco è fatto. Ti consiglio di usare i parametri.
Fai "imposta carattere parametri" e metti "@". Poi nei criteri scrivi =@ID, per filtrare per ID.
EDIT:
SELECT Docenti.Nome, Docenti.Cognome, Docenti.Luogo_di_nascita, Provincie.Provincia FROM Docenti INNER JOIN Provincie ON Docenti.Cognome = Provincie.Cognome

Ho tolto la virgola prima di FROM

Ultima modifica effettuata da Renny il 18/01/2012 alle 18:08
PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 20:58
Giovedì, 26/01/2012
ciao renny,
ecco infatti è quello che avevo tolto pure io la "," che era di troppo e appunto ora funziona.vorrei ringraziarti per la pazienza e per le spiegazioni, ora devo rivedere un attimo il concetto dei componenti della query perchè a distanza di una settimana mi sono già scordato diverse cose come per esempio:che ci fa Provincie.Provincia prima di FROM Docenti quando sono dati che si trovano in una cartella diversa da Provincie? Bha...devo ricapitolare un attimo.Grazie ancora e alla prossima.

PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 9:53
Venerdì, 27/01/2012
Prego
e buon lavoro.
Alla Prossima! :k:

PM Quote