PDA

Ver la Versión Completa : Error en Codigo SQL en consulta a base de datos Access


feliz-58
19-07-2013, 23:05:51
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. :confused: :) :)

Caral
20-07-2013, 00:15:02
Hola
Hay muchas formas de hacerlo.
Te aconsejo que veas ESTE (http://www.delphiaccess.com/forum/tutoriales/tutorial-(como-hacer-un-programa-de-facturacion)/) tutorial de facturación que hice para novatos y cualquier duda la puedes comentar aqui.
Saludos
Nota: con vuestro permiso.

feliz-58
22-07-2013, 20:57:56
Hola
Hay muchas formas de hacerlo.
Te aconsejo que veas ESTE (http://www.delphiaccess.com/forum/tutoriales/tutorial-(como-hacer-un-programa-de-facturacion)/) 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 :( :confused:

Casimiro Notevi
22-07-2013, 21:23:48
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. :eek:

Que nadie caiga en tus manos ;)

feliz-58
22-07-2013, 21:58:39
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. :eek:

Que nadie caiga en tus manos ;)


Gracias, tu sarcasmo es muy Motivador :) :D

Casimiro Notevi
22-07-2013, 22:45:35
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.

feliz-58
22-07-2013, 23:03:58
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:


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;

Casimiro Notevi
22-07-2013, 23:09:20
Por favor, no abras otro hilo para seguir con el mismo tema, gracias.

feliz-58
22-07-2013, 23:15:25
Por favor, no abras otro hilo para seguir con el mismo tema, gracias.

Es diferente, pero ok Carimiro, Por lo menos responde si puedes.

mcs
22-07-2013, 23:21:11
Cambía el código:

qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, :Descripcion, :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.

Casimiro Notevi
22-07-2013, 23:25:38
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

feliz-58
22-07-2013, 23:31:02
Cambía el código:

qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, :Descripcion, :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?

mcs
22-07-2013, 23:43:10
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.

feliz-58
22-07-2013, 23:45:28
Cambía el código:

qry1.SQL.Text := 'Insert into Factura (CodFactura, Fecha, CodClient, CodArticulo, Descripcion, Cantidad, MontoTotal) '+
'VALUES (:CodFactura, :Fecha, :CodClient, :CodArticulo, :Descripcion, :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

feliz-58
22-07-2013, 23:47:03
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?

Caral
23-07-2013, 00:00:46
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

mcs
23-07-2013, 00:01:24
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:

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/10/la-cara-oculta-de-delphi-6.html) y estudíatelo a fondo. Así aprenderás cómo funciona Delphi, el acceso a datos y las bases de datos.

Casimiro Notevi
23-07-2013, 00:03:01
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.

feliz-58
23-07-2013, 00:05:36
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!

feliz-58
23-07-2013, 01:05:01
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 (http://sdrv.ms/18w0H7H)

este codigo en el boton de guardar


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

mcs
23-07-2013, 02:06:17
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.

Caral
23-07-2013, 02:32:55
Hola
No se si baje el correcto o no el asunto es que me indica que la BD Usuarios no esta.
Saludos

cloayza
23-07-2013, 03:38:33
Así a la rapida, detecto un error en la sentencia...


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:

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

feliz-58
23-07-2013, 03:59:45
Caral, aqui esta la BD de usuarios. Espero tu respuesta. Gracias

feliz-58
23-07-2013, 04:01:35
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! :D

Caral
23-07-2013, 04:10:36
Hola
Ya lo puedo ver, que quieres hacer ?
Saludos
Nota: Con precisión.

feliz-58
23-07-2013, 04:17:31
Hola
Ya lo puedo ver, que quieres hacer ?
Saludos
Nota: Con precisión.

Simplemente, en el form de facturacion, quiero hacer las facturas de los diferentes articulos y de los diferentes clientes que pueda tener "lo común" el asunto es que hay muchas cosas que no tendré que usar, como Sub total, impuestos, descuentos,etc. solo lo que tengo en las bases de datos y algo esencial que tu creas que falte.

ese es el asunto. intente seguir tu tutorial pero como esas cosas no van se me complico un poco.


Saludos :)

Caral
23-07-2013, 04:22:46
Hola
Primero sácame de una duda
para que dos bases de datos ?
saludos

feliz-58
23-07-2013, 04:35:36
Hola
Primero sácame de una duda
para que dos bases de datos ?
saludos

pensaba hubicar la de usuarios en otro directorio, cuando terminara el programa solo era re ubicar.

Caral
23-07-2013, 04:45:21
Hola
No voy a poder probar el programa porque usas componentes de botones que yo no tengo asi que iremos poco a poco.
Para empezar no pretendas mucho de mi, no soy programador solo es un hoovi y hay muchos aqui que saben mucho mas que yo.
Para empezar deberías replantearte el programa la logica no es buena, entiendo que estés empezando pero mejor empezar bien.
Yo lo primero que haria seria :
1- eliminar todos los adoconnection de los form y dejaria solo el del datamodule.
2- pondria un archivo ini para localizar la base de datos.
3- crearia una tabla de facturaItem que tendria los articulos de venta, independientemente de la tabla factura.
4- pondria la tabla usuarios en la misma bd, no entiendo la razon de ponerla en otro lado.
tal vez digas que no es lo que necesitas, pero creeme, si no cambias lo que estas haciendo vas a hacer un escabeche.
Es solo mi opinion.
Saludos
PD: Si tienes dudas en los puntos que te comento lo podemos ver uno a uno.

feliz-58
23-07-2013, 04:56:47
Hola
No voy a poder probar el programa porque usas componentes de botones que yo no tengo asi que iremos poco a poco.
Para empezar no pretendas mucho de mi, no soy programador solo es un hoovi y hay muchos aqui que saben mucho mas que yo.
Para empezar deberías replantearte el programa la logica no es buena, entiendo que estés empezando pero mejor empezar bien.
Yo lo primero que haria seria :
1- eliminar todos los adoconnection de los form y dejaria solo el del datamodule.
2- pondria un archivo ini para localizar la base de datos.
3- crearia una tabla de facturaItem que tendria los articulos de venta, independientemente de la tabla factura.
4- pondria la tabla usuarios en la misma bd, no entiendo la razon de ponerla en otro lado.
tal vez digas que no es lo que necesitas, pero creeme, si no cambias lo que estas haciendo vas a hacer un escabeche.
Es solo mi opinion.
Saludos
PD: Si tienes dudas en los puntos que te comento lo podemos ver uno a uno.

reorganizare todo y luego te enseño.

Gracias por la ayuda :)

Caral
23-07-2013, 04:58:36
Hola
Para poner el archivo INI puedes ver este tutorial (http://www.delphiaccess.com/forum/tutoriales/tutorial-(como-usar-un-archivo-ini)-novatos/msg55450/#msg55450) que hice, te servira de ejemplo, es muy sencillo.
Saludos

feliz-58
23-07-2013, 05:13:48
Hola
Para poner el archivo INI puedes ver este tutorial (http://www.delphiaccess.com/forum/tutoriales/tutorial-(como-usar-un-archivo-ini)-novatos/msg55450/#msg55450) que hice, te servira de ejemplo, es muy sencillo.
Saludos

listo, paso 1 y 2 ahora vamos al tres, que se tomarían en cuenta en esa tabla?

Caral
23-07-2013, 05:22:26
Hola
En la tabla factura se usa:
Fecha
Numero
CodCliente
Terminos
Vendedor (si existe)
FormaDePago (tarjeta, contado, etc)
Total
En la tabla Items de fatura:
Codfactura (numero)
CodProducto
Cantidad
Precio (en ese momento ya que puede variar)
Con esto que se gana ?.
Primero la tabla factura solo contiene detalles importantes, ademas de tener un consecutivo que es importante.
Luego en la tabla FacturaItems se tienen los detalles que se necesiten de la factura.
Es mas limpio y a la hora de hacer reportes etc se complica menos esto.
saludos

feliz-58
23-07-2013, 05:32:18
Hola
En la tabla factura se usa:
Fecha
Numero
CodCliente
Terminos
Vendedor (si existe)
FormaDePago (tarjeta, contado, etc)
Total
En la tabla Items de fatura:
Codfactura (numero)
CodProducto
Cantidad
Precio (en ese momento ya que puede variar)
Con esto que se gana ?.
Primero la tabla factura solo contiene detalles importantes, ademas de tener un consecutivo que es importante.
Luego en la tabla FacturaItems se tienen los detalles que se necesiten de la factura.
Es mas limpio y a la hora de hacer reportes etc se complica menos esto.
saludos

ok en la de factura ya tengo lo siguiente:
CodFactura
Fecha
CodCliente
Terminos
Vendedor
Formadepago
Codarticulo
total

y en facturaitem
Codfactura
CodProducto
Cantidad
Precio

que sigue?

Caral
23-07-2013, 05:35:33
Hola
Bueno, necesitaria el archivo con los cambios que as hecho para poder ver el codigo funcionando, es la unica forma en que te podria ayudar, probandolo.
Tambien necesitaria los componentes que le pusiste al proyecto sin estos no lo puedo poner a correr.
saludos

feliz-58
23-07-2013, 05:47:52
Hola
Bueno, necesitaria el archivo con los cambios que as hecho para poder ver el codigo funcionando, es la unica forma en que te podria ayudar, probandolo.
Tambien necesitaria los componentes que le pusiste al proyecto sin estos no lo puedo poner a correr.
saludos

ahora te lo envio :)

movorack
23-07-2013, 06:03:42
Valla que paciencia caral, en realidad para un novato solo otro novato tiene tanta paciencia y dedicación.

feliz-58
23-07-2013, 06:05:01
aqui esta, pero despues de que conecte las tablas al adoconection del modulo me dice que faltan conexiones :S :confused:

Chequea.

acá el enlace:
archivo (http://terawiki.clubdelphi.com/?download=Programafeliz-58.zip)

feliz-58
23-07-2013, 06:06:46
Valla que paciencia caral, en realidad para un novato solo otro novato tiene tanta paciencia y dedicación.

parece que el unico interezado en ayudarme es caral :S :(

movorack
23-07-2013, 06:31:37
Que pena compadrito y si... Caral quiere ayudarte y deberías aprovechar al eterno novato del club que mucho para aportar si tiene.

Entiendo que tengas algo urgente por aprender o entregar pero posts arriba te han dicho que la lógica de tu programa está mal y deberías replantear y tratar de aprender desde lo básico.

Y como tu dices si, tal vez parezca que no muchos quieren ayudar pero es que no todos tienen paciencia como Caral o Eficsa aunque sepa que todos fuimos novatos alguna vez. O para realizar lo menos yo.

cloayza
23-07-2013, 07:47:35
Amigo Caral, con lo que estas haciendo te ganaste el cielo...:D

Caral...Caral...Caral...

Casimiro Notevi
23-07-2013, 11:05:08
feliz-58, por muchas vueltas que le des y por mucho que te quejes de "nadie me ayuda", el camino a seguir ya se te ha indicado varias veces y no te lo puedes saltar, es total y absolutamente necesario e imprescindible:

La cara oculta de Delphi (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip) (4) de Ian Marteens, gratis y libre, donado por el autor a la comunidad.
El mejor libro que te puedes encontrar sobre Delphi enfocado a bases de datos.

Tienes que leerlo, sí o sí. Si quieres aprender. En caso contrario, tú mismo.

feliz-58
23-07-2013, 14:39:59
feliz-58, por muchas vueltas que le des y por mucho que te quejes de "nadie me ayuda", el camino a seguir ya se te ha indicado varias veces y no te lo puedes saltar, es total y absolutamente necesario e imprescindible:

La cara oculta de Delphi (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip) (4) de Ian Marteens, gratis y libre, donado por el autor a la comunidad.
El mejor libro que te puedes encontrar sobre Delphi enfocado a bases de datos.

Tienes que leerlo, sí o sí. Si quieres aprender. En caso contrario, tú mismo.

mi intención es leerlo, pero no puedo leerlo en 24 horas para terminar el programa no creen? ya lo descarge desde la primera vez que hablaron de el, pero no puedo leerlo en 24 horas, ustedes entenderan.

y la logica del programa ya la estoy reestructurando con la ayuda de caral!

Caral
23-07-2013, 15:07:41
Hola
Amigo Feliz:
Ten en cuenta que necesitas de la ayuda de todos, creo que el problema es que a los novatos nos cuesta mas explicar cual es el problema o lo que queremos hacer.
La guía que te esta dando Casimiro es la mejor y con la mejor intención, deberías aprovechar a uno de los grandes maestros del club como es el.
Yo no me dedico a esto y tampoco tengo tanto tiempo libre, solo puedo tratar de ayudar de rato en rato.
Trate de bajar el ultimo enlace pero no pude.
Saludos

feliz-58
23-07-2013, 15:22:13
Entiendo caral. pero no todos estan en ayudar, solo estan comentando, de lo contrario ya el programa estubiera reestructurado, pero sigamos, y gracias por tu esfuerzo.



aqui esta el enlace:
Programa (http://sdrv.ms/13XpD2F)

Casimiro Notevi
23-07-2013, 15:53:10
mi intención es leerlo, pero no puedo leerlo en 24 horas para terminar el programa no creen? ya lo descarge desde la primera vez que hablaron de el, pero no puedo leerlo en 24 horas, ustedes entenderan.

No, nadie lo entenderá. Señor paciente, túmbese en la camilla que lo voy a rajar con el bisturí de arriba hasta abajo para extirparle ese tumor. El libro ya lo leeré cuando tenga tiempo, usted entenderá.

Entiendo caral. pero no todos estan en ayudar, solo estan comentando, de lo contrario ya el programa estubiera reestructurado, pero sigamos, y gracias por tu esfuerzo.
Pues con esa actitud vas a encontrar poca ayuda, eso está claro.

feliz-58
23-07-2013, 15:56:02
No, nadie lo entenderá. Señor paciente, túmbese en la camilla que lo voy a rajar con el bisturí de arriba hasta abajo para extirparle ese tumor. El libro ya lo leeré cuando tenga tiempo, usted entenderá.


Pues con esa actitud vas a encontrar poca ayuda, eso está claro.

contigo no se vale nada u.u

Saludos. Suerte Casimiro ;) (Sin Sarcasmos)

Casimiro Notevi
23-07-2013, 16:00:44
Saludos
Que seas feliz :)

movorack
23-07-2013, 16:23:18
feliz-58, lo que sucede es que de tu parte la respuesta ha sido mas bien negativa cuando se te ha invitado a fundamentar esas bases que necesitas para hacer algo medianamente bueno.

No puedes construir una casa completa cuando solo tienes cimientos para una pared y si a eso le sumas que rechazas la ayuda (Si, los comentarios. No la revisión de código) que se te presenta pues en algún momento te quedas solo.

Con respecto a tus dudas pues...

La duda en el post #1 está relacionada con este link Master-detail relationships ADO and Delphi (http://delphi.about.com/od/database/l/aa071001a.htm) y trata siempre de usar el datamodule para las operaciones y manejo de la DB. Por eso las conexiones y los datasource deben ir en estos módulos (DataModulues (http://delphi.about.com/od/database/l/aa101601a.htm))

Por último, debes tener en cuenta que esto es un foro y habrá gente de toda clase, quienes ayudan hasta el limite y quienes solo comentarán y hasta trolls como yo :D... así que relax

ahhh y...


Que seas feliz :)