Problemi con la query visual basic 2005

venerdì 15 dicembre 2006 - 20.04

ken87 Profilo | Junior Member

Ho una tabella portata in visual basic 2005
La tabella e copiata nel dataset
nome tabella tab1
Questa tabella a un campo liv , ho portatto intero campo in un combobox
La visualizzazione della tabella e un datagrid
Ora se clicco sul data grid è faccio aggungi nuova query mi apre una finestra.
Ora vorrei scrivere una queri che quando utente selezione un campo combobox mi aggioni il datagrid e mi faccia vedewre solo gli elementi della tabella che hanno UN CERTO LIV
esempio nella mia combox scelgo liv=bi3
Allora la queri trova solo tre elementi con quel liv e me gli visualizza nel datagrid
Ora ho provato a crivere select *, from tab1 where liv="&combox.text &"
Ma mi da valori nulli e non me lo fa.
Sicuramente non riesce ad associare combox con un campo tabella.
Come si fa?
Grazie mille

Cteniza Profilo | Guru

Prendi un oggetto dataview e mettilo nel tuo progetto.
Imposta la data source (table) = alla tabella
Imposta data source del datagrid sulla dataview
Quando aggiorni combobox puoi settare la proprietà "rowfilter" del dataview.
Esempio: mydataview.RowFilter = "codice = '" & mycombo.SelectedValue.ToString & "'"

ken87 Profilo | Junior Member

grazie di avremi risposto.
ma non so come si fa a prendere un ogetto dataview.
io ho provato con
dim prova as dataview
ma quandi vado a cercare la proprieta datasourge non me lo da in elenco cosa sbaglio
mi puoi fare esempio completo ?
grazie mille

Cteniza Profilo | Guru

Apri il progetto posizionati sul design della form, a sinistra nel tab "data" dovrebbe apparire il dataview.
Se lo vuoi impostare da codice:
Dim dv As New DataView
dv.Table = mydataset.Tables("myTable")
myDataGrid.DataSource = dv

ken87 Profilo | Junior Member

ecco cosa ho scritto ma non funziona

Dim dv As DataView

dv.Table = BudgetDataSet.Tables("anagrafica")
DataGridView1.DataSource = dv
dv.RowFilter = "" & LivComboBox.SelectedValue.ToString & ""


mi da un errore giallo

Avviso 1 La variabile 'dv' viene utilizzata prima che le sia stato assegnato un valore. È possibile che venga restituita un'eccezione dovuta a un riferimento con valore null in fase di esecuzione. C:\Documents and Settings\Utente\Impostazioni locali\Dati applicazioni\Temporary Projects\WindowsApplication1\Form1.vb 20 9 WindowsApplication1


e se lo faccio girare ecco cosa mi dice


Riferimento a un oggetto non impostato su un'istanza di oggetto.




ho provato ad aggungere questa istruzione
ds= new dataview (budgetdataset.tables (0))


cosi non da il primo errore ma va a cercare la coonna non elemento della colonna

e quindi non funziona dato che nella combox ho caricato elemento
in modo che faccia la stessa cosa della whwre di acess
ma niente
che sbaglio

poi nel interfaccia non l'ho trovato.
a sinistra c'e casella strumenti ho devo guardare altrove

Cteniza Profilo | Guru

Secondo me ti stai confondendo.
Se hai vs 2005 potresti usare datagridview al posto di datagrid, datagridview è come usare datagrid + dataview.
Essendo oggetti non importanti, in quanto sostituiti appunto da datagridview normalmente non compaiono nella toolbar.
Con un click con il pulsante destro sulla toolbar ti fa scegliere la visualizzazione dei controlli non visibili.
In ogni caso allego un progettino in vb che fa uso di dataview e datagrid, tempo di realizzazione meno di cinque minuti.

ken87 Profilo | Junior Member

nel progetto ho messo

DataGridView1
LivComboBox
un tasto
Button1

NE data set
Anagrafica
anagrafica1

anagrafica 1
ho portato il cammpo liv ordinadolo e eliminando i duplicati

caricati in una commonbox

che diventa

LivComboBox


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dv As DataView
dv = New DataView(BudgetDataSet.Tables(0))
dv.Table = BudgetDataSet.Tables("anagrafica")
DataGridView1.DataSource = dv
LivComboBox.Text = "liv"
dv.RowFilter = "liv = "" & LivComboBox.Text & """

End Sub
End Class
Se lo faccio girare mi scrive:

Impossibile interpretare il token '"' nella posizione 7.

Mi gira solo se scrivo

dv.RowFilter = "liv = 'b1i'"

solo che b1i vorrei che lo prendesse dalla combobox ma come sembra che non gli piace la stringa è possibile che non esiste un modo?

Grazie mille

ken87 Profilo | Junior Member

ci son riuscito

ecco la sintassi gusta

dv.rowfilter = "liv= ' " & livcombox.text.replace (" ' ", " ' ' ") & " ' "

cosi funziona.

Grazie di tutto
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5