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
GRACIAS POR TODO