ASSTO
26-08-2010, 13:20
Public Function estraiProveScatole(ByVal intestazione As String, ByVal commessa As String, ByVal specifica As String, ByVal conformita As String) As DataTable
Using conn As New OleDbConnection(My.Settings.myConnectionString)
Dim query As String
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim comando As New OleDbCommand
comando.Parameters.Add("@commessa", OleDbType.VarChar)
comando.Parameters("@commessa").Value = commessa
comando.Parameters.Add("@intestazione", OleDbType.VarChar)
comando.Parameters("@intestazione").Value = intestazione
comando.Parameters.Add("@specifica", OleDbType.VarChar)
comando.Parameters("@specifica").Value = specifica
Dim fCommessa As String = ""
Dim fIntestazione As String = ""
Dim fSpecifica As String = ""
If commessa.Length <> 0 Then
fCommessa = " =@commessa"
Else
fCommessa = " IS NOT NULL"
End If
If intestazione.Length <> 0 Then
fIntestazione = " =@intestazione"
Else
fIntestazione = " IS NOT NULL"
End If
If specifica.Length <> 0 Then
fSpecifica = " =@specifica"
Else
fSpecifica = " IS NOT NULL"
End If
query = "SELECT * FROM proveScatola WHERE intestazione" & fIntestazione & " AND specifica" & fSpecifica & " AND commessa" & fCommessa & " ORDER BY dataProva ASC"
My.Application.Log.WriteEntry(query)
comando.CommandText = query
comando.Connection = conn
da.SelectCommand = comando
da.Fill(ds, "tab1")
Return ds.Tables("tab1")
End Using
End Function
Questa funzione dovrebbe servirmi ad effettuare una query su un database e restituire una datatable. La funzione ha 4 parametri (il parametro conformita ancora non è stato implementato quindi di fatto è inutilizzato), i quali se passati vengono ricercati, altrimenti vengono sostituiti da "IS NOT NULL".
Il problema è che la ricerca restituisce i risultati corretti solo con il parametro commessa o senza nessun parametro (in questo caso restituisce l'intero recordset): se inserisco solo il parametro "specifica" o solo quello "intestazione" la datatable restituita è vuota.
Ho controllato:
1) i nomi delle righe nella query sono corretti
2) nella tabella del db esistono dei record contenenti i parametri che passo
3) i campi del database access sono tutti di tipo testo
La cosa molto strana è che ieri funzionava solo con il parametro intestazione. Poi ho riscritto il codice (non so se uguale ma sicuramente quello vecchio non era diametralmente diverso) ed ora funziona solo con il parametro commessa.
Vedete qualche cosa che non va?
Using conn As New OleDbConnection(My.Settings.myConnectionString)
Dim query As String
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim comando As New OleDbCommand
comando.Parameters.Add("@commessa", OleDbType.VarChar)
comando.Parameters("@commessa").Value = commessa
comando.Parameters.Add("@intestazione", OleDbType.VarChar)
comando.Parameters("@intestazione").Value = intestazione
comando.Parameters.Add("@specifica", OleDbType.VarChar)
comando.Parameters("@specifica").Value = specifica
Dim fCommessa As String = ""
Dim fIntestazione As String = ""
Dim fSpecifica As String = ""
If commessa.Length <> 0 Then
fCommessa = " =@commessa"
Else
fCommessa = " IS NOT NULL"
End If
If intestazione.Length <> 0 Then
fIntestazione = " =@intestazione"
Else
fIntestazione = " IS NOT NULL"
End If
If specifica.Length <> 0 Then
fSpecifica = " =@specifica"
Else
fSpecifica = " IS NOT NULL"
End If
query = "SELECT * FROM proveScatola WHERE intestazione" & fIntestazione & " AND specifica" & fSpecifica & " AND commessa" & fCommessa & " ORDER BY dataProva ASC"
My.Application.Log.WriteEntry(query)
comando.CommandText = query
comando.Connection = conn
da.SelectCommand = comando
da.Fill(ds, "tab1")
Return ds.Tables("tab1")
End Using
End Function
Questa funzione dovrebbe servirmi ad effettuare una query su un database e restituire una datatable. La funzione ha 4 parametri (il parametro conformita ancora non è stato implementato quindi di fatto è inutilizzato), i quali se passati vengono ricercati, altrimenti vengono sostituiti da "IS NOT NULL".
Il problema è che la ricerca restituisce i risultati corretti solo con il parametro commessa o senza nessun parametro (in questo caso restituisce l'intero recordset): se inserisco solo il parametro "specifica" o solo quello "intestazione" la datatable restituita è vuota.
Ho controllato:
1) i nomi delle righe nella query sono corretti
2) nella tabella del db esistono dei record contenenti i parametri che passo
3) i campi del database access sono tutti di tipo testo
La cosa molto strana è che ieri funzionava solo con il parametro intestazione. Poi ho riscritto il codice (non so se uguale ma sicuramente quello vecchio non era diametralmente diverso) ed ora funziona solo con il parametro commessa.
Vedete qualche cosa che non va?