Martin
Si queres hacer la carga directamente sobre el archivo (no recomendable)
podes hacer:
En en caso de tener para la Cabecera ---> Factura1
y para el detalle ---> Factura2 si queres actualizar tenes que usar Factura2:Ficha
Pasos a seguir:
Control
.... List Box
.............BrowseBox - File - Browsing List Box (Select)
Te aparece el cuadro Select Column, posicionate en <To Do> luego Insert
Seleccionas el Archivo, Para este Caso será Factura2
Te aparece el cuadro Column
Seleccioná los campos a mostrar [ I ] por ultimo OK
Despues
Control Template (boton derecha arriba)
......Busca:
.....................BrowseUpdateButons (select)
Te insertará los botones de Insert, Change y Delete
Clic derecho sobre cualquiera de los tres
......Action
en Update Procedure pones el nombre de la ficha de factura2. Para esta caso será: Factura2:Ficha
Listo con esto podes agregar registros al detalle.
Lo recomendable es usar una Queue y cuando das aceptar actualizas por código el registro de Factura2
Fijate los ejemplos sobre Queues
Te paso algo
Para cargar una Queue podes hacerlo usando un indice I# o una clave
El nombre de la queue que uso es QResumen
I# += 1 ! Indice
QR:FecEmi = AC2:Fecemi
QR:FecVen = AC2:Fecven
QR:Letra = AC2:Letcom
QR:Puesto = AC2:Ptocom
QR:Numero = AC2:Nrocom
QR:Importe = AC2:Importe
ADD(QResumen,I#)
IF ERRORCODE() THEN STOP(ERROR()).
Si queres cargar por una clave podes formarla con uno o mas campos
ADD(QResumen,QR:Letra,QR:Letra,QR:Numero )
En este caso para poder leer por esta clave
GET(QResumen,QR:Letra,QR:Letra,QR:Numero )
IF ERRORCODE() THEN STOP(ERROR()).
....................
A una Queue la podes cargar, modificar, borrar, leer ordenar
Cargar:
ADD(QResumen,I#)
IF ERRORCODE() THEN STOP(ERROR()).
Leer
GET(QResumen,I#) ! desde el indice
IF ERRORCODE() THEN STOP(ERROR()).
GET(QResumen,QR:Letra,QR:Letra,QR:Numero ) ! desde una clave
IF ERRORCODE() THEN STOP(ERROR()).
Modificar
PUT(QResumen,I#)
IF ERRORCODE() THEN STOP(ERROR()).
si lees por una clave tenes que modificar por una clave
PUT(QResumen,QR:Letra,QR:Letra,QR:Numero ) ! desde una clave
IF ERRORCODE() THEN STOP(ERROR()).
Borrar
DEL(QResumen,I#)
IF ERRORCODE() THEN STOP(ERROR()).
Sort (QResumen,QR:Letra,QR:Letra,QR:Numero ) ! La ordenas
Si le agregas el signo menos (-) lo ordena descendente
Sort (QResumen,-QR:Letra,-QR:Letra,+QR:Numero ) ! podes convinar +y-
! Leer los registros de una Queue
Loop I#= 1 to Records(QResumen) ! recorre todos los registros
Get(QResumen,I#) ! Lees desde el indice I# (Secuencialmente segun Sort)
! aca haces las actualizaciones
.
.
.
! Para imprimir
Print(RPT:Detail1) ! Esta linea se puede usar con LINEPRINT
End
Free(Qresumen) ! La descargas