Access - Ayuda en analisis de resultados repetidos

 
Vista:
Imágen de perfil de vianney
Val: 29
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Ayuda en analisis de resultados repetidos

Publicado por vianney (15 intervenciones) el 28/03/2020 23:10:29
Saludos estiamdos señores, estoy buscando ayuda con un codigo para analizar resultados repetidos, tengo unos datos estructurados en tablas, tabla_analisis(1) contiene los 4 numeros de identificacion del paciente, tabla_cortadaF(1) contiene los datos personales del paciente y el resultados del examen y quiero guardar los resultados del paciente en una sola fila, concatenados los datos personales del paciente a cada uno de los resultados de los examenes, en la tabla_fija(). La estructura de los datos se las muestro a continuacion:

9635.-GARCIA GIORGINAAGE11 AÑOSSEXFTS=GlicCro107.584mg/dL
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=TGO122.3280U/L 
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=DBiliB0.11975mg/dL
9640.-PEREZ ALEXANDRAAGE10 AÑOSSEXFTS=GlicCro86.0610mg/dL
9650.-TORO GOMES LUISAGE76 AÑOSSEXMTS=GlicCro101.451mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=GlicCro96.1858mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=Trig71.9156mg/dL 
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=LDL1110.540mg/dL L
9663.-GELVIS CLEMENTEAGE81 AÑOSSEXMTS=GlicCro81.1211mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=GlicCro104.922mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=Cole172.160mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=GlicCro99.2925mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=Cole158.000mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=HDLidg51.9285mg/
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=CaDiag29.21807mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=TGP110.8688U/L
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=RAG10.99805
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=BIbio0.51487mg/d
9677.-GUEVARA JOSEFAAGE74 AÑOSSEXFTS=CaDiag210.0000mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=GlicCro102.074mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=AcUric3.19464mg/dL
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=GlicCro68.4888mg/dL L
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=CaDiag29.60000mg/dL 
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=Albm4.33854g/dL TS
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=GlicCro88.8969mg/dL
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=Cole147.715mg/dL 
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=IPhos3.47631mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=GlicCro103.620mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=Trig160.144mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=LDL185.3673mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=GlicCro95.1604mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=Cole143.561mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=LDL178.2576mg/dL

El analisis que hago es el siguiente: Por medio de un ciclo For i=1 to Total_Examenes, lo que analizo es para cuando i=1 el codigo me llene la primera casilla de resultados. Luego por un condicional if i es mayor que 1 debo analizar si el numero de ppaciente esta repetido o no. El codigo debe comparar el numero de paciente en i mayor que 1, con el numero de paciente anterior (i-1), si el numero de paciente nuevo es igual al numero de paciente anterior el resultado esta repetido, por tanto me concatena al valor anterior el resultado actual. En caso contrario el valor de identificacion del paciente actual es diferente del valor de identificacion del paciente anterior, por tanto el resultado es nuevo, y lo asigna a la casilla i mayor que 1.El codigo es el siguiente:


Dim numero_examenes as integer

Dim tabla_cortadaF(1) As String

El valor de tabla_cortada(1) contiene la descripcion con los datos personales del paciente y el resultado del examen.

Dim tabla_analisis(1) As String

Contiene el numero de identificacion del paciente son 4 digitos, y este valor es el que si el paciente tiene varios examenes se repite, este mismo valor por cada Nuevo resultado. Esta tabla ya tiene los números de pacientes cargados.

Dim tabla_fija() As String

En esta tabla pretendo guardar los resultados del paciente, una sola descripción con los resultados del paciente uno al lado del otro.


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
For i = 1 To numero_examenes Step 1
 
            If i = 1 Then
'                                asigana a la primera casilla el primer resultado
 
                tabla_fija(i) = tabla_cortadaF(1)
 
            ElseIf i > 1 Then
 
                If tabla_analisis(1) = mid(tabla_fija(i - 1), 1, 5)  Then
 
'                                Me compara si el nuevo numero de paciente es igual al valor del paciente de la casilla anterior, lo que implica que es un dato repetido
'                                me concatena el nuevo resultado al valor del paciente anterior
 
                    tabla_fija(i) = tabla_fija(i - 1) & tabla_cortadaF(1)
 
                Else
'                                 El caso contrario del if implica que el el numero de paciente es diferente al paciente anterior
                                'por tanto asigna el valor del examen a la casilla
 
                    tabla_fija(i) = tabla_cortadaF(1)
 
                End If
 
            End If
Debug.Print tabla_fija(i)
Next i

El tema es que el codigo falla, y en la ventana de inmediato, no me imprime nada. Espero su ayuda por favor. Gracias.

Vianney Colmenares.
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 en analisis de resultados repetidos

Publicado por Anonimo (3316 intervenciones) el 29/03/2020 06:24:28
Yo utilizaría un bucle sin numerar nada, lo recorrería del principio al final y utilizaría dos variables, una para el código del paciente 'anterior' y otra para concatenar los análisis.


EL proceso
Al comienzo las variables están vacías (aun no se les asigno valor)

Se inicia un bucle que recorre los registros del primero al ultimo (no le importa cuantos son)
-- inicio del bucle --

IF ==> Se compara la variable código-paciente con el valor del registro actual, se pueden dar dos casos:

a.)El código es diferente:
Si no es el primer registro (la variable código -paciente <> 0) se añade el registro a 'tabla-cortada' o se le actualiza el campo concatenado
.- (se conoce el código del paciente y se tienen sus resultados concatenados: una SLQ es limpia y sencilla, también se puede utilizar VBA)
Se actualiza la variable código-paciente y se pone a cero la variable que concatena los resultados

b.)El código es coincidente:
Se añade (concatena) el resultado del análisis en la variable al efecto

End IF

En cualquier caso se avanza al siguiente registro

-- Final del bucle --

Al finalizar el bucle, se guarda el resultado del ultimo examen del ultimo paciente.

Se liberan variables, tablas ... etc. (esto es: se limpia la memoria de trabajo, un bien siempre escaso)
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 vianney
Val: 29
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Ayuda en analisis de resultados repetidos

Publicado por vianney (15 intervenciones) el 29/03/2020 17:10:16
Hola buen dia, muchas Gracias por tu respuesta. Voy a tratar de traducirla a codigo, pruebo y te aviso. Muchas. Gracias por tu 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