Carga DataGrid pero NO cumple el WHERE
Publicado por DEPRo (13 intervenciones) el 25/08/2008 15:52:53
Un saludo. En las líneas siguientes cargo en un DataGrid (de Visual Basic .NET) con la orden de adaptación para una Tabla de Access. Carga bien el DataGrid, pero la condición WHERE de la consulta SQL no la cumple, trayendo todos los datos en lugar de traerlos filtrados por la condición WHERE ¿Qué puedo hacer para que filtre los datos? …
…He declarado:
Inherits System.Windows.Forms.Form
Public Shared EL_PRODUCTO As String
Public Shared LA_DURACION As String
Dim oAdaptador As OleDbDataAdapter
Dim oConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:AprenderAprenderd1.mdb")
…Y en el siguiente Subprograma he escrito:
Private Sub DataGrid1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.DoubleClick
Dim strSQL, strWHERE As String
strSQL = "SELECT [31/5/09 0:00:00], Campo22, COD_BARE_MDBA, COD_EMPR_MBAR, COD_EMPR_PRVD_MBAR, COD_MARC_MMOB, COD_MODE_MMOB, COD_PROD_BARE_MBAR, COD_PROV_MDBA, COD_TIPO_CLIE_MBTC, DES_BARE_MBAR, DES_MODE_MMOD, ESTADO, FEC_FINA_TASA_MDBA, IMP_CRED_MAXI_MDBA, IMP_CRED_MINI_MDBA, MARCA, NUM_MESE_DURA_MDBA, PCT_COMI_APER_MDBA, PRODUCTO, PUNTOS, TAS_BARE_MDBA, TIP_VEHI_MBAR FROM Importada1"
' ...COMIENZO EL STRING QUE CONTIENE EL WHERE DESDE CERO:
strWHERE = ""
' ....LO LLENO:
If CARRO.Text Is "CARRO" Then
strWHERE = " WHERE COD_MARC_MMOB = " & CARRO.Text
If TODA_LA_GAMA_CARRO.ValueMember <> "TODA LA GAMA" Then
' And TODA_LA_GAMA_CARRO.ValueMember <> "" Then
strWHERE = strWHERE & " And DES_MODE_MMOD = " & TODA_LA_GAMA_CARRO.ValueMember
If PRODUCTO.ValueMember = "" Then
' NADA
Else
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
Else
If TODA_LA_GAMA_CARRO.ValueMember = "TODA LA GAMA" Then
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
End If
End If
Else
If CARRO.Text = "COCHE" Then
strWHERE = " WHERE COD_MARC_MMOB = " & CARRO.Text
If TODA_LA_GAMA_COCHE.ValueMember <> "TODA LA GAMA" And TODA_LA_GAMA_COCHE.ValueMember <> "" Then
strWHERE = strWHERE & " And DES_MODE_MMOD = " & TODA_LA_GAMA_COCHE.ValueMember
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
Else
If TODA_LA_GAMA_COCHE.ValueMember = "TODA LA GAMA" Then
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
End If
End If
End If
End If
If strWHERE <> "" Then
strSQL = strSQL & strWHERE
TextBox1.Text = strSQL
' ME ESCRIBE BIEN LA SENTENCIA SQL CON TODO Y LA CONDICION WHERE...
End If
' ...PERO NO LA CUMPLE EN LA LINEA SIGUIENTE:
oAdaptador = New OleDbDataAdapter(strSQL, oConexion)
' ...¡TRAE TODOS LOS DATOS SIN FILTRARLOS! ¿Que puedo hacer para que los filtre?
Dim dt As DataTable
dt = New DataTable
OleDbDataAdapter1.Fill(dt)
Me.DataGrid1.DataSource = dt
Me.Refresh()
End Sub
Esperando vuestra acertada respuesta,
DEPRo
…He declarado:
Inherits System.Windows.Forms.Form
Public Shared EL_PRODUCTO As String
Public Shared LA_DURACION As String
Dim oAdaptador As OleDbDataAdapter
Dim oConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:AprenderAprenderd1.mdb")
…Y en el siguiente Subprograma he escrito:
Private Sub DataGrid1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.DoubleClick
Dim strSQL, strWHERE As String
strSQL = "SELECT [31/5/09 0:00:00], Campo22, COD_BARE_MDBA, COD_EMPR_MBAR, COD_EMPR_PRVD_MBAR, COD_MARC_MMOB, COD_MODE_MMOB, COD_PROD_BARE_MBAR, COD_PROV_MDBA, COD_TIPO_CLIE_MBTC, DES_BARE_MBAR, DES_MODE_MMOD, ESTADO, FEC_FINA_TASA_MDBA, IMP_CRED_MAXI_MDBA, IMP_CRED_MINI_MDBA, MARCA, NUM_MESE_DURA_MDBA, PCT_COMI_APER_MDBA, PRODUCTO, PUNTOS, TAS_BARE_MDBA, TIP_VEHI_MBAR FROM Importada1"
' ...COMIENZO EL STRING QUE CONTIENE EL WHERE DESDE CERO:
strWHERE = ""
' ....LO LLENO:
If CARRO.Text Is "CARRO" Then
strWHERE = " WHERE COD_MARC_MMOB = " & CARRO.Text
If TODA_LA_GAMA_CARRO.ValueMember <> "TODA LA GAMA" Then
' And TODA_LA_GAMA_CARRO.ValueMember <> "" Then
strWHERE = strWHERE & " And DES_MODE_MMOD = " & TODA_LA_GAMA_CARRO.ValueMember
If PRODUCTO.ValueMember = "" Then
' NADA
Else
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
Else
If TODA_LA_GAMA_CARRO.ValueMember = "TODA LA GAMA" Then
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
End If
End If
Else
If CARRO.Text = "COCHE" Then
strWHERE = " WHERE COD_MARC_MMOB = " & CARRO.Text
If TODA_LA_GAMA_COCHE.ValueMember <> "TODA LA GAMA" And TODA_LA_GAMA_COCHE.ValueMember <> "" Then
strWHERE = strWHERE & " And DES_MODE_MMOD = " & TODA_LA_GAMA_COCHE.ValueMember
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
Else
If TODA_LA_GAMA_COCHE.ValueMember = "TODA LA GAMA" Then
If PRODUCTO.ValueMember <> "" Then
strWHERE = strWHERE & " And PRODUCTO = " & PRODUCTO.ValueMember
End If
End If
End If
End If
End If
If strWHERE <> "" Then
strSQL = strSQL & strWHERE
TextBox1.Text = strSQL
' ME ESCRIBE BIEN LA SENTENCIA SQL CON TODO Y LA CONDICION WHERE...
End If
' ...PERO NO LA CUMPLE EN LA LINEA SIGUIENTE:
oAdaptador = New OleDbDataAdapter(strSQL, oConexion)
' ...¡TRAE TODOS LOS DATOS SIN FILTRARLOS! ¿Que puedo hacer para que los filtre?
Dim dt As DataTable
dt = New DataTable
OleDbDataAdapter1.Fill(dt)
Me.DataGrid1.DataSource = dt
Me.Refresh()
End Sub
Esperando vuestra acertada respuesta,
DEPRo
Valora esta pregunta


0