Comparar el valor de un campo con el de un control

Lo que necesito es solamente saber como hacer la siguiente consulta pero en Access, estoy usando Visual Basic, Active Report, insete un objeto DAO,
Este es el código que hago en VB:
Select * From [Salidas (Detalle)] Where Obra = '" & RepGeneral.cmbRamo.Text & "'
Quiero hacer eso pero en el Objeto DAO, en la parte donde se hace la consulta
Ojala puedan ayudarme.

1 respuesta

Respuesta
1
Puedes utilizar este código
Private Sub cmdBuscar_Click()
' Mostrar los datos en un listview
Dim sBuscar As String
Dim tRs As Recordset
Dim tLi As ListItem
'
' Formar la cadena de la consulta:
' Se busca por el nombre del autor y se muestran clasificados por el nombre
sBuscar = "SELECT * FROM Authors WHERE Author LIKE '" & Text2 & "' ORDER BY Author"
' Creamos un recordset del tipo "estático", el cual no es modificable
' para poder modificarlo, tendría que ser del tipo dbOpenDynamic
Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)
' Comprobar que hay datos en el recordset
With tRs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tLi = ListView1.ListItems.Add(, , .Fields("Au_ID") & "")
tLi.SubItems(1) = .Fields("Author") & ""
tLi.SubItems(2) = .Fields("Year Born") & ""
.MoveNext
Loop
End If
End With
End Sub
que extraje de esta página
http://www.elguille.info/vb/cursos_vb/BASICO/basico40.htm#ConsultasDAO
Dale una revisada a la página te puede orientar bastante sobre VB
Gracias por tu respuesto, esta muy interesante, pero no es lo que necesito, de hecho necesito saber solamente como "Declarar" el valor de un control en esa consulta, osea, si se ponen comillas simples, dobles o algún tipo de punto que diga que no es un texto sino un control el de la condición. Es decir:
Obra = 'Pavimentacion' Eso es comparar con un texto (o eso creo)
Quiero hacer eso, pero con el valor de un control ubicado en un Formulario
Espero haberme explicado, gracias de antemano
Creo que si te entendí y es todavía más fácil ya que si revisas el código que puse ahí viene también que es esta parte
sBuscar = "SELECT * FROM Authors WHERE Author LIKE '" & Text2.text & "' ORDER BY Author"
Te recomiendo utilizar variables de cadena (strings) para armar tus consultas SQL ya que para fines de depuración te va a evitar muchos dolores de cabeza. Entonces tu cadena estaba prácticamente bien el único problema que le veo es el uso de comillas, te faltan unas comillas dobles al final y quedaría así:
sbuscar = "Select * From [Salidas (Detalle)] "
sbuscar = sbuscar = "Where Obra = '" & RepGeneral.cmbRamo.Text & "'"
¿Si te entendí lo que querías?
Si, creo que si me entendiste, pero, pero como mencione anteriormente, estoy haciendo un reporte con Active Report, la base de datos es en access y tengo un DAO Data Control, es ahí donde no funciona la consulta, no en el programa.
Intenta hacer esa consulta dentro del DAO, ese es mi dolor de cabeza.
Gracias por tus repuestas
A pues para ejecutar la consulta y así poder llenar tu reporte lo haces con esta parte del código
Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)
Con esto le dices a la variable tRs que quieres que tome la forma de tu consulta especifica, después ya puedes recorrer ese resultado como si fuera una matriz que vaya desde el principio (BOF) de tus resultados hasta el final (EOF) y para eso es la siguiente parte del código y en el cual utilizan un list view para desplegarlos lo que puedes hacer es cambiar esto para que el resultado se despliegue en tu active report
' Comprobar que hay datos en el recordset
With tRs
If (.BOF And .EOF) Then
<span class="Apple-tab-span" style="white-space: pre;"> ' Si no hay datos... </span>
MsgBox "No se han encontrado los datos buscados"
Else
' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tLi = ListView1.ListItems.Add(, , .Fields("Au_ID") & "")
tLi.SubItems(1) = .Fields("Author") & ""
tLi.SubItems(2) = .Fields("Year Born") & ""
.MoveNext
Loop
End If
End With
Si, más o menos es lo que necesito, pero no encuentro como aplicarlo o en que padre del programa aplicarlo, me podrías dar alguna dirección de correo para enviarte una imagen del control y donde necesito poner la consulta, para "ilustrarlo" mejor jaja
Gracias
Ya te envíe el correo, es de Rolando Buelna Yocupicio (ese soy yo)
Bueno dejo la explicación de tu situación por si alguien lo ocupa alguna vez y si pudieras cerrar la pregunta. Gracias!
Bueno vamos por lo primero, tenemos que diferenciar que es lo que podemos o queremos hacer en tiempo de ejecución y que en el diseño.
El cuadro de dialogo de propiedades del DAO como tal se llena en tiempo de diseño, por lo tanto no puedes hacer la consulta con valores que vas a introducir hasta que corras el programa, ¿me explico?
Para meter ese valor se hace por medio de programación en el tiempo de ejecución, lo más recomendable es crear tu DAO en el mismo tiempo de ejecución ( que es la rutina que te puse en todo expertos) ahora bien si lo quieres de todas formas mediante un control insertado para acceder a la consulta (recordsource) eso si es en programación todo lo demás lo puedes hacer en el diseño (o sea en el cuadro de dialogo que me mandaste) pero no te lo recomiendo es mejor hacerlo todo en programación aunque tengas el control insertado en tu forma
Bueno retomando lo del DAO cuando tienes el control insertado y nombrado y todos los demás datos llenados que solo te falta ponerle el soource y se hace así
Buscar= "Select * From [Salidas (Detalle)] Where Obra = '" & me.cmbObra.Text & "'"
DAOctrl.Recordsource = "Buscar"
Esto si tienes ligado tu DAO con el resto de controles debe mostrarte tu consulta sin problemas en los mismos.
Pruébalo haber si te funciona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas