Autor Tema: Insertar datos DataGridView consulta base datos Access SELECT WHERE con variable  (Leído 6844 veces)

anmaroso

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Código: [Seleccionar]

Public Class FTRANSF_C
    Dim vpf1 As Date
    Dim strcnn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                           "Data Source=C:\GESTION\GESTION.mdb"
    Dim cnn As OleDb.OleDbConnection
    '    Dim orden As OleDb.OleDbCommand
    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet

    Private Sub FTRANSF_C_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        vpf1 = FTRANSF.vpf
        MsgBox(vpf1)
        FTRANSF.Close()
    End Sub

    Private Sub vencimiento(ByVal vpf1 As Date)
        cnn = New OleDb.OleDbConnection(strcnn)
        OleDbSelectCommand1.CommandText = "SELECT TFACTURASR.VENCIMIENTO, " & _
             "TPROVEEDORES.NOMBRE,TFACTURASR.IMPORTE,TFACTURASR.IMPORTET " & _
             "TFACTURASR.FACTURANE,TFACTURASR.CONCEPTOP,TFCTURASR.FECHAE, " & _
             "TFACTURASR.FACTURANR,TFACTURASR.FECHAP " & _
             "FROM TFACTURASR INNER JOIN TPROVEEDORES ON " & _
             "TPROVEEDORES.CLAVE = TFACTURASR.CPROVEEDOR " & _
             "WHERE TFACTURASR.VENCIMIENTO =" & vpf1 & " " & _
             "AND TFACTURASR.NOPAGAR = 0 AND TFACTURASR.PAGADA = FALSE " & _
             "AND TPROVEEDORES.NOPAGAR = 0 AND TFACTURASR.FPAGO LIKE '" & 4 & "%'" & _
             "ORDER BY TFACTURASR.VENCIMIENTO, TPROVEEDORES.NOMBRE"
        ds = New DataSet
        cnn.Open()
        da = New OleDb.OleDbDataAdapter
        OleDbSelectCommand1 = New OleDb.OleDbCommand
        OleDbUpdateCommand1 = New OleDb.OleDbCommand
        OleDbInsertCommand1 = New OleDb.OleDbCommand
        OleDbDeleteCommand1 = New OleDb.OleDbCommand
        da.SelectCommand = OleDbSelectCommand1
        da.UpdateCommand = OleDbUpdateCommand1
        da.InsertCommand = OleDbInsertCommand1
        da.DeleteCommand = OleDbDeleteCommand1
        OleDbSelectCommand1.Connection = OleDbConnection1
        OleDbUpdateCommand1.Connection = OleDbConnection1
        OleDbInsertCommand1.Connection = OleDbConnection1
        OleDbDeleteCommand1.Connection = OleDbConnection1
        da.Fill(ds, "TPROVEEDORES", "TFACTURASR")
        DG1.DataSource = ds.Tables("TPROVEEDORES", "TFACTURASR")
        DG1.Columns("VENCIMIENTO").HeaderText = "VENCIMIENTO"
        DG1.Columns("NOMBRE").HeaderText = "NOMBRE"
        DG1.Columns("IMPORTE").HeaderText = "IMPORTE"
        DG1.Columns("IMPORTET").HeaderText = "IMPORTET"
        DG1.Columns("FACTURANE").HeaderText = "FACTURANE"
        DG1.Columns("CONCEPTOP").HeaderText = "CONCEPTOP"
        DG1.Columns("FECHAE").HeaderText = "FECHAE"
        DG1.Columns("FACTURANR").HeaderText = "FACTURANR"
        DG1.Columns("FECHAP").HeaderText = "FECHAP"
        DG1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    End Sub

    Private Sub BS_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BS.Click
        Me.Close()
    End Sub


End Class


Buenas tardes.
Quisiera saber si el código precitado es correcto para pasar datos a un DataGridView, basado en una consulta con variable incluida.
El código está basado siguiendo las instrucciones de un libro y a parte de que no me funciona, creo que es excesivo... tiene que haber algo más conciso.

Muchas gracias y saludos.
« Última modificación: 19 de Octubre 2015, 08:22 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola en principio trasladar el contenido de una tabla de una base de datos access a un datagridview de visual Basic no debería ser complicado.

El ejemplo para hacerlo sería este. Tenemos una tabla "items" en una base de datos de Access

Declaramos lo siguiente:

Código: [Seleccionar]
Imports System.Data.OleDb
 
Public Class Form1
   
    'Cambiar "C:\Users\Jimmy\Documents\Merchandise.accdb" por la ruta donde se encuentre el archivo con la base de datos access
    Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Jimmy\Documents\Merchandise.accdb"
    Dim MyConn As OleDbConnection
    Dim da As OleDbDataAdapter
    Dim ds As DataSet
    Dim tables As DataTableCollection
    Dim source1 As New BindingSource

El código para un botón que haga que se muestre el contenido de la tabla en el datagridview:

Código: [Seleccionar]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MyConn = New OleDbConnection
        MyConn.ConnectionString = connString
        ds = New DataSet
        tables = ds.Tables
        da = New OleDbDataAdapter("Select * from [items]", MyConn) 'Cambiar items y poner el nombre de tabla que corresponda
        da.Fill(ds, "items") 'Cambiar items y poner el nombre de tabla que corresponda
        Dim view As New DataView(tables(0))
        source1.DataSource = view
        DataGridView1.DataSource = view
End Sub

Saludos

anmaroso

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Buenas tardes.

Gracias por contestar, lo que me pasa es que es una consulta en la que el Where compara un campo de la tabla con una variable y aquí es donde me falla pues no sé donde poner la variable ya que no me muestra registros.

Gracias y saludos.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, en este hilo hay ejemplos de consultas con where https://www.aprenderaprogramar.com/foros/index.php?topic=656 y quizás te puedan servir de referencia

Saludos

anmaroso

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Muchas gracias Alex.

Lo voy a consultar.

anmaroso

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Hola Alex.

Buenos días.

El enlace que pusiste no me funcionó porque era para SQLServer y yo uso el Access.

Después de buscar mucho, al fin, encontré la solución a la consulta. La pongo a continuación por si es de utilidad a alguien.

Código: [Seleccionar]

 "WHERE (((TPROVEEDORES.NOPAGAR)=0) AND " & _
                                        "((TFACTURASR.NOPAGAR)=0) AND " & _
                                        "((TFACTURASR.FPAGO) Like '4%') AND " & _
                                        "((TFACTURASR.VENCIMIENTO) = Datevalue('" & vpf1 & "'))) "



Con Datevalue('" & vpf1 & "') ya me funciona la consulta, vpf1 es una variable de tipo DateTime.

Ahora me surge otro problema con los formularios, que ya me pasó con el de MENU.

Si ejecuto la aplicación desde el formulario que contiene la consulta funciona bien, pero si la ejecuto desde el FINICIO>>>>MENU ya no funciona y no es por la consulta sino por el formulario.

La verdad es que ya no entiendo nada.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".