Duda consulta con ADO recordset en VB6...

Tengo lo siguiente:
MiRecordset.Open "SELECT MANZANA FROM MANZANA Where DISTRITO = 1 AND LOCALIDAD = 1 AND SECCION = 319 Order by MANZANA", MiConexion, adOpenDynamic, adLockOptimistic
Pero debo cambiar la consulta de MiRecordset según como cambie el valor de la SECCIÓN, ya se que NO puedo hacer esto:
Dim VARIABLESECCION As String
MiRecordset.Open "SELECT MANZANA FROM MANZANA Where DISTRITO = 1 AND LOCALIDAD = 1 AND SECCION = VARIABLESECCION Order by MANZANA", MiConexion, adOpenDynamic, adLockOptimistic
Y que TAMPOCO se puede hacer esto:
MiRecordset.Open "SELECT MANZANA FROM MANZANA Where DISTRITO = 1 AND LOCALIDAD = 1 AND SECCION = " & VARIABLESECCION & " Order by MANZANA", MiConexion, adOpenDynamic, adLockOptimistic
Se que con SQL se puede hacer una consulta en SQL y se puede guardar ésta en una variable para usarla después con recordset, pero yo estoy utilizando access 2007, espero que me den ideas de como utilizar variables con recordset, gracias de antemano por las respuestas.

1 Respuesta

Respuesta
1
Que tal amigo aquí te envío un ejemplito espero t sirva
En Generales se Declara las Siguientes Variables
Dim RsConsulta as adodb.recordset
Dim Filtro as String
Mira este codigo lo hago en form Load:
    Set RsConsulta = New ADODB.Recordset
    Filtro = "SELECT Proveedor.Cod_Prv AS Codigo, Proveedor.Rso_Prv AS Proveedor, TProveedor.Nom_Tpr AS `T_Proveedor`,  Pais.Nom_Pai AS País, Proveedor.Rep_Prv AS Representante, Proveedor.Con_Prv AS Condición, Proveedor.Tel_Prv AS Teléfono, Proveedor.fax_Prv AS Fax, Proveedor.Sig_Prv AS Siglas, Proveedor.web_prv AS `Pagina Web`, Proveedor.Mai_Prv AS Mail, Proveedor.Dir_Prv AS Drección, Proveedor.Ruc_Tpr AS Ruc From Pais, Proveedor, TProveedor WHERE Pais.Cod_Pai = Proveedor.Cod_Pai AND Proveedor.Cod_Tpr = TProveedor.Cod_Tpr"
    RsConsulta. Open (Filtro), Cn
    RsConsulta. Requery
Ahora en el botón de Filtrar se pone otro código
' si t puedes dar cuenta existe varios option button es solo para ayudar a escoger un filtrado que deseas ...
Pero la idea General es de hacer en el Load y despeus en el botón Buscar
RsConsulta. Close
If Option1 Then RsConsulta.Source = Filtro
If OptInicial And CboInicial.Text <> "" Then
    RsConsulta.Source = Filtro & " and Rso_Prv like '" & CboInicial.Text & "%'"
End If
'If Option2 And Combo1.Text <> "" Then
'    RsConsulta.Source = Filtro & " and nom_tpr like '" & Combo1.Text & "%'"
'End If
RsConsulta. Open
RsConsulta. Requery
Set DgProveedor.DataSource = RsConsulta
Espero que el código t halla sido de utilidad
Atte. Luis Tomasto
[email protected]
Más o menos lo entendí, tengo que buscar más información al respecto porque no había visto Requery y no se que hace esto: & Combo1. Text & "%'".
Lo hice de otra manera ahí te lo mando:
Option Explicit
'Declarar las variables
Dim valor As String
Dim lIndex As Long
Dim MiConexion As ADODB.Connection
Dim MiRecordset As ADODB.Recordset
Dim arreglocombo1() As String
Dim arreglocombo2() As String
Dim arreglocombo3() As String '!!!!!!!!!!!!!!!!!!!!!!!
Dim arreglomza() As String
Dim arreglox() As String
Dim Elemento As Variant
Dim i As Integer
Dim ruta As String
Private Sub Form_Load()
Combo1.Clear
Combo2.Clear '!!!!!!!!!!!!!!!!!!!!!!!
Set MiConexion = New ADODB.Connection
Set MiRecordset = New ADODB.Recordset
ruta = App.Path & "\bd1.mdb"
MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT SECCION FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic
i = 0
While Not MiRecordset.EOF
ReDim Preserve arreglocombo1(i)
  Combo1.List(Combo1.ListIndex) = MiRecordset.Fields("SECCION")
  arreglocombo1(i) = MiRecordset.Fields("SECCION")
  MiRecordset.MoveNext
  i = i + 1
Wend
MiRecordset.Close
MiConexion.Close
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT LOCALIDAD, NOMBRE FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
i = 0
While Not MiRecordset.EOF
  ReDim Preserve arreglocombo2(i)
  arreglocombo2(i) = MiRecordset.Fields("LOCALIDAD") & " - " & MiRecordset.Fields("NOMBRE")
  MiRecordset.MoveNext
  i = i + 1
Wend
MiRecordset.Close
MiConexion.Close
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
 MiConexion.CursorLocation = adUseClient
 MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
 MiRecordset.Open "SELECT SECCION, MANZANA FROM MANZANA Where DISTRITO = 1 Order by SECCION, LOCALIDAD, MANZANA", MiConexion, adOpenDynamic, adLockOptimistic
 'ok' MiRecordset.Open "SELECT MANZANA FROM MANZANA Where DISTRITO = 1 AND LOCALIDAD = 1 AND SECCION = 319 Order by MANZANA", MiConexion, adOpenDynamic, adLockOptimistic
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 i = 0
 While Not MiRecordset.EOF
   ReDim Preserve arreglocombo3(i)
   Combo3.List(Combo3.ListIndex) = MiRecordset.Fields("MANZANA") '& "-" & MiRecordset.Fields("MANZANA")
   arreglocombo3(i) = MiRecordset.Fields("SECCION") '& "-" & MiRecordset.Fields("MANZANA")
   MiRecordset.MoveNext
   i = i + 1
 Wend
MiRecordset.Close
MiConexion.Close
End Sub
Private Sub Combo1_Click()
 Combo2.Clear
 lIndex = Combo1.ListIndex
 valor = Combo1.List(Combo1.ListIndex)
 Combo2.List(Combo2.ListIndex) = Combo2.List(Combo1.ListIndex) & arreglocombo2(lIndex)
 'MsgBox "Combo1 = " & Combo1.List(Combo1.ListIndex) & " y su posicion es : " & Combo1.ListIndex
 MsgBox "Combo1 = " & valor & " y su posicion es : " & Combo1.ListIndex
For i = 0 To UBound(arreglocombo3)
If (arreglocombo3(i)) = (valor) Then
ReDim Preserve arreglomza(i)
arreglomza(i) = Combo3.List(i)
End If
Next
Combo4.Clear
Combo4.SelStart = 0
''Borrar espacios del array:
'' aqui va borrar espacios del array
For Each Elemento In arreglomza
        'Si el elemento es distinto de una cadena vacia
         'lo agregamos al Combo3
        If Elemento <> "" Then Combo4.AddItem Elemento
    Next
End Sub
Gracias por tu respuesta, si tienes más comentarios los escribes, o si no finalizaré la pregunta.
Asu amigazo t mandas un codizgazo...
Mucha inspiracion... jejeje
Bueo hay que simpolificar las cosas..
Realizas mucho codigo y estan por demas...
Vedre si t mando mas cpodigo par q entiendas ok... nos vemos
OK, gracias por tu ayuda, yo también buscaré si encuentro sobre el tema.
Fabiola.
Aquí dejo este enlace que enseña como usar ADO:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=12050&lngWId=1
Y FINALIZO la pregunta. Gracias.
Fabiola.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas