Ciao a tutti!
Sono nuovo del forum, quindi spero non dire o fare fesserie. In ogni caso vorrei sottoporvi una domanda su VB.net 2010. Come da titolo mi popolo una datagridview con il seguente codice:
codice:
OpenFileDialog1.Title = "Seleziona file Excel da importare"
OpenFileDialog1.Multiselect = False
OpenFileDialog1.Filter = "Formato xlsx (*.xlsx)|*.xlsx|Formato xls (*.xls)|*.xls"
OpenFileDialog1.FilterIndex = 2
OpenFileDialog1.FileName = ""
OpenFileDialog1.ShowDialog()
Dim FileName As String = OpenFileDialog1.FileName
txtPath.Text = OpenFileDialog1.FileName
'Dim nome As String
'nome = IO.Path.GetFileName(FileName)
Dim conn As String
conn = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & txtPath.Text & ";Extended Properties=Excel 12.0;"
Dim con As OleDbConnection = New OleDbConnection(conn)
Dim da As OleDbDataAdapter = New OleDbDataAdapter()
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = con
cmd.CommandText = "SELECT * FROM [ProveVarietali$A:Y]"
da.SelectCommand = cmd
Try
da.Fill(ProveVarietali.ProveVarietaliDataSet, "ProveVarietali")
MessageBox.Show("Importazione completata con successo!")
ProveVarietali.ProveVarietaliDataGridView.DataSource = ProveVarietali.ProveVarietaliDataSet
ProveVarietali.ProveVarietaliDataGridView.DataMember = "ProveVarietali"
ProveVarietali.ProveVarietaliTableAdapter.Update(ProveVarietali.ProveVarietaliDataSet)
Catch e1 As Exception
MessageBox.Show("Importazione fallita!controllare le intestazioni del file sorgente!")
End Try
mediante il cambiamento di questa stringa di codice in:
codice:
cmd.CommandText = "SELECT * FROM [ProveVarietali$A:Y]"
questo, decidendo quale colonna importare e che dati importare
codice:
cmd.CommandText = "SELECT colonna1 FROM [ProveVarietali$A:Y] WHERE (colonna1 between 0 and 9)"
Qui però sorgono due domande:
come posso impedire che non vengano importati da excel in DGW dati doppi per una determinata colonna? (quando trovato il dato semplicemente il codice dovrebbe non importare tutta la riga di excel). Ho provato con l'evento datagridview validating ma è successivo all'importazione io vorrei qualcosa che intervenisse in fase di importazione. E secondo, ma credo sia una domanda più stupida, e se volessi importare 2 colonne anziche 1 come faccio? così non funziona:
codice:
cmd.CommandText = "SELECT colonna1, colonna2 FROM [ProveVarietali$A:Y] WHERE (colonna1, colonna2 between 0 and 9)"
grazie a tutti! spero possiate darmi degli spunti per sistemare il mio programmino.
Ciao