Access - Como traer los datos de un socio a un formulario y otras dudas

   
Vista:

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Roberto (20 intervenciones) el 29/01/2017 20:12:25
Hola a todos


Primera Duda:

Tengo una tabla de Socios: Nombre, apellido1, apellido2, N_Socio.

Tengo una tabla contabilidad: N_Socio, Mes, Año, Concepto, Debe, Haber, Saldo

Tengo un formulario donde meto los datos de la tabla contabilidad. Tenía los datos de los socios por duplicado, pero mi intención sería almacenar simplemente el número de socio, creo, pero no se como enfocarlo.

Intenté poner un ComboBox vinculado a la tabla Socios, para meter datos por apellidos. Metía la incial del apellido y me iba poniendo los que comenzaban por esas letras. El problema venía al encontrar varios socios con el primer apellido igual, aunque seleccionase el segundo o tercer socio, al coindicir el mismo primer apellido que era el que buscaba el Combo, simpre me ponía el primero.

Probé a ponerlo vinculado al número de socio, así si que funciona, pero es un caos tener que buscar un socio por su número cuando no se conoce.

Seguro que es más sencillo de lo que pienso, pero no logro dar con la solución. Lo ideal sería poder tener cuatro Combos, en cada uno poder buscar por el dato correspondiente (por nombre, apellido1, aplledio2 o numero), y que al rellenar uno, se actualizaran con los datos los otros tres.

La repera sería, que a parte de poder buscarlo, en caso de no encontrarlo, me abriera el formulario donde meto los datos de los socios.





Segunda Duda:

Tengo una sentencia INSER INTO, que desde un formulario, me introduce varios datos en una tabla, pero son tantos datos, que me cambia de línea y me dar error. Hay alguna posiblidad de hacer la sentencia en varias líneas ?

DoCmd.RunSQL "INSERT INTO TB_Actividades_Socio(AS_Socio_Nombre, AS_Socio_Apellidos, AS_Socio_DNI, AS_Alumno_1_Nombre, AS_Alumno_1_Apellidos, AS_Alumno_1_Curso, AS_Alumno_2_Nombre, AS_Alumno_2_Apellidos, AS_Alumno_2_Curso, AS_Alumno_3_Nombre, AS_Alumno_3_Apellidos, AS_Alumno_3_Curso, AS_Alumno_4_Nombre, AS_Alumno_4_Apellidos, AS_Alumno_4_Curso, Actividad_1_Alumno_1, Actividad_2_Alumno_1, Actividad_3_Alumno_1) values (CB_Socio.Value, Apellidos_S.Value, DNI_S.Value, CB_Alumno_1.Value, Apellidos_A_1.Value, Curso_A_1.Value, CB_Alumno_2.Value, Apellidos_A_2.Value, Curso_A_2.Value, CB_Alumno_3.Value, Apellidos_A_3.Value, Curso_A_3.Value, CB_Alumno_4.Value, Apellidos_A_4.Value, Curso_A_4.Value, CB_Actividad_1_1.Value, CB_Actividad_1_2.Value, CB_Actividad_1_3.Value)"




Tercera Duda:

Tengo tres páginas en el formulario de Socios. En una de las páginas, tengo un cuadro, en horizontal tengo los meses del año, en vertical los años. En cada coordenada, por ejemplo, enero 2017, un TextBox Ene17, En la coordenada Julio 2017, un TextBox Jul17.

Habría alguna forma, de hacer, que cuando en la tabla de Contabilidad aparezca que un socio ha pagado el mes Enero de 2017, en el formulario, me ponga automáticamente en la coordenada Enero 2017, TextBox Ene17 la palabra Enero en color Verde ?


Pues a ver si me podéis aconsejar y echar una mano con las dudas. Muchas gracias anticipadas y un saludo.
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

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Jesús Manuel (303 intervenciones) el 30/01/2017 09:45:28
Un propuesta para tu primera duda:

En un formulario en blanco, formIndex, vamos a vista diseño e insertas un cuadro de texto, txtBuscar, y un cuadro de lista, lstSocios. En el caso del cuadro de lista cancela el asistente al crearlo.

En el cuadro de lista te vas a Propiedades/Datos/Oriegen de fila, pincha en el botón de los 3 puntos y vamos agregar los campos de la tabla Socios. En primer lugar el N_Socio, luego Nombre, Apellido1 y Apellido2

En el apartado Criterio de N_Socio ponemos: Como "*" & [Forms]![formIndex]![txtBuscar].[Text] & "*"
En Nombre, lo mismo, pero en la fila inferior del criterio, para hacer un OR anidado
En Apellido1, de nuevo en un nivel inferior del o:
Y en Apellido2 los mismo

Al final veras como una escalera descendiente con los criterios
Guardamos y cerramos del diseño de origen de datos del cuadro de lista.


De nuevo en lstSocios: Propiedades/Formato
En Nº Columans: 4
Ancho columnas: 3cm;4cm;4cm;4cm (ya depende de tu diseño, pero pon 4 valores para ver los datos de los 4 campos)
Encabezados de columna: Sí

Con esto ya tendrías que ver en el cuadro de lista todos tus socios


Vamos con los eventos y el código vba.
En txtBuscar, evento al cambiar, botón de 3 puntos y generador de código:
Me.lstSocios.Requery

En txtBuscar, evento doble clic, botón de 3 puntos y generador de código:
Me.txtBuscar.Value = ""
me.lstSocios.Requery


Con esto, según vamos escribiendo en txtBuscar, la lista se autoactualizar para encontrar los valores que coinciden, por lo que puedes buscar pro N_socio, Nombre, Apellido1 o Apellido2

Como vas a ver los registros en la lista, puedes directmente en el evento doble clic de la propia lista o en un botón, poner el código para abrir el formulario que quieres:

If Not IsNull(Me.lstSocios) Then
DoCmd.OpenForm "formContabilidad", , , "[N_Socio]= " & Me.lstSolicitantes 'Siempre que N_Socio sea de tipo númerico
DoCmd.Close acForm, "formIndex"
End If


Vete paso a paso, revisa los nombre de campos, tablas y formularios que he utilizado y lo que tu tienes e intenta probar variables para conseguir los que quieres, por ejemplos, en el origen de datos de la lista, crea un campo con los dos apellidos .

Un detalle, los acentos influyen en la búsqueda. Se puede modificar para que haga búsqueda independientemente de los acentos, pero ya requiere usar una función y modificar el origen de datos de la lista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Roberto (20 intervenciones) el 30/01/2017 12:17:30
Ufffff

Muchísimas gracias por tu respuesta, la vero super explicada, lo intentaré por la tarde, no si si aún así, estando tan detallada tendré problemas, no aseguro que mis conocimientos lleguen a tanto.

Lo dicho, muchísimas 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

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Roberto (20 intervenciones) el 31/01/2017 00:29:42
Perfecto, es exactamente lo que deseaba.

Muchísimas 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

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Jesús Manuel (303 intervenciones) el 30/01/2017 10:00:23
Para la duda 2:

Si los campos son tipo texto, creo que tienes mal construido el INSERT INTO, en la parte del VALUE los datos tipo texto tienen que ir entre comillas

Algunos ejemplos:

https://social.msdn.microsoft.com/Forums/office/en-US/4e5e13ff-bff5-4a0e-831a-ffe75ed3dd97/sql-insert-into?forum=accessdev

http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/microsoft-access/respuestas/2720940/insert-en-un-formulario-access
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

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Roberto (20 intervenciones) el 30/01/2017 12:19:26
Según está me funciona, y pega en la tabla todos los datos indicados, pero se queda corto, aún quedan algunos otros datos que no pude meter en la sentencia, se me pone la instrucción en rojo y que envía aviso de "demasiados parámetros para ésta instrucción o algo así"

Tampoco sé si se podría hacer de otra forma, seguro que sí, pero ya digo que mis conocimientos están muy limitados y lo intento hacer de la única manera que conozco.

Habría alguna forma de hacerlo por líneas ? Algo como:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
DoCmd.RunSQL "INSERT INTO TB_Actividades_Socio

(AS_Socio_Nombre, 
AS_Socio_Apellidos,
AS_Socio_DNI,
AS_Alumno_1_Nombre,
AS_Alumno_1_Apellidos,
AS_Alumno_1_Curso,
AS_Alumno_2_Nombre,
AS_Alumno_2_Apellidos,
AS_Alumno_2_Curso,
AS_Alumno_3_Nombre,
AS_Alumno_3_Apellidos,
AS_Alumno_3_Curso,
AS_Alumno_4_Nombre,
AS_Alumno_4_Apellidos,
AS_Alumno_4_Curso,
Actividad_1_Alumno_1,
Actividad_2_Alumno_1,
Actividad_3_Alumno_1) 
'Aquí aún faltarían por poner Actividades 1, 2 y 3 para alumnos 1, 2 y 3.

values
(CB_Socio.Value,
Apellidos_S.Value, 
DNI_S.Value, 
CB_Alumno_1.Value, 
Apellidos_A_1.Value, 
Curso_A_1.Value, 
CB_Alumno_2.Value, 
Apellidos_A_2.Value, 
Curso_A_2.Value, CB_
Alumno_3.Value, 
Apellidos_A_3.Value, 
Curso_A_3.Value, 
CB_Alumno_4.Value, 
Apellidos_A_4.Value, 
Curso_A_4.Value, 
CB_Actividad_1_1.Value, 
CB_Actividad_1_2.Value, 
CB_Actividad_1_3.Value)"

Un saludo y muchas gracias por todo
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

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Jesús Manuel (303 intervenciones) el 30/01/2017 13:46:06
Con esto consigues lo que quieres, que sirve para facilitar la lectura, pero que dudo que arregle tu error:

https://msdn.microsoft.com/es-es/library/ba9sxbw4.aspx
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
Imágen de perfil de Samuel

Como traer los datos de un socio a un formulario y otras dudas

Publicado por Samuel (52 intervenciones) el 18/09/2017 23:40:45
Hola, soy programador experto en Access y VBA he desarrollado aplicaciones y bases de datos desde hace más de 10 años.

Lo que intentas hacer se puede solucionar de tres formas distintas.
1. La mas fácil: Tienes que crear una query o consulta y colocar la instrucción SQL pero con parámetros, luego tienes que crear en VBA una sub-rutina que haga referencia a dicha query y asignarle los valores a los parámetros y finalmente ejecutar dicha query para insertar los datos.

2. Un poco mas complicada: Tienes que usar DAO.Recordset para abrir la tabla y luego agregar un nuevo registro e ir asignando los valores a los distintos campos, y luego debes de usar la instrucción Update para poder guardar definitivamente los datos en la tabla.

3. Solución de experto: Usando VBA crear módulos de clases en donde puedes crear varias variables que representen los nombres de los capos de la tabla y después asignar los valores a dichas variables y posteriormente usar cualquiera de los dos métodos que te explique anteriormente para insertar los datos en la tabla, esta solución aunque podría parecer la mas complicada es lo mas recomendable ya que es una programación de experto y que te permitirá entre muchas cosas mas reutilizar código y aumenta la capacidad de funcionamiento, rendimiento y mantenimiento de tu aplicación.

NOTA
Algunas de las aplicaciones que he desarrollado han sido:

Punto de venta.
Inventarios.
Control Documental.
Sistemas Contables.
Control de Consultorio Médico.
Recetario.
Control de gastos de Obra Civil.
Control de Radio Taxis.
Control de Redes Avon.
Control de producción y fabricación.
Etc.

Pueden contactarme a los teléfonos Cel. +55 (55) 62169107, 73148182
sam_tj1998@hotmail.com; Web: http://accesssolutions-webnode.com.mx/

Servicios de consultoria y desarrollo a la medida.
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