FoxPro/Visual FoxPro - PASAR REGISTROS EN BLANCO A UNA TABLA

   
Vista:

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Joel (40 intervenciones) el 28/03/2016 15:49:31
BUENOS DIAS COLEGAS, MI CONSULTA ES LA SIGUIENTE, QUISIERA AGREGAR UNOS REGISTROS EN BLANCO A UNA TABLA YA CREADA CON 366 REGISTROS DE PACIENTES, SUCEDE LO SIGUIENTE

-TENGO UN SISTEMA MEDICO Y ESTE GUARDA LA PARTE PRINCIPAL DEL FORMULARIO DE REGISTRO EN UNA TABLA (Tpctes) Y OTROS DATOS EN OTRA TABLA (Tappctes) DENTRO DE ESE MISMO FORMULARIO CON SU ID PRINCIPAL AMBAS TABLAS "PACTE_ID"

- LO QUE PASA ES QUE LOS PRIMEROS REGISTROS DEL 1-173 ESTAN VACIO DE LA TABLA DE (Tappctes) NO PUEDE ESTAR ASI PORQUE CUANDO MODIFICO ESE REGISTRO NO LO REMODELA PORQUE SE SUPONE QUE ESTA CREADO ENTONCES NO HACE NINGUN CAMBIO, PERO SI HACE CAMBIO CUANDO CREO UN REGISTRO NUEVO. QUISIERA SABER COMO LLENAR AUNQUE SEA EN BLANCO DESDE EL 1-173 PARA QUE PUEDAN MODIFICARSE

-SI HAY DATOS DEL 174-366 en la tabla de Tappctes Y EN LA TABLA DE Tpctes del 1-366

EN REALIDAD NO SE PORQUE SE BORRAN ESOS REGISTROS.
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

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Fidel José (320 intervenciones) el 28/03/2016 16:42:32
La verdad, no entiendo. Agregar registros en blanco a una tabla? Para qué?. Se supone que las tablas tienen datos, no blancos.
No sé que tratas de decir con "no lo remodela".
Si se te generan registros en blanco es porque trabajas directamente sobre la tabla y mandas un append blank si utilizar buffering y luego cierras el formulario.
Si quieres utilizar la estructura de las tablas para transportar datos, genera los cursores paralelos y actualiza las tablas en base a los cursores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1) Inicio
SELECT * FROM Tappctes WHERE .F. INTO CURSOR curTappctes
SELECT curTappctes
APPEND BLANK
 
2) Actualizdo todos los datos del form en el cursor curTappctes
REPLACE ....
 
3) Grabar nuevo registro
SELECT curTappctes
SCATTER TO laTappctes
INSERT INTO Tappctes FROM ARRAY laTappctes
UNLOCK IN Tappctes
FLUSH IN Tappctes
 
Si el cursor curTappctes tiene varios registros, va lo mismo pero dentro de un SCAN / ENDSCAN
SELECT curTappctes
SCAN
	SCATTER TO laTappctes
	INSERT INTO Tappctes FROM ARRAY laTappctes
ENDSCAN
UNLOCK IN Tappctes
FLUSH IN Tappctes

Para modificar registros puedes tomar una estrategia similar pero, tratándose de tablas dbf, puedes aprovechar el número de registro.
Si las tablas se abren en modo SHARED, nadie podrá ejecutar un PACK y por lo tanto los números de registro no cambiarán durante le proceso.

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
SELECT *,Recno() as Regis,.F. AS BORRAR FROM Tappctes WHERE [ Condicion de Busqueda]  INTO CURSOR curTappctes
En este cursor curTappctes tendrás dos campos adicionales (Regis con el número de registro y Borrar (L) que puedes usar como una marca para indicar que el registro debe ser borrado en la tabla.
 
Acá haces todas las modificaciones sobre el cursor curTappctes
 
SELECT curTappctes
SCAN
	lnRegis = curTappctes.Regis
	lBorrar = curTappctes.Borrar
	SCATTER TO laTappctes
	IF LNREGIS = 0         && ES UN REGISTRO NUEVO por lo que "Regis" quedó en cero
		INSERT INTO Tappctes FROM ARRAY laTappctes
	ELSE
		SELECT TAPPCTES
		GO lnRegis
		IF RLOCK()
			IF LBORRAR
				DELETE
			ELSE
				GATHER FROM laTappctes
			ENDIF
		ENDIF
	ENDIF
ENDSCAN
UNLOCK IN Tappctes
FLUSH IN Tappctes
USE IN curTappctes
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

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Joel (40 intervenciones) el 28/03/2016 16:58:40
Ok sucede lo siguiente, tengo esas dos tablas que estas relacionadas Tpctes & Tappctes lo he estado revisando y note que se borraron casi la mitad de los datos de la tabla Tappctes del registro 1 hasta el 173 y son algunos 366 en total pero en la de Tpctes esta completa del 1 hasta el 366, digo que no se pueden modificar es del 1 hasta el 173 me pongo a modificar y no agarra cambios y lo que tenia en mente era tratar de rellenar esos datos que faltan para que pueda modificarse ya que no quieren, los únicos que se pueden guardar son del registro 173 en adelante
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 José Luis

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por José Luis (16 intervenciones) el 28/03/2016 18:30:23
Hola Joel:

Te sugiero el siguiente procedimiento para agregar los registros que necesitas:

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
Close all
*Si utilisas archivo indice con terminación .CDX
use Tappctes order pacte_id shared
sele 0
use tpctes order pacte_id shared
 
*Si utilisas archivo indice con terminación .IDX
*use Tappctes order pacte_id shared
*sele 0
*use tpctes order pacte_id shared
 
*Yo utilizo CDX
Do While Not Eof()
   Pacte_idM = Pacte_id
   Sele Tappctes
   Find "&Pacte_idM"
   If Eof()
      CapM = .F.
      Do While CapM = .F.
         If Flock()
            CapM = .T.
            Append Blank
            Repl Pacte_Id With Pacte_IdM
         EndIf
      EndDo
      Unlock
   EndIf
   Sele Tpctes
   Skip
EndDo

Saludos
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 Mauricio Antonio

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Mauricio Antonio (1368 intervenciones) el 28/03/2016 21:19:04
Porque no borras todos los registros de ambas tablas y empiezas de cero a crear y modificar registros?
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

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Joel (40 intervenciones) el 28/03/2016 22:27:39
uhm pues porque el sistema ya lo tiene instalado un doctor de la familia hace varios meses y necesita sus pacientes y las consultas de estos. los pacientes se buscan todos pero como dije anteriormente no todos se pueden modificar
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 Mauricio Antonio

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Mauricio Antonio (1368 intervenciones) el 29/03/2016 01:46:29
el doctor puede tener una copia, pero tu tienes el sistema para trabajar. No te parece que empieces en tu sistema de cero y entregues un buen trabajo, animate, veras que es lo mejor.
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

PASAR REGISTROS EN BLANCO A UNA TABLA

Publicado por Joel (40 intervenciones) el 06/04/2016 22:59:47
si también, pero lo que necesito es un quary que me llene los datos del (EX-000001 - EX-000173) solo el numero de expediente (pacte_id). lo que tuve que hacer para llenarlo fue darle un browse a la tabla Tappctes y agregarlo uno por uno hasta llegar a el 173, supongo que tiene que a ver una manera mas fácil para hacerlo con un quary, no se porque razón paso esto porque hago un proyecto nuevo y me guarda bien desde el 1 en adelante, solo me paso la primera vez y quisiera saber como solucionar si vuelve a pasar, y muchas gracias por tus recomendaciones bro se le agradece el apoyo
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