Visual Basic.NET - Carga DataGrid pero NO cumple el WHERE

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Carga DataGrid pero NO cumple el WHERE

Publicado por P. J. (706 intervenciones) el 25/08/2008 19:34:21
Como que esta algo desordenado, pero ten en cuenta que el valor para la condicion debe estar entre apostrofes:

" SELECT *
FROM TABLA
WHERE CAMPO = ' " + txtValor + " ' "

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Carga DataGrid pero NO cumple el WHERE

Publicado por DEPRo (13 intervenciones) el 26/08/2008 15:56:33
Muchas Gracias P. J. Ahora, si es tan amable, me podria decir, por favor: ¿Cómo hago para que una columna del DataGrid, ya filtrado, tenga la numeración de cada registro en forma continua? Es decir 1,2,3...Etc.

Atentamente,

DEPRo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Carga DataGrid pero NO cumple el WHERE

Publicado por P. J. (706 intervenciones) el 26/08/2008 16:37:21
Eso lo pudes hacer con un bucle recorriendo todos los registros y adicionando una columna y el contador.

For i As integer = 0 To Me.dgvDatos.RowCount - 1
Me.dgvIngresoProductoGS.Rows(i).Cells(0).Value = i
Next

Algo asi seria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: RE: Carga DataGrid pero NO cumple el WHERE

Publicado por DEPRo (13 intervenciones) el 27/08/2008 10:08:49
Muchas Gracias P.J. Perdona mi ignorancia en el tema pero estoy aprendiendo. Te estoy muy agradecido por tu ayuda.

Lo que no me ha querido es filtrar los datos, les puse las comillas a las condiciones como me dijiste +"'" y después de llamar el DataGrid lo pongo en el texto de un TextBox y lo hace bien, queda bien la condición WHERE, pero me trae todos los datos, no filtra ¿Será que hay que cambiar algo en las propiedades en el OleDbDataAdapter, o en el Dataset, o el mismo DataGrid ? En ellos existen declaraciones de busqueda (SELECT).

Desconcertado,

DEPRo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FOR...???

Publicado por DEPRo (13 intervenciones) el 27/08/2008 14:54:42
Disculpa P.L. Si es tan amable me podria dar más detalles. Es lógico usar un bucle para asignar esos datos, de hecho le aumente una columna a la tabla, se llama Num. Pero no entendi los elementos del For:

For i As Integer = 0 To Me.dgvDatos.RowCount - 1
Me.dgvIngresoProductoGS.Rows(i).Cells(0).Value = i
Next

QUIENES PUEDEN SER:

¿¿¿¿¿ Me.dgvDatos.RowCount ?????

y

¿¿¿¿¿ Me.dgvIngresoProductoGS.Rows(i).Cells(0).Value ??????

CON ESTAS DECLARACIONES:

Dim oAdaptador As OleDbDataAdapter
Dim oConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:AprenderAprenderd1.mdb")

...Y EN EL PROGRAMA DE INICIO:

Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim strSQL As String

strSQL = "SELECT Num, DES_BARE_MBAR NOMBRE, COD_BARE_MDBA BAREMO, NUM_MESE_DURA_MDBA DURACION, IMP_CRED_MINI_MDBA NOM_MIN, IMP_CRED_MAXI_MDBA NOM_MAX, TAS_BARE_MDBA TASA ,PCT_COMI_APER_MDBA CA, PUNTOS FROM Importada1 WHERE PUNTOS = '" + TextBox1.Text+"'"

oAdaptador = New OleDbDataAdapter(strSQL, oConexion)

Dim dt As DataTable
dt = New DataTable
OleDbDataAdapter1.Fill(dt)
Me.DataGrid1.DataSource = dt

' For i As Integer = 0 To Me.dgvDatos.RowCount - 1
' Me.dgvIngresoProductoGS.Rows(i).Cells(0).Value = i
' Next

Me.Refresh()

End Sub

Trate con: Me.DataGrid1.ImportadaRow.Count - 1

... y con:

Me.DataGrid1.Rows(i).Cells(0).Value = i

...y no me lo quiso hacer.

Intrigado,
DEPRo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:FOR...???

Publicado por P. J. (706 intervenciones) el 27/08/2008 16:24:29
Lo del select parece estar bien, comprueba que arroje resultados en el SQL.

Y para el bucle debes recorrer todas las filas de datagridview y asignarle el valor de cada VUELTA a la columna.

En control GRILLA para el .NET 2005 es DATAGRIDVIEW, el DATAGRID es del VB 6.0

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FOR...???

Publicado por DEPRo (13 intervenciones) el 28/08/2008 10:32:49
Muchas gracias P.J. Otra pregunta ¿Como controlo el ancho de las columnas del DataGrid? Las columnas de Descripcion tienen que ser de un ancho mayor a las colunas de claves ¿Como logro estos anchos variables de las colunas del DataGrid?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:FOR...???

Publicado por P. J. (706 intervenciones) el 28/08/2008 16:27:30
Seria:

Me.DataGridView1.Columns(0).Width = 120

Eso pondra el ancho de la primera columna.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar