Access - Uso de la funcion DSUM

 
Vista:

Uso de la funcion DSUM

Publicado por oretania (2 intervenciones) el 28/07/2006 22:29:27
Hola, necesito usar la funcion DSUM para una cosa y no me aclaro muy bien de como emplearla, os digo lo que he planteado:

Tengo una tabla con campos: codigo e importe, y su formulario correspondiente. El campo codigo es de tipo texto, una especie de clave.

Quiero tener un campo calculado "suma" en el formulario cuyo origen de datos sea una funcion que usa la funcion DSUM, de forma que para cada registro 'R' con "codigo=tal", me busque los registros con codigo de mayor longitud y que empiece igual que el del registro 'R' correspondiente.

Mi idea es usar la funcion DSUM asi:

Public Function SumaImportes()
[suma] = DSum("[importe]", "tabla_de_prueba", "len([codigo])>len(Forms![tabla_de_prueba]![codigo])")
End Function

Esa funcion la pongo como origen del control suma del formulario que os he descrito... Y al ejecutar el formulario no sale nada en ese campo :(.
..claro que lo suyo seria no hacer la asignacion suma sino directamente poner dentro del cuerpo de la funcion:
DSum("[importe]", "tabla_de_prueba", "len([codigo])>len(Forms![tabla_de_prueba]![codigo])")
pero me da fallo de compilacion (missing =) en el editor de VB.

Vamos que creo que se me escapa algo pero no tengo ni idea de que es.
Agradeceria cualquier opinion o ayuda experta!
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:Uso de la funcion DSUM

Publicado por Pitu (1 intervención) el 29/07/2006 18:15:51
Hola, no tengo ni idea de programación en absoluto, es mas, si supiera programar no estaba buscando en este sitio, pero:
Cuando quiero que una consulta me busque todas las apariciones de Bernardo, pongo "Bernardo", cuando quiero que la consulta me incluya todos los registros que contengan Bernardo, pongo: Como "*" & "Bernardo" & "*". Lógicamente si quiero que empiecen por Bernardo pongo: Como "Bernardo" & "*".
Vamos, lo digo por si te ayuda.
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:Uso de la funcion DSUM

Publicado por oretania (2 intervenciones) el 30/07/2006 18:22:26
Ya,lo que pasa es que aqui hay una comparacion de por medio:

He modificado un poco y tengo como origen de datos de un control la siguiente expresion:

=DSuma("importe";"tabla_de_prueba";
"compcadena(Izq([codigo];Longitud(Forms!tabla_de_prueba!codigo)); Forms![tabla_de_prueba]!codigo) = 0")

Se que la funcion Dsuma tiene la sintaxis correcta, el error esta en el criterio que, como se observa en la expresion es:

"compcadena(Izq([codigo];Longitud(Forms!tabla_de_prueba!codigo)); Forms![tabla_de_prueba]!codigo) = 0")

que viene a decir, seleccioname aquellos registros cuyo campo codigo empieza igual que el campo codigo del registro donde me encuentro. Se que cada parte por su cuenta no da fallos:

Izq([codigo];Longitud(Forms!tabla_de_prueba!codigo)); obtiene de cada registro sus primeros caracteres para comparar (tantos como el campo codigo del registro en el que estoy).

He probado a no usar la funcion compcadena, es decir, compara a pelo los strings con un =:

"Izq([codigo];Longitud(Forms!tabla_de_prueba!codigo))= Forms![tabla_de_prueba]!codigo"

pero me sigue dando error.. probando los trozos en campos calculados si que funciona cada cosa por su lado.. pero al comparar.. no!!!!

Alguna forma mas facil de hacer esta comparacion en el criterio??
Es simplemene sumar los valores importe de los registros cuyo campo "codigo" empiece igual que el campo "codigo" del registro en el que estoy.. Muchas gracias
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