Access - resumiendo Can Anyone help me?

   
Vista:

resumiendo Can Anyone help me?

Publicado por Sergio (5 intervenciones) el 09/10/2009 21:36:00
Dim dbs As DAO.Database
Dim parteshoras As DAO.Recordset

Set dbs = CurrentDb
Set parteshoras = dbs.OpenRecordset("hor_detCons")

La consulta hor_detCons me abre perfecta en access, pero cuando intento ejecutarla en un modulo me da error 3061 pocos parametros en openrecordset.

Las lineas estan copiadas de la ayuda de access 2007

Pues quiero utilizar una consulta de seleccion predefinida en access, cuyos crierios de seleccion me entran en un formulario y que ejecutandola desde access me crea un subconjunto de registros perfecto, o sea funciona bien. Ahora bien ese subcojunto de registros necesito darle un tratamiento con Basic y no consigo abrir el Dataset pues me da el error en el open ejecutar el modulo, sin embargo si cambio el nombre de la consulta en el open por el de la tabla original no me da error.

Deduzco que no me deja utilizar consultas en basic por alguna razon.

La consulta es esta: pero funciona osea que ni tocarla
SELECT hor_det.CLAVE_DET, hor_det.TRABAJO, hor_det.DENOMINA, hor_det.HORAS, hor_det.M_D, hor_det.DIETAS, hor_det.IMP_DIETA, hor_det.KMS, hor_det.N, hor_det.C, hor_det.OCP, hor_det.CATEGO, hor_det.FECHA AS FECHA2, hor_det.FECHA, hor_det.OPERARIO, hor_det.EMPRE, hor_det.V1, hor_det.V2, hor_det.PHT, hor_det.FESTIVO, hor_det.ALIAS, hor_det.ESPECIAL, hor_det.TEXTO, hor_det.TIPO_HORA, hor_det.MANUAL, hor_det.FECHAPRO
FROM hor_det
WHERE (((hor_det.FECHA)>=[Formularios]![Seleccion Partes]![FEDESDE] And (hor_det.FECHA)<=[Formularios]![Seleccion Partes]![FEHASTA]) AND ((hor_det.OPERARIO)=[Formularios]![Seleccion Partes]![EMPLE1]) AND ((hor_det.EMPRE)=[Formularios]![Seleccion Partes]![empre1]))
ORDER BY hor_det.CLAVE_DET;

Active el ado 3.6 y me dice que el nombre entra en conflicto con un modulo, proyecto o biblioteca existente. Pues habia leido en el foro que alguien tenia mismo problema para usar querys y se le habia reparado activando Dao.
si la referencia es Dao, yo lo que quiero simplemente es poder usar en Vba la consulta que tengo predefinida en access y que funciona bien. Como traduccion ya lo hace el propio access no??
voy a probar a deshabilitar 12.0 y habilitar Dao 3.6
Como colines se puede usar una consulta ya definida en Access esa es mi question
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:resumiendo Can Anyone help me?

Publicado por mi menda (1111 intervenciones) el 11/10/2009 13:32:26
Hola:
Sí en la consulta tienes criterios debes meterlos dentro de la función Eval() para que el recordset lo entienda como una expresión, por ejemplo en el criterio del campo hor_det.Fecha:

Eval(">= Forms![Seleccion Partes]!FEDESDE")
Al hacer referencia al formulario lo tienes que poner en inglés: Forms en vez de Formularios.

Un saludo
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:resumiendo Can Anyone help me?

Publicado por jose (741 intervenciones) el 13/10/2009 08:29:11
en las condiciones

where la fecha tiente que tener formato americano

mes dia año mmddyy y así podrias ponerlo format$ (fecha ,"mmddyy")

los datos que sean nomericos str$(numeroempesa)

los textos entre comillas simples ' '

and categoria= '" & formulario.categoria & "' ............

fijate tiene ' comillas simples y luego comillas normales "

SELECT hor_det.CLAVE_DET, hor_det.TRABAJO, hor_det.DENOMINA, hor_det.HORAS, hor_det.M_D, hor_det.DIETAS, hor_det.IMP_DIETA, hor_det.KMS, hor_det.N, hor_det.C, hor_det.OCP, hor_det.CATEGO, hor_det.FECHA AS FECHA2, hor_det.FECHA, hor_det.OPERARIO, hor_det.EMPRE, hor_det.V1, hor_det.V2, hor_det.PHT, hor_det.FESTIVO, hor_det.ALIAS, hor_det.ESPECIAL, hor_det.TEXTO, hor_det.TIPO_HORA, hor_det.MANUAL, hor_det.FECHAPRO
FROM hor_det
WHERE (((hor_det.FECHA)>=[Formularios]![Seleccion Partes]![FEDESDE] And (hor_det.FECHA)<=[Formularios]![Seleccion Partes]![FEHASTA]) AND ((hor_det.OPERARIO)=[Formularios]![Seleccion Partes]![EMPLE1]) AND ((hor_det.EMPRE)=[Formularios]![Seleccion Partes]![empre1]))
ORDER BY hor_det.CLAVE_DET;
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:resumiendo Can Anyone help me?

Publicado por jose (741 intervenciones) el 13/10/2009 09:01:18
te pongo un ejemplo para que lo veas

la consulta está dividida en variables c11, c21, c31 etc para simplificarlo y a la vez poder comprobar parcialmente la consulta

al final tiene un select case porque en función de lo que se elija en el formulario la consulta es diferente .


Set rs = CreateObject("ADODB.RecordSet")
Set con = Application.CurrentProject.Connection

C11 = "": c21 = "": c31 = "": c41 = "": c51 = "": c61 = "": C71 = "": c81 = "": c91 = ""

C11 = "SELECT Count([T160-PLATOS-DIA].[DIA-T160]) AS [CuentaDeDIA-T160]"
c21 = "FROM [T130-COMIDAS-DIA] INNER JOIN [T160-PLATOS-DIA] ON [T130-COMIDAS-DIA].[ID-T130] = [T160-PLATOS-DIA].[REF-COMIDA-DIA-T130-T160]"


c31 = "WHERE ((([T130-COMIDAS-DIA].[IDCLIENTE-T130]) Between " & Str$(1) & " And " & Str$(9999999) & " ) "

c41 = " And (([T160-PLATOS-DIA].[DIA-T160])= #" & Format([FE], "mm/dd/yyyy") & "# ) "

c51 = " And (([T160-PLATOS-DIA].[DCMC-T160])= " & Str$(M3) & " ) "
c61 = " And (([T160-PLATOS-DIA].[TIPOPLATO-T160])='" & "2P" & "' ) "

Select Case ZOCEN

Case Is = 1
C71 = " And (([T130-COMIDAS-DIA].[ZONA-T130]) Between" & Str$([ZONA1]) & " And " & Str$([ZONAF]) & " ) )"

Case Is = 2

C71 = " And (([T130-COMIDAS-DIA].[CENTROS-T130]) Between" & Str$([CENT1]) & " And " & Str$([CENTF]) & " ) )"

Case Is = 3

C71 = " And (([T130-COMIDAS-DIA].[ZONA-T130]) <> " & "0" & " ) ) "

End Select


consulta = C11 & c21 & c31 & c41 & c51 & c61 & C71 & c81 & c91

' MsgBox consulta


rs.Open consulta, con, adOpenDynamic, adLockOptimistic
'rs.MoveLast
'rs.MoveFirst
A2 = rs.Fields(0).Value
'MsgBox rs.Fields(0).Value
'MsgBox rs.Fields(1).Value
rs.Close
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:resumiendo Can Anyone help me?

Publicado por Sergio (5 intervenciones) el 13/10/2009 11:47:30
Primero de todo Gracias Jose y mimenda por vuestras respuestas.
Jose tu codigo lo he reducido a esto: para simplificar

Set rs = CreateObject("ADODB.RecordSet")
Set con = Application.CurrentProject.Connection

C11 = "": c21 = ""
C11 = "SELECT * "
c21 = "FROM hor_detCons"

consulta = C11 & c21

Rem MsgBox consulta

rs.Open consulta, con, adOpenDynamic, adLockOptimistic
'rs.MoveLast
'rs.MoveFirst
A2 = rs.Fields(0).Value
'MsgBox rs.Fields(0).Value
'MsgBox rs.Fields(1).Value
rs.Close

y me da error '2147217904(80040e10) en tiempo de ejecucion no se han especificado valores requeridos para algunos parametros en la sentencia open de la consulta

El Problema es que la consulta "hor_detCons" (que ejecutandola desde Access, me funciona perfectamente) se realiza sobre una tabla vinculada en otro disco y dicha Tabla es de DB5

Ese es mi Problema.
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