Campo código en Tabla de Movimientos

Quisiera saber si en una tabla de movimientos, donde recepciona unos 6 campos de código de otras seis tablas, al momento de querer realizar una búsqueda para modificar un movimiento, en esta tabla de movimientos debo crear también un campo de código para poder ubicar el registro a modificar o debo usar una llave compuesta por estos 6 campos de códigos más un campo fecha que ubica día del movimiento y un campo numero para el numero de documento.

1 respuesta

Respuesta
1
La verdad no te entendí, haber aclara estos puntos, ¿tienes 6 tablas y una adicional donde relacionas las 6 tablas?
Es decir tienes 6 tablas maestras y 1 tabla relacional, cual de ellas quieres modificar y actualizar.
Si mira, tengo 6 tablas maestras y lo que quiero es ubicar un registro en la Tabla movimientos para poder modificarlo, debo crearle necesariamente un Campo o columna CÓDIGO para poder ubicar este movimiento.
Un ejemplo, se ingreso mal un movimiento de la Librería POR y quiero modificar la Compra Nro. 2150 del día 25/05/2009 de una Docena de Plumones colores fosforecentes Marca faber castell, ahora las tablas son: Tabla Librerías en este caso POR, Tabla Operación en este caso Compras, Tabla Lineas en este caso Plumones, Table Marcas en este caso Faber Castell, Tabla Productos en este caso Plumones colores Fosforecentes, Tabla Medidas en este caso Docena, todo esto se almacena en la tabla movimientos, ahora para llamar y ubicar este movimiento tengo que crear una llave compuesta llamando al código de las tablas librería, operación, lineas, marcas, productos y medidas más el campo de fecha y campo numero, o crearle un campo de columna Código a la tabla de movimientos. Ojo que las tablas Lineas, Marcas y Productos tiene relación entre si.
Me dejo entender, quiero que me recomiendes como buscar este movimiento si es creando esa llave compuesta o le adiciono una Columna CÓDIGO a la tabla Movimientos para ubicarla más rapido.
Te agradecería tu opinión.
Ahora si ya te entendí, claro las tablas maestras no debes tocarla para nada, pero la tabla movimientos si, te recomiendo que crees un tabla código el cual sea tu primary keyb, para que puedas realizar tu búsqueda más rapido ahora si, por más que tu tabla movimiento tenga relación con las otras tablas esos campos son foreing key pero siempre una tabla debe tener su propio primary para realizar una determinada búsqueda y lógicamente poder hacer algún cambio.
Cualquier duda solo pregunta.
Bien, ¿me recomiendas crear una tabla código? ¿O crear adinionando un campo código en la tabla movimientos? ¿Y necesariamente tiene que ir en la primera columna el Código?
Acláramelo por favor.
Otra consulta quisiera asistencia en código, mira en mi DW freeform tengo 3 DDDW al momento de ingresar datos todo ok... pero al querer recuperar un registro, en el primer DDDW recupera bien la descripción pero en los otros 2 DDDW me sale el código más no la descripción, salto de campo con TAB y se cambia apareciendo la descripción, a que se debe esto o creo que he programado mal los eventos del DW.
Esperando tu pronta respuesta. Te agradeceré.
Debes adicionar un campo código a tu tabla y no es necesario que este en la primera columna.
Ahora para recuperar los datos de tus dddw te recomiendo que lo hagas en el evento constructor del dw principal.
Ok.
Cree la columna código en la tabla movimientos, recupero todo en el dw, ahora mira sucede que mi Cliente dice que para encontrar un movimiento a modificar NO QUIERE seleccionar varias veces la primera letra de un producto y luego dar varios Clicks a la barra de desplazamiento lateral hasta ubicar el movimiento, entonces he tenido que crear una nueva ventana de búsqueda de movimiento, con 6 ddlb para llamar a las 6 tablas, un DatePicker para la fecha y un EditMask para el numero de documento, en este caso quisiera revises mi Script, para lo cual te indico mi código para encontrar el movimiento
/* Estas son mis variables string de las seis tablas que las he revisado comparando los códigos que jala con los códigos de cada tabla están jalando ok., lcodtie, lcodope, lcodlin, lcodmar, lcodpro, lcodmed luego Cree un evento de usuario para la tecla enter del campo documento em_docum es aquí donde va a llamar al DW con los datos del movimiento a ubicar */ if keydown(keyenter!) then
 Long ll_fila, ll_docum
 String  allcampos, ll_llave
 ll_docum = long(em_docum.text)
 Select '*'
 into :allcampos
 from Movimiento
 where  movimiento.tienda = :lcodtie and movimiento.operacion = :lcodope and &
    movimiento.linea = :lcodlin and movimiento.marca = :lcodmar and &
    movimiento.producto = :lcodpro and movimiento.unidad = :lcodmed and &
   movimiento.fec_ingreso = :ll_fecha and movimiento.num_documento = :ll_docum;
 ll_llave = lcodtie+lcodope+lcodlin+lcodmar+lcodpro+lcodmed+string(ll_fecha)+string(ll_docum)
 ll_fila = dw_1.Find(ll_llave, 1, dw_1.RowCount())                                                              IF ll_fila>0 then
  dw_1.Retrieve (ll_llave)
 else
  MessageBox ("¡Movimiento no encontrado", sqlca.sqlerrtext, exclamation!)
  return
 end if
End if
Ahora me sale el error de datawindows 'Expecting Number Expression' esperando numero de expresión, pero antes me salia todos los movimientos más no el indicado. Quisiera lo revisaras tal vez esta mal mi llave o los campos fecha o documento, considerando que en la estructura de campos de la tabla movimientos las 6 tablas están con tipo intiger y con llaves foráneas para cada una, la fecha date y documento numérico.
También si tuvieras otra forma de script recomendada te agradecería bastante.
Espero tu pronta respuesta.
El problema esta en tu select específicamente en el *, ya que el arterisco muestra todos los campos que tenga tu tabla en este caso tu tabla movimientos, y sin embargo tu solo capturas uno de los campos (into :allcampos), lo que debes hacer es especificar cada uno de los campos por ejm:
select campo1,campo2,campo3
into :ls_campo1,:ls_campo2,:ls_campo3
From ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas