border
VB 6
 
 
/

Retroceder   VB-MUNDO - Visual Basic, y mucho mas > Programacion > Visual Basic 6.00
Olvidó Password? Registrarse!
Registrarse FAQDonate Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

El Mejor Hosting .NET Framework 4.0

En VB-MUNDO usamos el increible servicio de SmarterASP

Respuesta
 
LinkBack Herramientas
  #1 (permalink)  
Antiguo 24-08-2010, 15:37:56
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 138
Créditos: 3.924
Liudex Aun no valorado
Exclamation Pasar parmetro a consulta access desde vb

hola amigos tengo esta una consulta parecida a esta almacenada en access y quiero llamarla desde vb, mi pregunta es como pasar el parametro (CLIENTES.CODCLIENTE)=[?] desde vb para que se ejecute correctamente.

SELECT CLIENTES.CODCLIENTE, CLIENTES.NOMBRECLIENTE, CLIENTES.DIRECCION_CLIENTE
FROM CLIENTES
WHERE (((CLIENTES.CODCLIENTE)=[?]));
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 24-08-2010, 16:10:15
Avatar de MiguelPG
Usuario VIP del Foro
 
Registrado: dic 2002
Ubicación: Santander
Posts: 557
Créditos: 17.644
MiguelPG Valoración +2
Predeterminado Re: Pasar parmetro a consulta access desde vb

Hola Liudex.
Suponiendo que el código del cliente estuviera contenido en una variable de tipo numérico (miVariable), puedes hacer la consulta de este modo:

SELECT CLIENTES.CODCLIENTE, CLIENTES.NOMBRECLIENTE, CLIENTES.DIRECCION_CLIENTE
FROM CLIENTES
WHERE CLIENTES.CODCLIENTE = " & miVariable

Si fuera una variable de tipo alfanumérico harías la consulta de esta otra manera:

SELECT CLIENTES.CODCLIENTE, CLIENTES.NOMBRECLIENTE, CLIENTES.DIRECCION_CLIENTE
FROM CLIENTES
WHERE CLIENTES.CODCLIENTE = '" & miVariable & '"

Espero haber podido ayudarte.
Saludos.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 24-08-2010, 16:45:30
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 138
Créditos: 3.924
Liudex Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Muchas gracias por su pronta respuesta, pero creo que no me explique bien, yo he creado una consulta en access la cual me pide un parametro cuando la ejecuto, lo que quiero es hacer la llamarla desde visual y poder pasar ese parametro. por ejemplo si la consulta en access me pide como parametro el Codigo del Cliente, supongamos que mi consulta se llama CnClientes, hago esto en mi recordset en vb:
RsSistema.open "Select * From CnClientes"
if RsSistema.RecordCount <> o then
set Migrid.Datasource= RsSistema
end if

Obviamente me da un error por que no le estoy enviando el parametro que pide la consulta almacenada en access..
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 24-08-2010, 17:39:37
Avatar de acalanto
Administrador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 6.248
Créditos: 53.975
acalanto ha deshabilitado la reputación
Predeterminado Re: Pasar parmetro a consulta access desde vb

El poner parámetros tipo [?] en una consulta para que el sistema nos solicite en un imputbox el valor deseado, solamente pertenece a las funciones ded dominio de Access, pero recuerda que estás trabajando en VB6 que no es lo mismo.

La solución es la que te propone MiguelPG, y lo único que tendrás que modificar es crear un nuevo formulario que se muestra antes de ejecutar la consulta, guardar el código en una variable y aplicar el ejemplo.


En el código que pones en tu último post no tiene porqué producirse un error, salvo que sea debido a otras razones que no podemos conocer. La única diferencia es que te devolverá todos los registros de la tabla pues no tienes ninguna condición tipo WHERE.


Código:
 
RsSistema.open "Select * From CnClientes"
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 24-08-2010, 18:07:38
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 138
Créditos: 3.924
Liudex Aun no valorado
Smile Re: Pasar parmetro a consulta access desde vb

Lo que sucede es que yo crei que se podia pasar el parametro desde Vb, debido a que la Sentencia que tengo en un poco mas elborada de hecho es asi:

SELECT Presupuesto.NumPresupuesto, Presupuesto.NumSolicitud, Presupuesto.RifCliente, Presupuesto.IdSucursal, Presupuesto.Departamento, Presupuesto.FechaEmision, Presupuesto.Recomendaciones, Presupuesto.Mot_Anulacion, Presupuesto.Estado, Presupuesto.Area, DetallePresupuesto.Item, DetallePresupuesto.Especificaciones, DetallePresupuesto.Unidad, DetallePresupuesto.Cantidad, DetallePresupuesto.CostoUnd, DetallePresupuesto.Utilidad, Sucursales.NombSucursal, Clientes.Nombre, Clientes.Direccion, Solicitud.RifCliente
FROM (((Presupuesto INNER JOIN Clientes ON Presupuesto.RifCliente = Clientes.RifCliente) INNER JOIN Sucursales ON (Clientes.RifCliente = Sucursales.RifCliente) AND (Presupuesto.IdSucursal = Sucursales.IdSucursal)) INNER JOIN Solicitud ON (Solicitud.NumSolicitud = Presupuesto.NumSolicitud) AND (Clientes.RifCliente = Solicitud.RifCliente)) INNER JOIN DetallePresupuesto ON Presupuesto.NumPresupuesto = DetallePresupuesto.NumPresupuesto
WHERE (((Presupuesto.NumPresupuesto)=[?]));

Por lo me dio curiosidad de saber si era posible su utilizacion desde programacion, de todos modos para concluir y no dar mas vuletas al asunto lo mismo se logra (ya lo probre) quitando el parametro a la consulta y agregandolo en el recordset de Vb... Gracias por sus respuestas...

Postdata.. Todo este embrollo es buscando la forma de optimizar la carga de datos en los grid debido a que si se realiza por medio de ciclos for o do while y son muchos los datos se hace lenta, cuando consiga realizar y probar el codigo de forma optima lo mostrare, para beneficio comun.
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 14-03-2013, 21:56:17
Nuevo Amigo
 
Registrado: mar 2013
Posts: 3
Créditos: 450
CeleGM Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Hola! ya que Lograste hacer que funcione tu programa quisiera que por favor me ayudaras! estoy intentado pasar desde vb unos parámetros de fecha a una consulta en access 2007 que se ejecuta en un subinforme. y no se como hacerlo. la consulta es la siguiente:

PARAMETERS t11 Text ( 255 ), t12 Text ( 255 );
SELECT historial.contactolle, Count(historial.contactolle) AS Guías
FROM historial
WHERE (((historial.fecha) between [t11] and [t12]))
GROUP BY historial.contactolle
HAVING (((Count(historial.contactolle))>0));

como hago para cargar los parámetros t11 y t12 desde el codigo vb del boton de mi Formulario donde se abre el informe y su vez el subinforme.

Agradecería mucho tu respuesta!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 15-03-2013, 14:11:11
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 138
Créditos: 3.924
Liudex Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Bueno amigo CeleGM lo que yo hice fue lo que me indico el amigo Miguel, pase el parametro desde mi interfaz vb mediante una variable, me explico en mi caso lo que quería hacer era llamar un informe que esta en la bd access desde vb, para lo cual use el código que te muestro a continuación.

Código:
On Error GoTo Error_reports

    Set MSAccess = CreateObject("Access.Application")
    ''' indico donde la Bd
    Ruta = ("X:\TuBasedatos.mdb")
    MSAccess.OpenCurrentDatabase Ruta, False, "password"   
    ''' aqui indico los parametros y digo el nombre de la consulta que estoy llamando
    '''' los datos los envio desde los datapicker DtpDesde,dtphasta.
    MSAccess.DoCmd.OpenReport "Consulta", acViewPreview, , _
    "historial.fecha between #" & Format(DtpDesde, "YYYY/MM/DD") & "# and " & _
    "#" & Format(DtpHasta, "YYYY/MM/DD") & "#" 
   
    ObjectType = 3 'acOutputReport
    ReportName = "Consulta"
    ' formato al que se exportará el informe
    ExportFormat = "Snapshot Format (*.snp)"
    ' Nombre y ruta del archivo que se exportará
    SNPFile = "X:\Ingenieria" & "\" & "Consulta" & ".snp"
    MSAccess.DoCmd.OutputTo ObjectType, ReportName, _
    ExportFormat, SNPFile
    Load FrmReport
    FrmReport.Caption = "Informe: "
    ' vinculamos el archivo que hemos exportado con el visor
    ' de archivos Snapshot
    FrmReport.SnapshotViewer1.SnapshotPath = SNPFile
    ' eliminamos el archivo
    Kill SNPFile
    ' mostramos el formulario
    FrmReport.Show
    FrmReport.SnapshotViewer1.Zoom = snapZoomToFill
    MSAccess.CloseCurrentDatabase ' cierra la base de datos abierta
    MSAccess.Quit
    Set MSAccess = Nothing
	
	Exit Sub
Error_reports:
MsgBox "Error Numero " & Str(Err.Number) & " -- " & "  " & Err.Description, vbCritical, " ERROR....Best Instrument"

''' como te habras dado cuenta para mostrar mi informe en el programa vb utilizo
el visor de archivos Snapshot que lo he configurado previamente en un Formulario llamado FrmReport luego lo que hago es mostar el informe en el visor y ya..
espero haber sido suficientemente claro en la explicacion. cualquier duda!!!!!


Fijate que lo que deseas mostrar lo puedas hacer tambien en datareport y de repente es mas facil.
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #8 (permalink)  
Antiguo 18-03-2013, 18:25:56
Nuevo Amigo
 
Registrado: mar 2013
Posts: 3
Créditos: 450
CeleGM Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Hola Gracias por tu respuesta, Pero sigo sin lograr lo que quiero debido a que utilizando la fecha desde vb me filtra los datos de una manera distinta a la que quiero.
Me explico: lo que quiero es contar los registros de una tabla con el mismo nombre y hacer ese conteo dependiendo de un intervalos de fechas.

Mi consulta en Access funciona perfecto pero me pide que llene los campos de fecha, y esa informacion yo quiero que se cargue en la consulta desde un dtpicker de un formulario, la consulta es la siguiente:

PARAMETERS Parametro1 Text ( 255 ), Parametro2 Text ( 255 );
SELECT historial.contactolle, Count(historial.contactolle) AS Guías
FROM historial
WHERE (((historial.fecha) between [parametro1] and [parametro2]))
GROUP BY historial.contactolle
HAVING (((Count(historial.contactolle))>0));

donde parametro1 y parametro2 son las fechas desde, hasta.
para abrir mi informe en vb mediante un botón tengo este código:

formatoexp = "Snapshot Format(*.snp)"
DoCmd.OpenReport "historial3", acPreview
Set rpt = Reports("historial3")
rpt.Visible = False
Ctlinformes.Visible = True
DoCmd.OutputTo acOutputReport, "historial3", _
formatoexp, CurrentProject.Path & "\historial3.snp"
DoCmd.Close acReport, rpt.Name
Set rpt = Nothing
ctlinforme7.snapshotPath = CurrentProject.Path & "\historial3.snp"
Kill CurrentProject.Path & "\historial3.snp"
Application.Echo True
ctlinforme7.Visible = True

quiero una forma de llenar los parametros desde vb antes de abrir el informe para que ya no me pida los datos sino que se ejecute directamente dependiento de las fechas de los DTPicker que tengo, algo asi:

Dim Db As Database
Set Db = CurrentDb()
Dim Q As QueryDef

Set Q = Db.QueryDefs("consulta2")
Q.Parameters("parametro1") = " & Me.DTPicker2 & "
Q.Parameters("parametro2") = " & Me.DTPicker6 & "

pero no tengo idea como!

ayuda por favor
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #9 (permalink)  
Antiguo 22-03-2013, 13:19:18
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 138
Créditos: 3.924
Liudex Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Bueno mi amigo CeleGM yo creo que lo que tienes que hacer es hacerle un pequeño cambio a tu consulta en vez de tenerla asi

Código:
PARAMETERS Parametro1 Text ( 255 ), Parametro2 Text ( 255 );
SELECT historial.contactolle, Count(historial.contactolle) AS Guías
FROM historial
WHERE (((historial.fecha) between [parametro1] and [parametro2]))
GROUP BY historial.contactolle
HAVING (((Count(historial.contactolle))>0));
Crea la caonsulta de esta forma

Código:
SELECT historial.contactolle, Count(historial.contactolle) AS Guías
FROM historial
WHERE (((historial.fecha) between [Fecha1] and [Fecha2]))
GROUP BY historial.contactolle
HAVING (((Count(historial.contactolle))>0));
guarda esta nueva consulta y pruebas utilizqando el codigo que ten envie...
disculpa la tardanza..
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #10 (permalink)  
Antiguo 22-03-2013, 13:51:06
Nuevo Amigo
 
Registrado: mar 2013
Posts: 3
Créditos: 450
CeleGM Aun no valorado
Predeterminado Re: Pasar parmetro a consulta access desde vb

Hola amigo Liudex, muchas gracias por tus respuestas, pero consegui una forma mas facil de hacerla y que era precisamente lo que queria, sin necesidad de unar gran codigo, solo hice la conexion directa desde el generador de consulta Access y funciono. Aqui les dejo la simple solución.

simplemente en vez de utilizar parámetros en la consulta coloque la dirección exacta del dtpicker de donde quería filtrar las fechas de esta manera:

SELECT historial.contactosl, Count(historial.contactosl) AS Guías
FROM historial
WHERE (((historial.fecha) Between [forms]![mailroom]![dtpicker2] And [forms]![mailroom]![dtpicker6]))
GROUP BY historial.contactosl
HAVING (((Count(historial.contactosl))>=0));


observen esta parte del código:

Between [forms]![mailroom]![dtpicker2] And [forms]![mailroom]![dtpicker6])

donde
mailroom=es el nombre del formulario
dtpicker2 y dtpicker 6= son los dos calendarios de donde selecciono la fecha desde y hasta.

Espero les funcione!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 10:05:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios


right
Inactive Reminders By Icora Web Design