Visual Basic - Consulta Access con Parametros

Life is soft - evento anual de software empresarial
   
Vista:

Consulta Access con Parametros

Publicado por Rolando Moreno (22 intervenciones) el 21/08/2008 18:02:03
Buen dia,

Tengo una aplicacion desarrollada en visual basic 6 y access 2000. En access hice una consulta con parametros (Fecha) para obtener los movimientos de cierta fecha. La ejecuto en access y funciona, lo que no se es como enviar el parametro fecha desde visual basic para obtener los movimientos de esa fecha.

Ejemplo consulta Access: ConMov

PARAMETERS [Fecha] DateTime;
SELECT Det_MovProd.Folio,Det_MovProd.CveMat, Materiales.Descripcion,
Det_MovProd.Cantidad FROM Det_MovProd LEFT JOIN Materiales ON Det_MovProd.CveMat=Materiales.Clave
WHERE Det_MovProd.FecMov=[Fecha];

Antes de necesitar la consulta con parametros solo la llamaba asi:

Select * from ConMov

Estoy utilizando DAO 3.6

Espero me puedan ayudar.

De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta Access con Parametros

Publicado por ernie (1 intervención) el 27/08/2008 19:20:15
Hola:

Private Sub Command1_Click()
Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Tu_Archivo_MDB & ";Persist Security Info=False"
cmd.ActiveConnection = cn
cmd.Parameters.Append cmd.CreateParameter("Fecha", adDate, adParamInput)
cmd.Parameters("Fecha").Value = CDate(Text1.Text)
cmd.CommandType = adCmdTable
cmd.CommandText = "ConMov"
Set rs = cmd.Execute
Cls
Do Until rs.EOF
Print rs("Det_MovProd.Folio"), rs("Det_MovProd.CveMat"), rs("Materiales.Descripcion"), rs("Det_MovProd.Cantidad")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set cmd = Nothing
cn.Close
Set cn = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta Access con Parametros

Publicado por Rolando Moreno (1 intervención) el 29/08/2008 18:01:15
Mil gracias ernie, lo estoy probando y todo va bien.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta Access con Parametros

Publicado por Muriel (2 intervenciones) el 10/02/2009 11:37:09
Yo soy Muriel y estoy progrmando unas cositas en Visual Basic 6 y uso Microsoft Access para mis consultas.

Mi problema es como pasar los parametros a una consulta hecha en Access.

Aca va mi código, no se si me podrás ayudar....

Dim desde, hasta As String
Dim cantPer As Integer
Dim PorcenDif As Double
Dim cmd2 As ADODB.Command
Set Report = New rptDifCuotasDesreg
desde = Mid(frmSelRangoFechas.dtpDesde, 7, 4) & Mid(frmSelRangoFechas.dtpDesde, 4, 2)
hasta = Mid(frmSelRangoFechas.dtpHasta, 7, 4) & Mid(frmSelRangoFechas.dtpHasta, 4, 2)
cantPer = CDbl(hasta) - CDbl(desde)
PorcenDif = 1.1 'Le calculamos un 10% más para no ser tan estrictos
Set cmd2 = New ADODB.Command
cmd2.ActiveConnection = cn
cmd2.Parameters.Append cmd2.CreateParameter("des", adVarChar, adParamInputOutput, 6, desde)
cmd2.Parameters.Append cmd2.CreateParameter("has", adVarChar, adParamInputOutput, 6, hasta)
cmd2.CommandText = "ConsuProme"
cmd2.CommandType = adCmdStoredProc
Set rs = cmd2.Execute
rs2.Open "SELECT * FROM DifCuotasDesreguTMP", cn, adOpenDynamic, adLockOptimistic
While Not rs.EOF
rs2.AddNew
rs2.Fields(0) = rs.Fields(0)
rs2.Fields(1) = rs.Fields(1)
rs2.Fields(2) = rs.Fields(2) * 0.895
rs2.Fields(3) = rs.Fields(3)
rs2.Fields(4) = rs.Fields(4) * 0.895
rs2.Fields(5) = rs.Fields(5)
rs2.Fields(6) = rs2.Fields(4) - (rs2.Fields(2) * PorcenDif + rs.Fields(5))
rs2.Update
rs.MoveNext
Wend
rs2.Filter = "DiferenciaPesos > 0"
Report.Database.SetDataSource rs2
Report.ParameterFields(1).AddCurrentValue CDate(frmSelRangoFechas.dtpDesde)
Report.ParameterFields(2).AddCurrentValue CDate(frmSelRangoFechas.dtpHasta)

Bueno, la cuetión es que en el Execute me sale: Error -2147217887 en tiempo de ejecución. La operación de múltiples pasos de OLE DB genero errores. compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.

Espero tu respuesta lo mas pronto posible!

Muchisismas gracias!

Muriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta Access con Parametros

Publicado por Muriel (2 intervenciones) el 10/02/2009 13:14:45
Ya lo solucione, esta es la forma correcta:

Set cmd2 = New ADODB.Command
Set cmd2.ActiveConnection = cn
cmd2.CommandText = "ConsuProme"
cmd2.CommandType = adCmdStoredProc
Set rs2 = cmd2.Execute(, Array(desde, hasta))
rs3.Open "SELECT * FROM DifCuotasDesreguTMP", cn, adOpenDynamic, adLockOptimistic
While Not rs2.EOF
rs3.AddNew
rs3.Fields(0) = rs2.Fields(0)
rs3.Fields(1) = rs2.Fields(1)
rs3.Fields(2) = rs2.Fields(2) * 0.895
rs3.Fields(3) = rs2.Fields(3)
rs3.Fields(4) = rs2.Fields(4) * 0.895
rs3.Fields(5) = rs2.Fields(5)
rs3.Fields(6) = rs3.Fields(4) - (rs3.Fields(2) * PorcenDif + rs2.Fields(5))
rs3.Update
rs2.MoveNext
Wend

Lo demas anda perfecto!

Espero q les sirva!

Muriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar