Visual Basic - Envío de datos entre formularios con VB (visualizar e introducir)

Life is soft - evento anual de software empresarial
 
Vista:

Envío de datos entre formularios con VB (visualizar e introducir)

Publicado por TokeRock (3 intervenciones) el 10/10/2011 18:40:35
Saludos a todos,

Estoy atascado en un proyecto realizado en access y necesito algo de ayuda.

Tengo una base de datos que manejo desde formularios.

Para propagar los datos entre las tablas envío mediante el siguiente código VB el dato de un formulario a otro, añadiéndolo al evento click() de un botón:
1
Forms ! [TABLA KRECIBE] ! [DATO KRECIBE] = Forms ! [TABLA KENVIA] ! [DATO KENVIA]



El problema es que tengo 2 casos que no estoy muy seguro de como solucionar.

El primero caso, es que cuando envío el dato, ese registro ya exista en la tabla que muestro a través del formulario entonces necesito que se visualice.
(En la mayoría de los casos es un único registro pero tengo un caso en el que puede haber varios registros asociados.)

El segundo caso es que ese dato no exista en la tabla que muestra el formulario abierto, entonces ir a un registro nuevo, copiar el dato al campo de la tabla asociado e introducir los datos.
En este caso he utilizado este código para solucionarlo.
1
2
DoCmd.GoToRecord , , acNewRec
Forms ! [TABLA KRECIBE] ! [DATO KRECIBE] = Forms ! [TABLA KENVIA] ! [DATO KENVIA]




He olvidado bastante lo que sabía de VB por que hace mucho que trabajo con el.

Me imagino que realizando una consulta SQL a la tabla "destino" buscando ese dato, podría saber si existe o no, y a partir de ahí mediante un IF decidir que acción llevar.

Necesito ayuda con el código y como estructurarlo.

Muchas gracias por vuestra ayuda!
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

Envío de datos entre formularios con VB (visualizar e introducir)

Publicado por TokeRock (3 intervenciones) el 12/10/2011 22:53:50
Buenas de nuevo,

Sigo a vueltas con este tema y creo que tengo unas solución.

Con esta línea, access busca si existe un dato relacionado entre tablas mostradas por formularios.

1
stLinkCriteria = "[CODIGO EPISODIO]=" & Me![CODIGO EPISODIO]



Si existe coincidencia, muestra el registro en el formulario y si no se posicionaría en el primer registro de la tabla, si no hay registros, se posiciona en un registro nuevo.

Lo que quería hacer es comprobar con un IF que se ha encontrado coincidencia.
Si se encuentra, simplemente me posiciono y muestro los datos.

Si no existe coincidencia, lo que quiero es que siempre cree un registro nuevo y coloque el codigo relacionado en el cuadro de texto correspondiente

1
2
3
4
5
6
7
8
If (stLinkCriteria = "[CODIGO EPISODIO]=" & Me![CODIGO EPISODIO]) Then
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    Else
        DoCmd.OpenForm stDocName, , , stLinkCriteria
        DoCmd.GoToRecord , , acNewRec
        Forms![EXPLORACION]![CODIGO EPISODIO] = Forms![EPISODIO]![CODIGO EPISODIO]
        MsgBox ("Nueva exploración del paciente")
    End If


El problema que tengo es que no consigo que la sentencia IF funcione.

¿Como puedo hacer para que compruebe si "stLinkCriteria" a encontrado datos relacionados y ejecute el IF dependiendo del caso?

Espero que puedan ayudarme, por que empiezo a estar un poco cansado...
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

Envío de datos entre formularios con VB (visualizar e introducir)

Publicado por TokeRock (3 intervenciones) el 22/10/2011 12:02:00
Buenas otra vez,

He conseguido solucionar este asunto. Os dejo la solución por si a alguien le interesa:

Como no he conseguido hacer los 2 procesos con un único botón, lo he solucionado con 2 botones.

Botón de introducir datos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub BotonNuevoDato_Click()
On Error GoTo Err_BotonNuevoDato_Click
 
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "FORMULARIO_INTRO"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
    DoCmd.GoToRecord , , acNewRec
    Forms![FORMULARIO_INTRO]![CODIGO_COPIADO] = Forms![FORMULARIO_PREVIO]![CODIGO_ACOPIAR]
 
Exit_BotonNuevoDato_Click:
    Exit Sub
 
Err_BotonNuevoDato_Click:
    MsgBox Err.Description
    Resume Exit_BotonNuevoDato_Click
 
End Sub



Botón para visualizar los datos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub BotonVerDatos_Click()
On Error GoTo Err_BotonVerDatos_Click
 
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "FORMULARIO_VISUALIZA"
 
    stLinkCriteria = "[CODIGO_COMPARADO]=" & Me![CODIGO_ACOMPARAR]
 
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
 
Exit_BotonVerDatos_Click:
    Exit Sub
 
Err_BotonVerDatos_Click:
    MsgBox Err.Description
    Resume Exit_BotonVerDatos_Click
 
End Sub


Si alguien tiene alguna duda, que la indique más adelante.

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