Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Prove el codigo, limpia el Grid pero deja un registro, pero esto significa que deberia un DBEedit para la carga del numero de factura en la primer solapa, no? para que sea mas visual y no confundir al usuario, que opinas?.
en la primera pone todos los datos y carga inclusive el numero de factura.
en la segunda lo ve mas limpio para poder guardar e imprimir la factura
en la tercera el historico de todas la facturas realizadas.
Saludos.
Responder Con Cita
  #2  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Yo quitaría la solapa de detalle esta de mas y pondria los dos botones que quedan en la primera solapa.
En la solapa de historial tambien haria un filtro, pero esta vez por cliente ya que se supone que es el historial de alguien.
Otra cosa que haria seria eliminar el boton de sub total y de total, estan de mas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
el ultimo codigo me tira un error Incompatible types: 'String' and 'Integer' aunque a filtro lo cambie por integer
en estas lineas
Código Delphi [-]
Filtro := 'ID_Factura '= + fact;
     Table2.Filter := Filtro;
Voy a tener muy en cuenta tus consejos, saludos.
Responder Con Cita
  #4  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Tienes que cambiar a fact por string;
El problema no esta en filtro, esta en fact:
Código Delphi [-]
var
   Filtro : String;
   fact: String;
begin
     fact:= '0':
     Table2.Filtered := False;
     Filtro := 'ID_Factura = '+fact;
     Table2.Filter := Filtro;
     Table2.Filtered := True
   end
   else Table2.Filtered := False;
end;
Eso quiere decir que el numero de factura en el campo factura es string y no integer.
Para eliminar los botones creas un procedimiento con el codigo del boton 2 y el boton 3 lo llamas cuando necesites.
Asi simplemente cuando le des doble click al dbgrdi2 saldra el subtotal y el total, en cuanto al descuento e incremento se hace lo mismo, se llama al procedimiento y listo.
Saludos
No estoy muy seguro en paradox, recuerda que de esto no se amigo.
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Procedimiento calcula:
Colocar el procedure al principio, asi:
Código Delphi [-]
    procedure DBEdit5Change(Sender: TObject);
    procedure calcula; // aqui....
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form14: TForm14;
  fecha:Tdate;
  S,D,I,total:Real;
  e,c:integer;
implementation

Crear el procedimiento:

Código Delphi [-]
procedure calcula;
var
  TotalGanancias : Currency;
  Marca : TBookMarkStr;
begin
 // subTotal
 TotalGanancias := 0;
 Marca := Table2.Bookmark;//Almacenamos la posición del registro actual en nuestra marca
 Table2.DisableControls;//Deshabilitamos los controles enlazados a nuestro  DataSet
 Table2.First;
 While Not Table2.Eof do
  begin
   TotalGanancias := TotalGanancias + Table2.FieldbyName('TotalImp').ASCurrency;
   Table2.Next;
  end;
    Table2.EnableControls;//Habilitamos nuevamente los controles
    Table2.Bookmark := Marca;//Restauramos a la posición del registro de nuestra marca
 Edit2.Text:=CurrToStr(TotalGanancias);
 S:=StrToFloat(Edit2.Text);
 // total
 total:=S-D+I;
 Edit5.Text:=FloatToStr(total);
end;

Colocar el procedimiento en el dobleclick del dbgrid2: (revisa al final del codigo es lo unico que cambia)
Código Delphi [-]
procedure TForm14.DBGrid2DblClick(Sender: TObject);
begin
Table2.Open;
if combobox1.Text = 'Productos' then
  begin
   datasource5.DataSet:= Table4;  // tabla de productos
   Table2.Insert; // inserta un campo
   Table2Cod_prodser.Value:= Table4Cod_prod.Value; // el campo cod_prod de la tabla nueva es igual al de la tabla5
   Table2Codigo.Value:= Table4Codigo.Value;
   Table2Descripcion.Value:= Table4Descripcion.Value;
  // Table2Unidad.Value:= Table4Unidad.Value;
   Table2Importunidad.Value:= Table4ImpVent.Value;
   Table2Cantidad.Value:= StrToFloat(Edit1.Text);  //cantidad cargada por el usuario
   Table2TotalImp.Value:=Table2Cantidad.Value * Table2Importunidad.Value;   // multiplica la cantidad por el valor unitario
   Table2.Post; // guarda el dato en la tabla nueva.
   end;
  if combobox1.Text = 'Servicios' then
  begin
  datasource3.DataSet:= Table3;  // tabla servicios
   Table2.Insert; // inserta un campo
   Table2Cod_prodser.Value:= Table5Cod_servcio.Value; // el campo cod_servicio de la tabla nueva es igual al de la tabla3
   Table2Codigo.Value:= Table5Codigo.Value;
   Table2Descripcion.Value:= Table5Servicio.Value;
   Table2Cantidad.Value:= StrToFloat(Edit1.Text);  // cantidad cargada por el usuario
   Table2Importunidad.Value:= Table5ImpServ.Value;
   Table2TotalImp.Value:=Table2Cantidad.Value * Table2Importunidad.Value;
   Table2.Post; // guarda el dato en la tabla nueva.
   end;
   calcula; // aqui....
end;

Llamar al procedimiento en el edit3 y el 4 en el evento onchange:
Código Delphi [-]
procedure TForm14.Edit3Change(Sender: TObject);
begin
D:=StrToFloat(Edit2.text)*StrToFloat(Edit3.Text)/100;
if edit2.Text = ' ' then
begin
    edit2.Text = '0'.
end
else
calcula;

end;
Código Delphi [-]
procedure TForm14.Edit4Change(Sender: TObject);
begin
I:=StrToFloat(Edit2.text)*StrToFloat(Edit4.Text)/100;
if edit4.Text = ' ' then
begin
    edit4.Text = '0'.
end
else
calcula;
end;

Parece mucho trabajo ya que tienes que modificar algunas cosas, pero te daras cuenta que crear procedimientos ajustados a tu necesidad te ayuda a no repetir codigo, simplemente lo llamas cuando necesites.
saludos
Espero que estemos aprendiendo algo a nuestra edad....
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
gracias lo ire probando mañana a ver que pasa. saludos
Responder Con Cita
  #7  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Tienes que cambiar a fact por string;
El problema no esta en filtro, esta en fact:
Código Delphi [-]var Filtro : String; fact: String; begin fact:= '0'; Table2.Filtered := False; Filtro := 'ID_Factura = '+fact; Table2.Filter := Filtro; Table2.Filtered := True end else Table2.Filtered := False; //[Error] Unit14.pas(324): ';' expected but 'ELSE' found end; //[Error] Unit14.pas(325): '.' expected but ';' found
Hola Caral, ya probe el procedimiento y esta funcionando, en cuanto a esto me tira el error puesto arriba, parece algo con la puntuacion pero no se, ya probe poniendolo despues del true, pero sigue igual.
Faltaria el boton guardar para almacenar todo y poder verlo en el historial, mientras tanto voy probando Qreport, aunque tengo que tener datos que ver para imprimir, saludos.
Responder Con Cita
  #8  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola

Código Delphi [-]
var
   Filtro : String;
   fact: String;
begin
     fact:= '0':
     Table2.Filtered := False;
     Filtro := 'ID_Factura = '+fact;
     Table2.Filter := Filtro;
     Table2.Filtered := True
   
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Gracias Caral, buen dia.
veamos los pasos, entro a facturacion, apreto el boton nueva factura, me borra u oculta los datos del DBGrid.
cargo un numero de factura en el DBEdit5 que ahora lo puse en la primer hoja con todo el reto de cosas.
hago doble click para cargar en el DBGrid2 de servicios o pruductos y me tira el siguiente error ... raised exception class EDBEngineError with message 'key violation'. Process stopped...
parece que se soluciona de un lado y de desarregla de otro
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Copiar registro de una Tabla a otra Tabla, sin repetirse MaMu Conexión con bases de datos 22 11-04-2013 15:29:11
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? patriram MySQL 4 02-11-2007 16:00:24
copiar datos de una tabla en otra fedelphi Firebird e Interbase 6 24-08-2007 03:59:36
Copiar un registro de una tabla en otra... JuanErasmo SQL 6 10-07-2007 23:08:15
Copiar Tabla de una BD a Otra BD en Firebird pcicom SQL 3 14-02-2005 16:31:15


La franja horaria es GMT +2. Ahora son las 09:51:17.


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