FoxPro/Visual FoxPro - Ayuda con Ids autoincrementales

 
Vista:

Ayuda con Ids autoincrementales

Publicado por Gustavo (33 intervenciones) el 15/07/2014 15:28:46
Hola Foro!
Estimados, necesitaría ayuda con el siguiente problema:

Tengo una tabla "ventas" con su campo id_venta (autoinc), ese campo es el que relaciona a la tabla detalle.
Al ser autoincremental, hasta no realizar un tableupdate y recuperar su valor, no tengo ese dato para los registros de la tabla detalle....

Como debería manejar estos casos?

Desde ya muchas gracias y saludos!
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 con Ids autoincrementales

Publicado por Saul (728 intervenciones) el 15/07/2014 23:17:33
Hola Gustavo

Deberias hacer algo asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
*Tabla Cabecera
TABLEUPDATE(.T.)
 
SELECT MAX( id_venta) As Ultimo FROM Ventas Into Cursor _UltimoCampo
 
SELECT _UltimoCampo
GOTO TOP
IF RECCOUNT()
    nUltimo = _UltimoCampo.Ultimo
ELSE
 nUltimo = 0
ENDIF
 
*Tabla Detalle
IF nUltimo > 0
    SELECT Detalle
    ** Tus insert
    APPEND BLANK
    Replace _Campollave with nUltimo
     ..
     ..
 
    TABLEUDATE()
ENDIF
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 con Ids autoincrementales

Publicado por gustavo (33 intervenciones) el 18/07/2014 01:46:50
Hola Saul, muchas gracias por tu ayuda.
Te cuento como lo resolvi.
Al momento de GRABAR hago lo siguiente:

SET MULTILOCKS ON
BEGIN TRANSACTION
IF TABLEUPDATE(.T.,.T.,"v_venta")
nIDVta = GETAUTOINCVALUE(0)

SELECT v_venta_detalle
replace v_venta_detalle.id_venta WITH nIDVta ALL

IF TABLEUPDATE(.T.,.T.,"v_venta_detalle")
END TRANSACTION
ELSE
=AERROR(errors)
=MESSAGEBOX("Error al guardar Detalle! se cancela la operacion" +CHR(13)+ 'Error: '+STR(errors(1)) +CHR(13)+ 'Texto: '+errors(2),48,"Atencion")
ROLLBACK
=TABLEREVERT(.t.,"v_venta")
=TABLEREVERT(.t.,"v_venta_detalle")
ENDIF
ELSE
=AERROR(errors)
=MESSAGEBOX("Error al guardar la Venta, se cancela la operacion" +CHR(13)+ 'Error: '+STR(errors(1)) +CHR(13)+ 'Texto: '+errors(2),48,"Atencion")
ROLLBACK
=TABLEREVERT(.t.,"v_venta")
=TABLEREVERT(.t.,"v_venta_detalle")
ENDIF

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