El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
Usuario Ejecutar consulta desde VB
marina
7 Mensaje(s)
Enviado - 11/3/2003
 
Hola y gracias: generé una consulta en access 97, es una consulta de creación de tabla, la misma lee tres tablas y mediante el ingreso de 3 parámetros genera una nueva tabla con los datos de esas tres tablas, la pregunta es, desde el código de visual, tengo forma de pedir que se ejecute esa consulta para luego poder leer los datos de esa tabla generada, lo intento de esta manera pero no toma el ingreso de los parámetros.
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Arch.VB\Arte Video\Sistema2\bases\Clientes2.mdb"
Set Vcclien = db.OpenRecordset("Vcclien", dbOpenTable)
Set Vcvideo2 = db.OpenRecordset("Vcvideo2", dbOpenTable)
'Set Reservas = db.OpenRecordset("Reservas", dbOpenTable)
Dim desde, Hasta
socio = InputBox("Socio")
desde = InputBox("desde")
Hasta = InputBox("hasta")
Set reserv = conn.Execute("SELECT Reservas.Nsocio, Reservas.Fdesde, Vcclien.NOMBRE, Vcvideo2.TITULO INTO resdereservas FROM (Reservas INNER JOIN Vcclien ON Reservas.Nsocio = Vcclien.NRO_SOCIO) INNER JOIN Vcvideo2 ON Reservas.codpelicula = Vcvideo2.UNIDAT WHERE Reservas.NSocio LIKE '%" & socio.Caption & "%'" And Where(Reservas.Fdesde >= "& desde &") And Where(Reservas.Fdesde <= "&Hasta &"))
conn.Close
 
fmarredo
493 Mensaje(s)
Enviado - 11/3/2003
 
Tenés algunos problemas en el código que pusiste:

. Tenés un objeto llamado conn que aparentemente es un objeto de la clase Connection de ADO (por la forma en que lo abrís) y después usás un objeto llamado db que creería que es una instancia de la clase Database de DAO, ya que abrís los recordset usando el método OpenRecordset. Tratá de usar solamente una sola librería para facilitar el mantenimiento. (Te recomiendo que uses ADO)

. Abrís dos recordsets Vcclien y Vcvideo2 que no cumplen ninguna función. Además no te conviene abrirlos como dbOpenTable a menos que necesites alguna operación específica de ese tipo de recordset.

. En la cadena SQL ponés la palabra Where varias veces (se coloca sólo una vez)

. Los valores de fechas en la cadena SQL deben ir entre numerales (#) y con formato mm/dd/yyyy (para Access).

.Ojo con los JOIN hechos con LIKE ya que se pueden producir productos cartesianos.

.El método execute no te va a devolver nada porque es una consulta de acción y no de selección, por lo que el recordset reserv lo vas a tener que abrir después de la ejecución directamente leyendo la tabla resdereservas.

Espero que te sea leve ;)

 
 

 

Contactos myStudio Network