Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Tres Preguntas, Espero Alguien Me Pueda Ayudar (https://www.clubdelphi.com/foros/showthread.php?t=33407)

Ericklsca 05-07-2006 23:09:58

Tres Preguntas, Espero Alguien Me Pueda Ayudar
 
Bueno tengo tres preguntas y espero que alguien me pueda ayudar con alguna de ellas.

La primera preguntas es; yo tengo una aplicación con un modulo de ventas y quiero que al momento de que abra el modulo me genere automaticamente un numero seriado de numero de venta, es decir que al momento de abrir el modulo me de el numero siguiente de folio de venta en el edit que tengo predestinado para ese numero. Tengo una idea pero no he podido lograrlo ya que pienso que debe de hacerce un Query a la base de datos para que me diga cual es el ultimo registro de venta y que le sume uno mas pero no he podido.

La segunda pregunta que tengo es que yo quiero que al momento de poner el codigo del articulo al vender me despligue los datos en un DBGrid, ya puedo hacer que al momento de poner el codigo haga la busqueda en la base de datos y me los despliegue en unos edit pero quiero hacer que los despliegue en el DBGrid y ademas me permita agregar otro articulo a la misma venta, es decir que pueda meter varios articulos en un mismo folio de venta.

Y la ultima question es que como puedo hacer para sumar el campo importe del DBGrid de los articulos que tenga la venta y que me los sume y los despliegue el total a pagar en un Edit.

Bueno espero que alguien me pueda ayudar la verdad apenas estoy aprendiendo el lenguaje y se lo agradecere mucho.

nemesio 05-07-2006 23:41:51

Hola

Te responderé a lo siguiente:
1.-
Para llevar un correlativo de Número de facturas puedes tener una Tabla con un Campo "NUMFACT" en el cual vas a tener el último número de Factura. Cada vez que generes una nueva factura tomas el valor lo grabas en tu archivo de factura y luego incrementas "NUMFACT" para que tenga el valor de la próxima factura que vayas a realizar. Si el programa trabaja mobousuario no tendrás ningún problema. Si lo vas a trabajar en red, debes tener algunas consideraciones.

2.- Puedes hacer un formulario y colocar el DBgrid de que hablas con los registros de los productos. Coloca un Botón de ayuda en el Formulario de Facturación que llame a este formulario que tiene el Grid.

3.- Para obtener los totales puedes hacer un Query a la Tabla de Facturación utilizando la Función Sum. Lo asocias a un DataSource y luego a tu DBEdit. El Query lo puedes dejar en Active:=True o ejecutarlo cada vez que hagas un Post a la tabla de Facturación.

kuan-yiu 06-07-2006 09:40:41

Cita:

Empezado por Ericklsca
[...]
La primera preguntas es; yo tengo una aplicación con un modulo de ventas y quiero que al momento de que abra el modulo me genere automaticamente un numero seriado de numero de venta, es decir que al momento de abrir el modulo me de el numero siguiente de folio de venta en el edit que tengo predestinado para ese numero. Tengo una idea pero no he podido lograrlo ya que pienso que debe de hacerce un Query a la base de datos para que me diga cual es el ultimo registro de venta y que le sume uno mas pero no he podido.
[...]

Yo lo hago mediante procedimientos almacenado en la base de datos a los que llamo cuando necesito. Sino lo hago mediante una consulta a la tabla que contiene el dato.
Código SQL [-]
Select max(campo)+1 RESULT from tabla

Lepe 06-07-2006 13:33:57

2 - Lo que estas pidiendo es una relación Master-Detail, necesitarás 2 tablas, en una guardas el nº de la factura, los datos del cliente, etc. En la segunda tabla "LineasFact" es donde guardas los productos comprados y tambien guardas el nº de Factura para poder relacionarla con la otra Tabla. La interfaz ya te la han explicado.

3 -
Cita:

Empezado por nemesio
El Query lo puedes dejar en Active:=True o ejecutarlo cada vez que hagas un Post a la tabla de Facturación.

Tambien debes ejecutarlo en el AfterDelete y dependiendo de cómo esté hecho, puede que en el AfterCancel.

Si quieres información concreta, avisa de qué BBDD estas usando y componentes de acceso.

Saludos

santi33a 06-07-2006 14:13:55

Cita:

Empezado por nemesio
Hola

Te responderé a lo siguiente:
1.-
Para llevar un correlativo de Número de facturas puedes tener una Tabla con un Campo "NUMFACT" en el cual vas a tener el último número de Factura. Cada vez que generes una nueva factura tomas el valor lo grabas en tu archivo de factura y luego incrementas "NUMFACT" para que tenga el valor de la próxima factura que vayas a realizar. Si el programa trabaja mobousuario no tendrás ningún problema. Si lo vas a trabajar en red, debes tener algunas consideraciones.

En caso de multiusuario siempre he tenido una duda, despues de tener el numero de la factura y al intentar grabar me salta un error.
que pasa se me queda un hueco ?
En ese caso que me recomiendas

mariofur 06-07-2006 22:06:15

Respuestas
 
A la primera pregunta te diré como lo hago yo:

Como muy bien ha dicho alguien por ahí tienes que hacerlo en dos tablas, de manera que en una tienes los datos del cliente y en la otra tienes los datos de los articulos que entran dentro de esa venta, el número de factura debe existir en las dos tablas, de manera que en la tabla de articulos que metes en factura debes (debe ser la misma tabla para todos los articulos) introducir dicho número en cada línea que conforme la venta. Esto es porque después deberás hacer un filtrado por número de factura en la tabla de articulos de venta. "Filter, Filtered, etc..." en la ayuda de Delphi viene muy bien explicado. Esta es la manera que yo utilizo y con mucho éxito por cierto.

Nota: para introducir los datos de una tabla (Numero venta) a la tabla de articulos de la venta declaro variables tipo "Variant" y las inserto directamente con la función "FieldValues". (Realmente funciona).

Bueno, como aquí es muy largo de explicar si quieres me contactas y te mando el código fuente de mi programa y la explicación, puesto que será mejor que te lo aclare.

Saludos.

nemesio 07-07-2006 20:12:05

En caso de multiusuario, utiliza una excepcion si el nro está repetido y vuelve a incrementar el Id.


La franja horaria es GMT +2. Ahora son las 00:55:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi