Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Smile Guardar registros de facturacion en base de datos access

Saludos amigos,

Tenia una incógnita, cuando hacemos un programa que tiene un modulo de facturación, y esos registros de facturas quieren guardarlos luego, como le hacen para que el campo que dice descripción, cantidad y precio unitario, sean independientes y se pueda guardar en un registro de la base de datos, porque ya saben que a veces se pueden facturar hasta tres cosas, cual seria la mejor forma de hacerlo?

Saludos, Gracias.
Responder Con Cita
  #2  
Antiguo 20-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Hay muchas formas de hacerlo.
Te aconsejo que veas ESTE tutorial de facturación que hice para novatos y cualquier duda la puedes comentar aqui.
Saludos
Nota: con vuestro permiso.
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Exclamation Caral

Cita:
Empezado por Caral Ver Mensaje
Hola
Hay muchas formas de hacerlo.
Te aconsejo que veas ESTE tutorial de facturación que hice para novatos y cualquier duda la puedes comentar aqui.
Saludos
Nota: con vuestro permiso.
Vi el Tutorial, pero hay muchas cosas que no puedo hacerlas igual, porque hay muchas cosas que en este programa no iran, como el impuesto, itebis, sub-total, etc.

Me gustaria ir paso a paso contigo adaptandolo al mio, crees que me puedas ayudar?, ya lo iba intentando pero no tengo un basto conocimiento de delphi y por lo tanto no pude, crees que sea posible que me ayudes?

Es sos, tengo que hacerlo antes del jueves
Responder Con Cita
  #4  
Antiguo 22-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Imagina que estudias medicina y vienes preguntando: "¿cómo se hace una operación de corazón y de cerebro?", por favor, ayúdenme rápido, que el jueves tengo que operar a un paciente.

Que nadie caiga en tus manos
Responder Con Cita
  #5  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Gracias

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Imagina que estudias medicina y vienes preguntando: "¿cómo se hace una operación de corazón y de cerebro?", por favor, ayúdenme rápido, que el jueves tengo que operar a un paciente.

Que nadie caiga en tus manos

Gracias, tu sarcasmo es muy Motivador
Responder Con Cita
  #6  
Antiguo 22-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que tu pregunta es muy ambigua y tiene una contestación muy amplia que depende de infinidad de factores. Deberías de "acotar" exactamente lo que necesitas, porque un módulo de facturación puede ser algo tan básico como una simple tabla o una gestión completa. De lo primero a lo segundo hay una diferencia enorme.
Básicamente lo que tú quieres son 2 tablas, una de cabeceras (resúmenes, maestro, o como quieras llamarla) y la otra de líneas de facturas (detalles, cliente, o como quieras llamarla)

Tabla cabecera, con los campos: id, numero, fecha, cliente, ...
Tabla lineas, con los campos: id, id_cabecera, articulo, cantidad, precio, ...

Así cada cabecera tiene un id único, y las líneas enlazan con su cabecera mediante el campo id_cabecera.

Eso es lo más básico. A partir de ahí, todo lo que quieras.
Responder Con Cita
  #7  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Error en Codigo SQL en consulta a base de datos Access

lo he intentado adaptar a mi programa y asi es mas o menos como me quedo, pero me da un error: Error de Sintaxis en la instrucción INSERT INTO

la tabla de datos esta en access y tiene los siguientes campos:
CodFactura
fecha
CodCliente
CodArticulo
Descripción
Cantidad
MontoTotal

el código es el siguiente:

Código Delphi [-]
Var
  a,b,c : real;
begin
 a:= StrTofloat(cantidad.Text);
 b:= StrTofloat(preciounitario.Text);
 c:= a * b;
 total.Text:= floatToStr(c);
 qry1.SQL.Text := 'Insert into Factura values ('+QuotedStr(CodFactura.Text)+', :fecha, '+QuotedStr(CodCliente.Text)+ ', '+QuotedStr(CodArticulo.Text)+ ', '+Descripcion.Caption+ ', '+
             QuotedStr(Cantidad.Text)+ ', '+QuotedStr(Total.Text);
 qry1.Parameters.ParamByName('fecha').Value:= DateToStr(Dtp1.Date);
 qry1.ExecSQL;

end;

Última edición por Casimiro Notevi fecha: 22-07-2013 a las 23:26:38.
Responder Con Cita
  #8  
Antiguo 22-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, no abras otro hilo para seguir con el mismo tema, gracias.
Responder Con Cita
  #9  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Por favor, no abras otro hilo para seguir con el mismo tema, gracias.
Es diferente, pero ok Carimiro, Por lo menos responde si puedes.
Responder Con Cita
  #10  
Antiguo 22-07-2013
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cambía el código:

Código Delphi [-]
qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
  'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, escripcion, :Cantidad, :MontoTotal)';
qry1.ParamByName('CodFactura').AsString := CodFactura.Text;
qry1.ParamByName('Fecha').AsDate := Dtp1.Date;
qry1.ParamByName('CodClient').AsString := CodClient.Text;
qry1.ParamByName('CodArticulo').AsString := CodArticulo.Text;
qry1.ParamByName('Descripcion').AsString := Cantidad.Text;
qry1.ParamByName('MontoTotal').AsString := Total.Text;
qry1.ExecSQL;

Así indicas exactamente cuales campos quieres insertar (los nombres entre paréntesis antes del VALUES) e insertas los valores usando parámetros (los nombres de campo con el ":" delante).

Por otra parte, si lo que quieres es guardar una factura, vas por el mal camino. Tal cómo te ha dicho Casimiro, debes usar dos tablas distintas:
- Factura, con los valores CodFactura, Fecha y CodCliente
- LíneaFactura, con los valores CodFactura (para enlazar con la tabla Factura), CodArtículo, Cantidad y Total.

De esta forma, una factura puede tener muchos productos, y tal cómo lo has hecho tu, cada factura sólo puede tener un producto de venta. Por otra parte, creo que deberías guardar en la línea de la factura el precio del producto, pero esto es lo de menos.
Responder Con Cita
  #11  
Antiguo 22-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hombre, si estás hablando del tutorial de Caral y haces una pregunta sobre el código del tutorial de Caral, entonces es el mismo tema
Por cierto, no es código SQL, es Delphi

Para poder ayudarte con el error, tendría que saber exactamente el contenido de esas variables y componentes, porque seguramente ahí está el error, por ejemplo (por intentar adivinar algo), que un valor numérico lleva la coma decimal, eso variará la sentencia.

Cuando tengas que pasar valores a una sentencia sql desde delphi, lo ideal es hacerlo con parámetros, en lugar de componer toda la sentencia, te ahorrarás errores y dolores de cabeza.

EDITO: tal y como ha explicado mcs
Responder Con Cita
  #12  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por mcs Ver Mensaje
Cambía el código:

Código Delphi [-]
qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
  'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, escripcion, :Cantidad, :MontoTotal)';
qry1.ParamByName('CodFactura').AsString := CodFactura.Text;
qry1.ParamByName('Fecha').AsDate := Dtp1.Date;
qry1.ParamByName('CodClient').AsString := CodClient.Text;
qry1.ParamByName('CodArticulo').AsString := CodArticulo.Text;
qry1.ParamByName('Descripcion').AsString := Cantidad.Text;
qry1.ParamByName('MontoTotal').AsString := Total.Text;
qry1.ExecSQL;

Así indicas exactamente cuales campos quieres insertar (los nombres entre paréntesis antes del VALUES) e insertas los valores usando parámetros (los nombres de campo con el ":" delante).

Por otra parte, si lo que quieres es guardar una factura, vas por el mal camino. Tal cómo te ha dicho Casimiro, debes usar dos tablas distintas:
- Factura, con los valores CodFactura, Fecha y CodCliente
- LíneaFactura, con los valores CodFactura (para enlazar con la tabla Factura), CodArtículo, Cantidad y Total.

De esta forma, una factura puede tener muchos productos, y tal cómo lo has hecho tu, cada factura sólo puede tener un producto de venta. Por otra parte, creo que deberías guardar en la línea de la factura el precio del producto, pero esto es lo de menos.
tengo 3 tablas, la del cliente, la del articulo y la de factura, entones cual seria la forma correcta de hacerlo?

Observa
Cliente
CodCliente
Nombre
Telefono
Celular
Direccion
E-mail

Articulo
CodArticulo
Fecha
Descripcion
Cantidad
Precio de Venta

Factura
CodFactura
Fecha
CodCliente
CodArticulo
descripcion
Cantidad
total

Como lo haria?
Responder Con Cita
  #13  
Antiguo 22-07-2013
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por feliz-58 Ver Mensaje
tengo 3 tablas, la del cliente, la del articulo y la de factura, entones cual seria la forma correcta de hacerlo?

Observa
Cliente
CodCliente
Nombre
Telefono
Celular
Direccion
E-mail

Articulo
CodArticulo
Fecha
Descripcion
Cantidad
Precio de Venta

Factura
CodFactura
Fecha
CodCliente
CodArticulo
descripcion
Cantidad
total

Como lo haria?
Cliente y Artículo es correcto. Lo que tienes que separar es factura y línea factura, tal cómo te he dicho antes:

- Factura, con los valores CodFactura, Fecha y CodCliente
- LíneaFactura, con los valores CodFactura (para enlazar con la tabla Factura), CodArtículo, Cantidad y Total.
Responder Con Cita
  #14  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por mcs Ver Mensaje
Cambía el código:

Código Delphi [-]
qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
  'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, escripcion, :Cantidad, :MontoTotal)';
qry1.ParamByName('CodFactura').AsString := CodFactura.Text;
qry1.ParamByName('Fecha').AsDate := Dtp1.Date;
qry1.ParamByName('CodClient').AsString := CodClient.Text;
qry1.ParamByName('CodArticulo').AsString := CodArticulo.Text;
qry1.ParamByName('Descripcion').AsString := Cantidad.Text;
qry1.ParamByName('MontoTotal').AsString := Total.Text;
qry1.ExecSQL;

Así indicas exactamente cuales campos quieres insertar (los nombres entre paréntesis antes del VALUES) e insertas los valores usando parámetros (los nombres de campo con el ":" delante).

Por otra parte, si lo que quieres es guardar una factura, vas por el mal camino. Tal cómo te ha dicho Casimiro, debes usar dos tablas distintas:
- Factura, con los valores CodFactura, Fecha y CodCliente
- LíneaFactura, con los valores CodFactura (para enlazar con la tabla Factura), CodArtículo, Cantidad y Total.

De esta forma, una factura puede tener muchos productos, y tal cómo lo has hecho tu, cada factura sólo puede tener un producto de venta. Por otra parte, creo que deberías guardar en la línea de la factura el precio del producto, pero esto es lo de menos.
Me da este error:
[Error] Unit7.pas(133): Undeclared identifier: 'ParamByName'
[Error] Unit7.pas(133): Missing operator or semicolon
Responder Con Cita
  #15  
Antiguo 22-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por mcs Ver Mensaje
Cliente y Artículo es correcto. Lo que tienes que separar es factura y línea factura, tal cómo te he dicho antes:

- Factura, con los valores CodFactura, Fecha y CodCliente
- LíneaFactura, con los valores CodFactura (para enlazar con la tabla Factura), CodArtículo, Cantidad y Total.
y Luego? soy novato:

entonces serian 4 tablas?
Responder Con Cita
  #16  
Antiguo 23-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
no llevo el siguimiento de lo que estas o quieres hacer.
lo mejor es poner en un zip el programa como lo tienes con la bd incluida y dar una explicacion detallada de lo que necesitas.
saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 23-07-2013
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por feliz-58 Ver Mensaje
Me da este error:
[Error] Unit7.pas(133): Undeclared identifier: 'ParamByName'
[Error] Unit7.pas(133): Missing operator or semicolon
No sé qué componentes usas. Podría ser que entre el qry1 y el ParamByName debas incluir "Parameters". O sea:

Código Delphi [-]
qry1.Parameters.ParamByName("variable").AsString := valor;

Y respecto a lo de "y después", pues no sé... Creo que estás empezando la casa por el tejado. Si quieres aprender bién, descargate "La Cara Oculta de Delphi 6" (http://commanet.blogspot.com.es/2010...-delphi-6.html) y estudíatelo a fondo. Así aprenderás cómo funciona Delphi, el acceso a datos y las bases de datos.
Responder Con Cita
  #18  
Antiguo 23-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por feliz-58 Ver Mensaje
y Luego? soy novato:
entonces serian 4 tablas?
feliz-58, lo de "soy novato" es la excusa típica. Así no se aprende, porque se supone que quieres aprender, tienes que mirar código, leer, escribir, probar, dedicar una cantidad casi infinita de tiempo. Ya digo, suponiendo que quieras aprender porque vayas a dedicarte a estas cosas.

Lo que pretendes es como querer aprender a nadar sin tirarte al agua, es imposible. O aprender a montar en bicicleta sin montar en bicicleta. No se puede.
Responder Con Cita
  #19  
Antiguo 23-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
feliz-58, lo de "soy novato" es la excusa típica. Así no se aprende, porque se supone que quieres aprender, tienes que mirar código, leer, escribir, probar, dedicar una cantidad casi infinita de tiempo. Ya digo, suponiendo que quieras aprender porque vayas a dedicarte a estas cosas.

Lo que pretendes es como querer aprender a nadar sin tirarte al agua, es imposible. O aprender a montar en bicicleta sin montar en bicicleta. No se puede.
cuando yo lo publico es que estoy arto de probar y probar y no llego a la solución, no me rindo tan fácil pero cuando pongo algo que no entiendo es porque he buscado y no encuentro!

puse lo de novato porque cuando te explican la solucion no son tan explicitos con los terminos, y por lo tanto tengo que a la solucion buscarle las mil y una formas para usarla!

Gracias!
Responder Con Cita
  #20  
Antiguo 23-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
no llevo el siguimiento de lo que estas o quieres hacer.
lo mejor es poner en un zip el programa como lo tienes con la bd incluida y dar una explicacion detallada de lo que necesitas.
saludos
aqui esta el proyecto, es en el form de facturacion.

Mi proyecto

este codigo en el boton de guardar

Código Delphi [-]
Var
  a,b,c : real;
begin
 a:= StrTofloat(cantidad.Text);
 b:= StrTofloat(precio.Text);
 c:= a * b;
 total.Text:= floatToStr(c);
 qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodCliente, CodArticulo, Descripcion, Cantidad, Total) '+
  'VALUES (:CodFactura, :Fecha, :CodCliente, :CodArticulo, descripcion, :Cantidad, :Total)';
qry1.Parameters.ParamByName('CodFactura').AsString := CodFactura.Text;
qry1.Parameters.ParamByName('Fecha').AsDate := Dtp1.Date;
qry1.Parameters.ParamByName('CodClient').AsString := CodClient.Text;
qry1.Parameters.ParamByName('CodArticulo').AsString := CodArticulo.Text;
qry1.Parameters.ParamByName('Descripcion').AsString := lbl9.Text;
qry1.Parameters.ParamByName('Cantidad').AsString := Cantidad.Text;
qry1.Parameters.ParamByName('Total').AsString := Total.Text;
qry1.ExecSQL;
end;
gracias

Última edición por feliz-58 fecha: 23-07-2013 a las 01:10:18.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ver Los Datos De Diferentes Tablas en una base De datos en access, Desde un DBGrid. feliz-58 Tablas planas 2 24-01-2013 19:16:14
Error en consulta a la base datos en php dark_monk9 PHP 1 11-02-2008 13:22:35
Problemas con smarty al tratar consulta de base de datos access Chompiras PHP 3 20-01-2008 20:00:57
Crear base de datos de access por codigo principiante22 Conexión con bases de datos 4 29-06-2007 16:50:46
Error conectando una base de datos Access hunabku Conexión con bases de datos 0 23-05-2005 16:05:08


La franja horaria es GMT +2. Ahora son las 01:05:53.


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
Copyright 1996-2007 Club Delphi