¿Tablas temporales en Fox?

Hola que tal! Tengo la siguiente duda y no se como hacerlo...
La cosa es así, tengo una tabla que se llama "ordenes_emitidas".
Quiero crear un formulario donde haya una grilla POR (por así decirlo), en la que se pueda cargar los datos necesarios (código de articulo, detalle del articulo, cantidad) y luego, esos datos sean insertados en la tabla "ordenes_emitidas" (esta tabla tiene más campos, como fecha de envío, de recepción, estado, etc).
Yo pongo una grilla en el formulario y la asocio con la tabla "ordenes_emitidas", pero cuando ejecuto el form me trae los datos antes ingresados.
Por ende, lo que me gustaría saber como es que tendría que proceder con este asunto.
¿Debería crear una grilla temporal, que luego de grabar los datos necesarios se borre automáticamente?
¿Se entiende lo que se pretende hacer?
Desde ya, muchas gracias!

1 Respuesta

Respuesta
1
No me quedo claro algo. ¿Tu quieres que la grilla se muestre en blanco antes de ingresar los nuevos datos?. ¿Si es así que sentido tiene enlazarlo a la tabla?. Lo más que interpreto es que muestre la grilla en blanco con los campos correspondientes de la tabla y luego agregar los nuevos registros a la tabla. De ser así puedes hacerlo de diferentes formas y una de ellas es como tu dices crear una tabla temporal con la misma estrtuctura de ordenes_emitidas y luego de ingresar los datos en la grilla hacer un append from de la tabla temporal a ordenes_emitidas.
Primero que nada, gracias por responder tan rapido!
Segundo, si... es exactamente como vos lo interpretas, pasa que me mareo un poco para dar explicaciones.
Pero... ¿cómo se crea una grilla temporal?
Gracias nuevamente!
Disculpa por responderte recién hoy, no recibí el email de tu repregunta me parece. Bueno, una vez que hayas abierto la tabla ordenes_emitidas usas el comando COPY STRUCTURE TO C:\...\oetempo FIELDS campo1, campo2, ..., campo y esa tabla la enlazas a la grilla usando thisform. Grid1. recordsourcetype = 1
thisform. Grid1. recordsource = 'oetempo'
Ademas agrega el controlsource a cada columna de la grilla. Ejm. Thisform. Grid1. Column1. controlsource='oetempo. Codarticulo'
Para agregar los nuevos registros no te olvides hacer append from desde la nueva tabla hacia ordenes_emitidas y luego blanquear oetempo.
Las columnas del grid toman por defecto el nombre del campo de la tabla, pero si el nombre es muy largo toma determinado números de caracteres. Puedes cambiar por código después de hacer el enlace de la tabla a la grilla el nombre de las columnas de la siguiente forma:
thisform.grid.colum1.header.caption='nombrequedeseo'
EXCELENTE! Me dio resultado!
Ahora me surgió un problema,
Hice tal cual me indicaste; COPY STRUCTURE TO c:\proyectos\mca\temp.dbf FIELDS Fecha_rec,articulo,articulo_detalle,cantidad,observaciones.
El problema me surge en la tabla nueva, la columna "articulo_detalle" me aparece como "articulo_d" y no le puedo cambiar el nombre, intente con un MODIFY STRUCTURE pero no me deja escribir más que "articulo_d".
¿Tienes idea de que puede ser?
(Verifique la ortografía y todo, pero no se que más hacer!, sin esa columna funciona a la perfección tal como me dijiste)
Gracias nuevamente!
PD: Prometo no volver a molestarte después de esta!
Claro, eso fue lo primero que hice! Pero de esa forma estoy cambiando el caption de la columna, no el nombre del campo en la tabla!
Estoy enloquciendo con esto! Funciona de maravillas, salvo por ese campo!
¿Se puede cambiar por código el nombre del campo de la tabla?
Excelente es poco! Gracias por responder a todas mis inquietudes!
Ok, entiendo más o menos lo siguiente. Usas una base de datos. Una de las ventajas que te permite una base de datos es usar nombres largos en sus tablas. Sin embargo cuando creas una copia de una de sus tablas, por ser esta copia una tabla libre no te va a permitir el uso de nombres largos. Puedes adoptar dos caminos. Reducir en la tabla de la base de datos el nombre del campo o hacer que la tabla libre pertenezca también a la base de datos, de preferencia crea la copia en tiempo de diseño.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas