none
GUARDAR CONSULTA PARA REUTILIZARLA vb10 access RRS feed

  • Pregunta

  • Hola, me gustaría que alguien me ayudara...

    Cómo puedo hacer para reutilizar una consulta??

    Lo que tengo es:

    Un formulario con un CheckedListBox donde eliges un campo de la tabla de la base de datos (empresa, usuario, registro….)

    Un ComboBox que se rellena con los datos del campo elegido en el CheckedListBox (todas las empresas de mi tabla, o todos los usuarios de mi tabla…). Eliges uno

    Una vez que eliges el valor del campo por el que quieres acotar, pulsar el botón BTAcotar y rellenas la grid con el resultado.

    Eso lo hago bien, el problema viene cuando quiero hacer otra consulta sobre ese resultado, es decir, si he acotado por el nombre de la empresa y quiero acotar ahora por otro de los campos, pero sobre los datos de esa empresa, ¿Cómo lo hago?.

    Me hago un poco de lío entre dataset, datareader, datadapter... vengo de visual basic 6 

    Os paso el código que tengo:

    Imports System.Data.OleDb
    Imports System.Data
    Imports System.Windows.Forms
    
    Public Class MUESTRADATOS
        Public CONN As New OleDbConnection    Public MIRUTA As String
        Public ACOTADOCAMPO As String
        Public ACOTADOVALOR As String    Public DT As DataTable
        Public DS As New DataSet
        Public CMD As OleDbCommand
    
    
        Private Sub MUESTRADATOS_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            CONEXION()
        End Sub
    
        Public Sub LOADGRID(ByVal CONSULTA As String)
            ACOTADOVALOR = Me.CBAcotar.Text
            Dim RS2 As OleDb.OleDbDataAdapter
            RS2 = New OleDb.OleDbDataAdapter("select * from [mitabla] WHERE " & ACOTADOCAMPO & " = '" & ACOTADOVALOR & "'" & " order by " & ACOTADOCAMPO & "", CONN)
            Dim DS As DataSet
            DS = New DataSet
            DS.Tables.Add("ACOTANDOPORvalor")
            RS2.Fill(DS.Tables("ACOTANDOPORvalor"))
            DGVPrestamos.DataSource = DS.Tables("ACOTANDOPORvalor")
            RS2.Dispose()
            CONN.Close()
        End Sub
    
        Public Sub CONEXION()
            DBProvider = "Provider=Microsoft.Jet.OLEDB.4.0;"
            MIRUTA = "Data source=C:\Microsoft Visual Studio 10.0\PROYECTOS\proyecto.MDB"
            CONN = New OleDbConnection
            CONN.ConnectionString = DBProvider & MIRUTA & ";PERSIST SECURITY INFO=FALSE"
            Try
                CONN.Open()
                MsgBox("LA BASE ESTÁ ABIERTA")
            Catch ex As Exception
                MsgBox("LA BASE ESTÁ CERRADA")
            End Try
        End Sub
    
        Private Sub BTACOTAR_Click(sender As System.Object, e As System.EventArgs) Handles BTACOTAR.Click
            LOADGRID("")
        End Sub
    
        Private Sub CheckedListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
            ACOTADOCAMPO = Me.CheckedListBox1.Text
            Dim RS1 As OleDb.OleDbDataAdapter
            RS1 = New OleDb.OleDbDataAdapter("select distinct " & ACOTADOCAMPO & " from [mitabla] order by " & ACOTADOCAMPO & "", CONN)
            Dim DS As DataSet
            DS = New DataSet
            DS.Tables.Add("ACOTANDOPORCAMPO")
            RS1.Fill(DS.Tables("ACOTANDOPORCAMPO"))
            CBAcotar.DataSource = DS.Tables("ACOTANDOPORCAMPO")
            CBAcotar.DisplayMember = ACOTADOCAMPO
            RS1.Dispose()
            CONN.Close()
        End Sub
    
        
    End Class
    


    miércoles, 16 de diciembre de 2015 12:06