Access - ayuda sobre codigo

   
Vista:

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 18/06/2013 18:20:07
hola a todos a ver si me podeis ayudar:

me pueden decir que cogigo me podria hacer esta funcion?.

cargame en el textbox1 de mi formulario, el precio del textbox1 de la tabla "precios"
y suma los precios sugun los checkbox activados del campo depilacion
del subformulario visitas
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

ayuda sobre codigo

Publicado por Beni (21 intervenciones) el 19/06/2013 09:40:55
Creo que es un poco genérico lo que preguntas. pero a "grosso modo" puedes consultar algunos de los valores de esta forma:

1) Para consultar el campo precio de la tabla "precios":
me.textbox1 = Dlookup("precio", "precios", "condición/filtro (si lo hay")
ó
set taula = currentdb.openrecordset("Select Precio From Precios WHERE ...")
if not taula.eof then me.textbox1 = taula("precio")

2) Para consultar campos de un subformulario:
Me.visitas.Form.NombreCampo.Value

para obtener un precio final, puedes hacer, suponiendo que tengas dos checkbox:
me.textbox1 = Dlookup("precio", "precios", "condición/filtro (si lo hay")
if me.visitas.Form.Checkbox1 = true then me.textbox1 = me.textbox1 + me.visitas.form.Precio1
if me.visitas.Form.Checkbox2 = true then me.textbox1 = me.textbox1 + me.visitas.form.Precio2

Espero que te sirva. Suerte ;)
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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 19/06/2013 12:16:56
hola ante todo gracias por responder,os comento un poco mas detallado el tema:

1. lo que deseo es que en el txtbox1 que coresponde a la tabla "CLIENTE", se quede fijo el precio seleccionado de la tabla "PRECIOS". Es decir tengo una tabla "PRECIOS" en la que tengo unos precios prefijados,concretamente 5 cada uno en un campo, entonces deseo enlazarlos con la tabla "CLIENTE" a otros 5 campos, el tema es que en la tabla "CLENTE" los precios que aparecen alli son precios prefijados que no se pueden cambiar a menos que los cambie en la tabla "PRECIOS" y por mucho que ciere el formulario o el programa no se borren.Lo he echo con una variable publica en un modulo pero a veces funciona y otras no.

2. como un cliente puede hacer varias veces la misma actividad durante la semana, cada vez que lo hace aparece un checkbox nuevo en el subformulario del form "CLIENTES" con su nombre, es decir aparece 5 veces el nombre del cliente mas los 5 checkbox activados si hace 5 veces la misma actividad. entonces lo que deseo es que los checkbox se sumen por el precio de la actividad, si la actividad vale 50€, estos x5 de los checkbox = 250€ y visualirlos en el txtTotal. 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

ayuda sobre codigo

Publicado por Beni (21 intervenciones) el 19/06/2013 13:07:05
Lo siento pero no entiendo demasiado el funcionamiento de tu sistema
Quizás si me pasas la estructura de tus tablas entendería mejor...

Para mi algo lógico por lo que explicas en el punto 2 sería tener algo así:
CLIENTES (CodigoCliente, Nombre, Direccion...)
Un listado de clientes con su información básica.

ACTIVIDADES (Actividad, Precio)
Un listado de actividades con el precio de dichas actividades

ACTIVIDADES CLIENTES (CodigoCliente, Actividad, Precio)
Un historial de actividades que hayan hecho los clientes

Pero bueno, esta estructura y la que tu propones no las acabo de cuadrar, y no me queda otra que suponer como lo tienes montado...
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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 19/06/2013 14:15:11
Es una BD para una amiga que tiene un centro de estetica y tengo 4 tablas, cada una con sus respectivos formularios

1. clientes
2.visitas
3.trabajo.
4. precios

Aver si me explico algo mejor:

En el formulario clientes introduzco los clientes nuevos y desde este formulario accedo a la ficha del cliente por medio de un pulsador llamado "ver", esta ficha es el formulario "trabajo",es decir si selecciono un cliente y pulso el pulsador "ver" me paso directamente al formulario "trabajo" con las actividades que ha realizado el cliente.

El formulario visitas la utilizo para programar las visitas,es decir si llama un cliente y quiere hacerse una depilacion, como ya es cliente,lo selecciono de la tabla "clientes" por medio de un combo enlazado a la tabla cliente. En este formulario tengo unos checkbox en el cual voy activando dependiendo de los trabajos que quiere que se le hagan al cliente, sea depilacion,masajes,etc, un checkbox para cada uno de ellos.

En el formulario "trabajos" tengo un subformulario que es el del formulario "visitas" y me refleja los trabajos que se han realizado al cliente durante un periodo de tiempo, tambien tengo unos campos (textbox) con los precios de cada tipo de trabajo(masaje,depilacion,etc)estos precios son prefijados y vienen de la tabla "precios" y solo se pueden cambiar desde el formulario "precios".

El tema es; como puedo hacer el total de los trabajos efectuados a un cliente desde el formulario "trabajo", viendo por ejemplo que en el subformulariovisitas tiene 5 depilaciones,lo que deseo es que si el precio de una depilacion son por ejmplo 20€ y en el subformulariovisitas se ha hecho 5 en un mes,estos se sumen a los 20€, espero haberme explicado, 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

ayuda sobre codigo

Publicado por Borja (1 intervención) el 19/06/2013 15:41:46
Sin tener la estructura exacta de las tablas es pura especulacion pero creo que deberias hacer una consulta parecida a esta:

select count * from visitas where clienteID=tuCliente and tratamiento=true and month(fechatratamiento)=Mes

con eso deberias obtener el numero de veces que se ha hecho el cliente un tratamiento el mes que corresponda. Eso suponiendo que guardes si ha hecho el tratamiento como datos boolean, que como lo estas esplicando me parece lo mas logico.

A partir de ahi solo quedaria multiplicarlo por el coste del tratamiento para sacar el total, y sumarle otros si los hay.

PD: lamento la falta de acentos, pero estoy escribiendo en un teclado frances y no tengo ni idea de como se acentua con esto.
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

ayuda sobre codigo

Publicado por Beni (21 intervenciones) el 19/06/2013 16:00:15
La manera más lógica es sacar el total es consultando directamente los datos de las tablas. No te líes con la información de los subformularios, porque al fin y al cabo son datos de tablas;

Por ejemplo:
Toca especular de nuevo, pero suponiendo que en la tabla VISITAS tenga los campos Cliente, Fecha, y un seguido de columnas sobre los tratamientos que se hizo (por ejemplo hago la suposición que tengas tres columnas, una para depilacion, otra para maquillaje, y otra para pilling)


'Filtro por cliente y por fecha, porque según pusiste el subformulario te mostraba los trabajos realizados DURANTE UN PERIODO DE TIEMPO
set taula = currentdb.OpenRecordset("SELECT * FROM Visitas Where Cliente='CLIENTE' And Fecha between #Fecha1# and #Fecha2#")
while not taula.eof
if taula("Depilacion") = true then Total = Total + dlookup("PrecioDepilacion","Precios")
if taula("Maquillaje") = true then Total = Total + dlookup("PrecioMaquillaje","Precios")
if taula("Pilling") = true then Total = Total + dlookup("PrecioPilling","Precios")
taula.movenext
wend
taula.close

Al final del bucle tendrás sumados todas las sesiones que se hizo el cliente entre unas determinadas fechas.

Esta es la estructura que he supuesto. Si esta no es tu estructura, intenta comprender como se debe consultar porque no te debería ser complicado sacarlo, sea cual sea la estructura que tienes:

Tabla de VISITAS:
Cliente Fecha Depilacion MAquillaje Pilling
JUAN 30/05/13 cierto falso falso
JUAN 10/06/13 cierto falso cierto
JUAN 19/06/13 cierto falso cierto

Tabla de PRECIOS
PrecioDepilacion PrecioMaquillaje PrecioPilling
20 10 25
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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 19/06/2013 16:11:37
muchas gracias por todo lo ire haciendo al pie de la letra,muy agradecido por vuestra colaboracion
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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 20/06/2013 12:23:08
hola de nuevo mira con lo de if taula("Depilacion"), la palabra taula supongo que te refieres al nombre de la tabla,pues he hecho tada clases de combinaciones y siempre me da error, me gustaria que me dijeses donde lo inserto ya que lo puse en el formulario "trabajo" y si hay que hacer algun tipo de declaracion.Estoy algo verde con la programacion

lo que pretendo no es muy complicado, ya que lo unico que me falta para acabar la BD es practicamente este filtro, solo me tiene que filtrar todos los tratamientos que se le han hecho a un cliente y sumarlos.

Yo habia pensado hacer un contador que registrara la cantidad de checkbox que hay activados, pasarlos a una variable, esta variable al txtTotal y multiplicarlos por dos, con esto ya estaria. 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

ayuda sobre codigo

Publicado por jose (741 intervenciones) el 20/06/2013 13:15:22
prueba así

if taula.Fields("Depilacion").Value= .......
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

ayuda sobre codigo

Publicado por Beni (21 intervenciones) el 20/06/2013 15:45:27
Di por supuesto que sabías programar en access, aunque no se si es el caso. De no ser así se puede complicar facilmente el trabajo con esos formularios

Suponiendo que una vez abierto el formulario TRABAJOS no se pueden crear ni modificar nuevas visitas, podrías poner ese código en el evento Form_Load:

Private Sub Form_Load()
Dim taula as Recordset
Set taula = currentdb.OpenRecordset("SELECT * FROM Visitas Where Cliente='CLIENTE' And Fecha between #Fecha1# and #Fecha2#")
while not taula.eof
if taula("Depilacion") = true then Total = Total + dlookup("PrecioDepilacion","Precios")
if taula("Maquillaje") = true then Total = Total + dlookup("PrecioMaquillaje","Precios")
if taula("Pilling") = true then Total = Total + dlookup("PrecioPilling","Precios")
taula.movenext
wend
taula.close
End sub

Esto te cargaría el total al entrar dentro del formulario TRABAJOS.
'taula' es una variable del tipo Recordset, tal y como te he añadido
En la consulta que te puse debes tener en cuenta que deberías modificar algunos de los valores por los datos de tu formulario. Entre ellos estan el CLIENTE y las FECHAS por las que quieres consultar. Esa información tendrías que sacarla del propio formulario, o bien de algun otro lado. Por ejemplo:

WHERE Cliente=[Formularios]![Trabajos]![Cliente] And Fecha between [Formularios]![Trabajos]![Fecha1] and [Formularios]![Trabajos]![Fecha2]
o bien
WHERE Cliente='" & me.Cliente & "' And Fecha between #" & Format(me.Fecha1,"mm/dd/yy") & "# and #" & Format(me.Fecha2,"mm/dd/yy") & "#"

Estoy suponiendo que en el formulario Trabajos existe algun control llamado Cliente que contiene el idenftificador del cliente. y también estoy suponiendo que en ese mismo formulario también existen dos controles llamados FECHA1 y FECHA2 (esto es mucho suponer, realmente no se en donde debes tener ese dato para poder filtrar las visitas, porque como dijiste, solo te salían las visitas de un periodo determinado)

Creo que a un nivel mas básico ya no puedo llegar. si no consigues solucionar esto con esta información, yo más creo que no sabría ayudarte...
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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 20/06/2013 17:03:35
gracias otra vez por contestar otra vez e invertir tu tiempo conmigo,te estoy mareando por mi falta de detalle, te lo voy a resumir.

form visitas = tabla visitas

1. ingreso al cliente;nombre y apellido

en este formulario tengo unos checkbox que dependiendo de lo que desea hacerse activo uno o otro,
si quiere una depilacion activo un checkbox, y si quiere un masaje activo otro checkbox.

en este formulario tengo tambien un subformulario de esta misma tabla (tabla visitas) con dos txtbox tipo fecha para filtrar las consultas, es decir de tal fecha a tal fecha cuantas visitas tengo y lo veo en el subformulario.


form TRABAJO

aqui solo me aparece el cliente individualmente
en este formulario tengo un subformulario de la tabla visitas,es el mismo que tengo en el formulario visitas,pero solo me filtra un cliente, asi es como lo he configurado, es decir que si este cliente durante un mes se ha hecho 5 masajes y 3 depilacion porque asi lo reflejan los checkbox del subformulario.
el tema es sumar todas las depilaciones o masajes que se ha hecho por el precio prefijado.

no se si me he explicado,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

ayuda sobre codigo

Publicado por juan carlos (9 intervenciones) el 21/06/2013 21:14:36
hola BENI mira el codigo ya me empieza a funcionar, pero en el total tengo que poner un cerro porque si se queda en blanco , el sistema no arranca, sabes como solucionarlo? 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

ayuda sobre codigo

Publicado por Beni (21 intervenciones) el 25/06/2013 13:55:32
si total es un control del formulario, tienes que inicializarlo a 0. eso puedes hacerlo, por ejemplo, en el mismo código que te pasé. pon justo antes de empezar a sumar:
Total = 0
y listo.

Si no le pones valor, Access lo considera un nulo, y si sumas NULO + algo, siempre da = NULO. por ello siempre es bueno inicializar valores que tengan que sumarse
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

ayuda sobre codigo

Publicado por 2pl (461 intervenciones) el 25/06/2013 21:18:09
Cuando un campo numerico es nulo, se utiliza la funcion incorporada nz que quiere decir nulo a cero
TOTAL=NZ([CAMPO1]+NZ([CAMPO2])
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

ayuda sobre codigo

Publicado por 2pl (461 intervenciones) el 25/06/2013 23:05:51
Perdón le faltaba un parèntesis TOTAL=NZ([CAMPO1])+NZ([CAMPO2])
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