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 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
  #2  
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
  #3  
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
  #4  
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
  #5  
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.046
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
  #6  
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
  #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
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
  #8  
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
  #9  
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
  #10  
Antiguo 23-07-2013
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
He descargado tu proyecto, lo he mirado todo y te digo lo mismo que te ha dicho Casimiro: no puedes hacerlo.

Tu nivel de programación es nulo. Tu nivel de conocimientos de bases de datos es nulo.

Hazte un favor y leete La Cara Oculta de Delphi, ya sea el 4 o el 6. Son gratuitos, y aprenderás un montón.

Porqué la verdad, tirando componentes a un formulario y copiado código no vas a aprender nada. Yo (y gran parte de la gente que está por aquí) te podemos decir todas las tablas, procedures, clases, funciones y demás que necesita un programa de facturación, pero no te servirá de nada.

Ah, en el proyecto que has subido al SkyDrive no hay la query de inserción de facturas.

Y una primera lección, y MUY importante: pon nombres claros a TODO lo que uses: units, clases, dbedits, botones, etc! Sinó, dentro de cuatro días no sabrás que era el dbedit1, el label5 o que hay en unit7.pas.

Saludos, y buenas noches.
Responder Con Cita
  #11  
Antiguo 23-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Caral

Caral, aqui esta la BD de usuarios. Espero tu respuesta. Gracias
Archivos Adjuntos
Tipo de Archivo: zip Usuarios.zip (12,2 KB, 2 visitas)
Responder Con Cita
  #12  
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
Ya lo puedo ver, que quieres hacer ?
Saludos
Nota: Con precisión.
__________________
Siempre Novato
Responder Con Cita
  #13  
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 mcs Ver Mensaje
He descargado tu proyecto, lo he mirado todo y te digo lo mismo que te ha dicho Casimiro: no puedes hacerlo.

Tu nivel de programación es nulo. Tu nivel de conocimientos de bases de datos es nulo.

Hazte un favor y leete La Cara Oculta de Delphi, ya sea el 4 o el 6. Son gratuitos, y aprenderás un montón.

Porqué la verdad, tirando componentes a un formulario y copiado código no vas a aprender nada. Yo (y gran parte de la gente que está por aquí) te podemos decir todas las tablas, procedures, clases, funciones y demás que necesita un programa de facturación, pero no te servirá de nada.

Ah, en el proyecto que has subido al SkyDrive no hay la query de inserción de facturas.

Y una primera lección, y MUY importante: pon nombres claros a TODO lo que uses: units, clases, dbedits, botones, etc! Sinó, dentro de cuatro días no sabrás que era el dbedit1, el label5 o que hay en unit7.pas.

Saludos, y buenas noches.
Excelente comentario, no se nada, nunca dije que supiera, no es mi intención hacer saber que se, me imagino que debes ser un genio, y me alegra, porque si no hubieran personas como tu, las personas como yo no sabríamos hacer nada gracias!


Suerte amigo!
Responder Con Cita
  #14  
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 se si baje el correcto o no el asunto es que me indica que la BD Usuarios no esta.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 23-07-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Así a la rapida, detecto un error en la sentencia...

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;

Estas asignando un valor al parametro "Descripcion", el cual no existe ya que en el sql no esta precedido de los ":"...

Deberia ser:
Código Delphi [-]
 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;

Saludos cordiales
Responder Con Cita
  #16  
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
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 15:27:43.


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