• Domingo 23 de Noviembre de 2014, 04:14

Autor Tema:  Datawindow  (Leído 3590 veces)

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Datawindow
« en: Lunes 8 de Marzo de 2010, 00:03 »
0

Publicidad 
que tal
soy nuevo por aqui
veran estoy realizando un sistema
tengo una tabla llamada productos otra factura_detalle
tengo tambien una datawindow dw_factura_detalle, bueno no se como hacer para que cuando se selecione un producto automaticamente aparezca el precio

agracedere su ayuda
saludos

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #1 en: Lunes 8 de Marzo de 2010, 01:22 »
0
Cuando haces una datawindow, por ejemplo dw_factura_detalle, no tienes porqué usar una sola tabla (factura_detalle) como parece que has hecho.

En la datawindow puedes incluir, todas las tablas que quieras, eso sí uniéndolas con un join porque si no tendrás un producto cartesiano. Es decir que si unes en la datawindow dw_factura_detalle la tabla factura_detalle y la tabla productos a través de algún nexo en común, podrás elegir cualquier campo de cualquier tabla y se mostrará en la datawindow sin problemas.

Ahora bien, si la tabla productos vas a mantener el precio último y ese mismo precio es el que vas a reflejar en la factura, no es correcto lo que estás haciendo porque una factura no se puede modificar desde el momento en que se emite.

te recomiendo que en la tabla factura detalle, también copies (dupliques) los datos de la línea de esa factura, fecha, descripción del pedido, precio, iva, etc... de esa forma la factura permanecerá invariable  hagas lo que hagas con los datos que usaste para crearla.


espero haberte ayudado.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #2 en: Lunes 8 de Marzo de 2010, 17:12 »
0
que tal
bueno ya antes probe agregando dos tablas en una datawindow (use Grid), pero los resultados no fueron los mejores ya que solo me muestra los datos almacenados
es decir no puedo variar ningun campo

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #3 en: Lunes 8 de Marzo de 2010, 17:36 »
0
Efectivamente.

Cuando unas una datawindow con dos o más tablas, solo se puede grabar los datos de una de ellas.

En tu caso solo podrías grabar los detalles de la factura. Con eso debería ser suficiente.

Es decir, primero obtienes el ID de la cabecera y luego le pones ese ID de la cabecera a las líneas de detalle de la factura y listo.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #4 en: Lunes 8 de Marzo de 2010, 17:40 »
0
como puedo hacer por lo menos eso
porque no puedo agragar datos en la tabla factura_detalle, los datos se muestran como un reporte

como haria en ese caso para que por lo menos los campos de la tabla detalle esten abilitados para agregar datos

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #5 en: Lunes 8 de Marzo de 2010, 18:05 »
0
primero necesitas una datawindow que va a tener un solo registro. será la cabecera de la factura los datos más usuales que se muestran son: Fecha, cliente, número de factura, serie, total de la factura,  el id de la cabecera,  etc...

debajo se pone una datawindow tipo grid con los detalles de la factura cantidad, código de artículo, descripción, precio unitario.

La primera datawindow ataca a la tabla cabecera_factura y la segunda a detalle_factura.

Las dos tablas deben tener el updateproperties activado para todos los campos.

PARA CREAR FACTURAS.
Para grabar una factura solo tienes que insertar un registro en la cabecera, registrar los datos que consideres necesario y grabar. Cuando tengas el id de la cabecera, puedes insertar registros en los detalles de la factura y lo primero que debes hacer es escribir el id que te ha dado la cabecera en cada línea de detalle, y por supuesto rellenar el resto de datos.

PARA VISUALLIZAR FACTURAS:
Tienes que localizar la factura a través de su ID  y hacer un retrieve (id_cabecera) en la cabecera y después un retrive (id_cabecera) en la datawindow con los detalles.

PARA MODIFICAR.
Es igual que para editar, basta con tener los campos editables.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #6 en: Martes 9 de Marzo de 2010, 17:28 »
0
ahun nada
sigo con el mismo problema
los campos del data window factura_detalle estan desabilitados para agregar datos
solo aparece como reporte

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #7 en: Martes 9 de Marzo de 2010, 19:50 »
0
Prueba lo siguiente:

Si consigues hacer una inserción y los campos no son editables puede ser por alguno de estos motivos.
1.- Que los campos de la tabla detalle_factura no tengan el taborder a 0
2.- Que no tengan nada en la propiedad Protect

Si ni siquiera consigas insertar un registro puede ser porque no hayas creado un campo en la tabla como primary key.

Espero haberte ayudado porque se me han acabado las ideas.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #8 en: Miércoles 10 de Marzo de 2010, 00:12 »
0
gracias por la yuda problema solucionado

y por ultimo como puedo imprimir las dos datawindow si9n usar el objeto composite, ya lo eh probabo y es muy problematico

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #9 en: Miércoles 10 de Marzo de 2010, 05:43 »
0
Pero no nos dejes así, ¿Qué le pasaba?.  :D , que si no no aprendemos de tus errores.

Bueno, te contesto a lo de la impresión.

Para imprimir la factura puedes hacerlo de varias formas.

Si no es muy complejo el formato, puedes hacer una datawindow en la que vas añadiendo las tablas que necesites: cabecera de factura, detalle de factura, cliente, etc... y seleccionas las campos que desees mostrar.

Si la cosa se complica, por ejemplo, imagínate que tienes que sacar información que las formas de pago que permite el proveedor y tienes que desglosar los impuestos por tipos. En estos casos la información que no esté accesible de una forma rápida se puede calcular mediante datastores y luego insertarla en la factura usando campos computados de la select de la datawindow o simplemente static text.

Si la cosa se complica aún más, por ejemplo te piden que las líneas de detalle de la factura no deben ir ordenadas por fecha  (que sería lo normal) sino que hay que agruparlas por familia, subfamilia, grupo y fecha y además de todos esto configurable según el proveedor. Aquí la cosa se te puede complicar. En estos casos lo mejor es crearte una datawindow external con los campos que necesites y alimentarla con los datos que vayas procesando de una datastore. Aunque también puedes tener un formato de impresión para cada caso pero eso puede ser poco mantenible.

Un saludo.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #10 en: Miércoles 10 de Marzo de 2010, 16:50 »
0
en realidad es problema fuen  en la base de datos (estaba desabilitada la opcion para actualizar datos)
con respecto a la impresion pues probe uniendolos con composite pero el problema es que ya no me deja modificar datos, es mas cuando corre el sistema y hago clik en la datawindow se cierra el programa

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #11 en: Miércoles 10 de Marzo de 2010, 19:14 »
0
Yo probaría ha hacer una factura con una datawindow normal o con una extenal. Lo de las composite las suelo usar para sacar en un solo informe datos muy dispares, es decir, cuando se quiere extraer en un solo informe datos de dos o más listados que no tienen nada que ver entre sí, o que son díficil de encajar en uno solo.

También son muy útiles (las composite) para poner una cabecera generica en la que salga el membrete de la empres, fecha y hora de la impresión ,etc y después la información.

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #12 en: Jueves 11 de Marzo de 2010, 00:57 »
0
podrias ser mas especifico

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #13 en: Jueves 11 de Marzo de 2010, 18:14 »
0
Me refiero a que si usando composites no te ha funcionado, puedes usar una datawindow grid para visualizar la factura e imprimirla.

La select sería algo así:


 SELECT cabecera_factura.id,  
         cabecera_factura.fecha_factura,
        cabecera_factura.importe,
        cabecera_factura.nro_factura
        cabecera_factura. ....
        detalle_factura.id,
        detalle_factura.codigo,
        detalle_factura.descripción,
        detalle_factura.precio,
        detalle_factura.cantidad,
        detalle_factura. ....
    FROM detalle_factura, detalle_factura
   WHERE (cabecera_factura.fecha_factura,id =        detalle_factura.id )    AND
        cabecera_factura.nro_factura = :arg_num

sayri

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Datawindow
« Respuesta #14 en: Jueves 11 de Marzo de 2010, 20:47 »
0
gracias
problema ahora so solucionado
y pensar que la solucion era sencilla

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Datawindow
« Respuesta #15 en: Jueves 11 de Marzo de 2010, 20:58 »
0
De nada.
Para eso estamos.