lo so che esistono le query. Ti faccio un riassunto completo: ho un DB sqlserver express creato direttamente da visual basic express 2008.
All'interno di questo DB ho una tabella clienti strutturata in questa maniera:
codice:
idcliente: chiave primaria di tipo numerico. Identità
ragionesociale: campo not null di tipo text
piva: campo null di tipo integer
cf: campo null di tipo text
Per quanto riguarda VB2008 ho un form che si chiama frmClienti che contiene:
- 1 datagridview: TblClienteDataGridView
- 2 textbox: txtcodicecliente, txtragionesociale
- 2 button: btnRicercaCodiceCliente, btnRicercaRagioneSociale
- 1 classe linq: dominopro.dbml
Ora, quando vado ad inserire un qualunque codice cliente, quindi un dato numerico la seguente porzione di codice:
codice:
Dim codicecliente As Integer
Dim dpdc As New dominoproDataContext
Try
codicecliente = txtCodiceCliente.Text
Dim risultato = From tblCliente In dpdc.tblCliente Where tblCliente.idcliente = codicecliente Select tblCliente
TblClienteDataGridView.DataSource = risultato
txtCodiceCliente.Clear()
Catch ex As Exception
MsgBox("ERRORE! E' necessario inserire almeno un codice", MsgBoxStyle.Exclamation)
End Try
Mi restituisce esattamente il cliente relativo al codice inserito, mentre se non inserisco nessun codice mi va in eccezione e restituisce il msgbox.
La faccenda si complica quando mi trovo a dover cercare delle stringhe di testo, della serie "mario rossi".
Il codice all'interno del btnCercaRagioneSociale è questo:
codice:
Dim dpdc As New dominoproDataContext
Dim risultato As String
Dim ragionesociale As String
ragionesociale = txtRagioneSociale.Text
Label1.Text = ragionesociale
risultato = From tblCliente In dpdc.tblCliente Where tblCliente.ragione_sociale = ragionesociale Select tblCliente
TblClienteDataGridView.DataSource = risultato
txtRagioneSociale.Clear()
Se lo mando in esecuzione ecco che compare il famoso errore oggetto del post. Ora, ho pensato di modificare il tipo di dato di ragione sociale, modificando il codice in questa maniera:
codice:
Dim risultato As System.Linq.IQueryable(Of DominoPRO.tblCliente)
e così non genera l'errore, però non mi estrae i dati che mi interessano. Quindi, alla luce di tutto ciò, come faccio da codice a ricercare una stringa di testo contenuta nel DB e gestita tramite LINQ?