Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Gracias Felipe por la idea, voy a ver como me la rebusco con el codigo. Algo voy a hacer, voy a hacer lo posible...

Gracias Caral por el codigo que me pasaste, mañana tranquilo lo voy a ver con mas atencion.

Cualquier duda, la consultare y espero sus respuestas.

Gracias por todo.
Responder Con Cita
  #2  
Antiguo 03-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Cita:
Empezado por deprimera Ver Mensaje
Gracias Felipe por la idea, voy a ver como me la rebusco con el codigo. Algo voy a hacer, voy a hacer lo posible...

Gracias Caral por el codigo que me pasaste, mañana tranquilo lo voy a ver con mas atencion.

Cualquier duda, la consultare y espero sus respuestas.

Gracias por todo.
Considero que el codigo de Caral va muy bien con la idea y con parte de lo que necesitas...
Responder Con Cita
  #3  
Antiguo 03-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
...........

Última edición por felipe88 fecha: 03-12-2008 a las 03:46:32.
Responder Con Cita
  #4  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En realidad creo que la parte en donde actuliza es la que te podria servir mas o donde podrias sacar mas provecho.
Este es el pequeño codigo:
Código Delphi [-]
procedure TFFactura.BitBtn4Click(Sender: TObject);
var numfact, i, OrdTrans : integer;
    Fecha, FechaVence, iv: String;
    FPagoOK : Boolean;
    MntContado, MntCheque, MntTarjeta, MntOtros, Saldo, Pagado :String;
    BalanceAnterior, BalanceTotal : Double;
    Tipo :char;
begin
   If cbTipo.ItemIndex = 0 then
   begin
      FFormaPago:=TFFormaPago.Create(self);
      FFormaPago.Valores(SubTotal, Impuesto, Total);
      try
         FFormaPago.ShowModal;
      finally
         FPagoOK := FFormaPago.OK;
         MntContado := FFormaPago.FEContado.Text;
         MntCheque  := FFormaPago.FECheque.Text;
         MntTarjeta := FFormaPago.FETarjeta.Text;
         MntOtros   := FFormaPago.FEOtro.Text;
         Saldo      := FloatToStr(FFormaPago.Saldo);
         Pagado     := FloatToStr(FFormaPago.Pagado);
         FFormaPago.Free;
      end;
      Tipo:= 'F';
   end else
   begin
      FPagoOK := True;
      MntContado := '0';
      MntCheque  := '0';
      MntTarjeta := '0';
      MntOtros   := '0';
      Saldo      := '0';
      Pagado     := '0';
      Tipo := 'C';
   end;
   If FPagoOk then
   begin
     ShortDateFormat := 'yyyy-mm-dd';
     Fecha := DateToStr(now);
     FechaVence := DateToStr(IncDay(now,(StrToInt(Label21.Caption))));
     ShortDateFormat := 'dd/mm/yyyy';
  // Obtener el numero de factura
     QTemp.SQL.Text := 'Select Max(CodFactura) From Factura where Tipo = '+QuotedStr(Tipo);
     QTemp.Open;
     If QTemp.RecordCount = 0 then NumFact:=1
     else NumFact := QTemp.Fields[0].AsInteger+1;
     QTemp.Close;
  //Iniciar la Transaccion
     DataModule1.AC1.BeginTrans;
     try
     If Edit2.Text <> '' then
  // Insertar en la tabla de Factura Si tiene ORDEN
        QTemp.SQL.Text := 'Insert Into Factura Values '+
           '( '+IntToStr(NumFact)+', 0, '+QuotedStr(Tipo)+', '+QuotedStr(Fecha)+', '+Edit1.Text+', '+QuotedStr(Label19.Caption)+', '+QuotedStr(Edit4.Text)+', '+QuotedStr(Edit5.Text)+', '+QuotedStr(Edit3.Text)+
           ', False, ''0.13'', False, ''0.00'', '+QuotedStr(SGTotal.Cells[1,0])+', '+QuotedStr(SGTotal.Cells[1,1])+', '+
           QuotedStr(SGTotal.Cells[1,2])+', '+QuotedStr(SGTotal.Cells[1,3])+', '+Edit2.Text+', '+QuotedStr(MntContado)+', '+QuotedStr(MntCheque)+', '+
           QuotedStr(MntTarjeta)+', '+QuotedStr(MntOtros)+', '+QuotedStr(Saldo)+', '+QuotedStr(Pagado)+', '+QuotedStr(FloatToStr(TipoCambio))+')'
        else
  // Insertar en la tabla de Factura si NO tiene ORDEN
        QTemp.SQL.Text := 'Insert Into Factura ( CodFactura, Secuencia, Tipo, Fecha, CodCliente, Terminos, OrdenCompra, CodVendedor, Excento, TasaImpuesto, Anulada, MntEnvio, MntSubTotal, MntDescuento, MntImpuesto, MntTotal, '+
        'MntContado, MntCheque, MntTarjeta, MntOtros, Saldo, Pagado, TC) Values '+
           '( '+IntToStr(NumFact)+', 0, '+QuotedStr(Tipo)+', '+QuotedStr(Fecha)+', '+Edit1.Text+', '+QuotedStr(Label19.Caption)+', '+QuotedStr(Edit4.Text)+', '+QuotedStr(Edit5.Text)+', '+QuotedStr(Edit3.Text)+
           ', False, ''0.13'', False, ''0.00'', '+QuotedStr(SGTotal.Cells[1,0])+', '+QuotedStr(SGTotal.Cells[1,1])+', '+
           QuotedStr(SGTotal.Cells[1,2])+', '+QuotedStr(SGTotal.Cells[1,3])+', '+QuotedStr(MntContado)+', '+QuotedStr(MntCheque)+', '+
           QuotedStr(MntTarjeta)+', '+QuotedStr(MntOtros)+', '+QuotedStr(Saldo)+', '+QuotedStr(Pagado)+', '+QuotedStr(FloatToStr(TipoCambio))+')';
        QTemp.ExecSQL;

   //Insertar en la tabla de FacturaItem
        For i := 1 to SgFact.RowCount-1 do
         begin
           if SGFact.Cells[6,i] = 'Si' then iv:='True)' else iv:='False)';
           QTemp.SQL.Text := 'Insert Into FacturaItem Values '+
           '( '+IntToStr(numfact)+', 0, '+QuotedStr(Tipo)+', '+IntToStr(i)+', '+QuotedStr(SGFact.Cells[0,i])+', '+QuotedStr(SGFact.Cells[2,i])+','+QuotedStr(SGFact.Cells[3,i])+', '+
           QuotedStr(SGFact.Cells[4,i])+', '+iv;
           QTemp.ExecSQL;
         end;
   //Calcula el siguiente numero de OrdTrans
         QTemp.SQL.Text := 'SELECT Max([OrdTrans]) AS Expr1 '+
                           'FROM CxCobrar;';
         QTemp.Active := True;
         If QTemp.RecordCount = 0 then OrdTrans:=1
         else OrdTrans := QTemp.Fields[0].AsInteger+1;
         QTemp.Close;

        If Tipo = 'F' then
        begin
   //  Insertar en la tabla de CxCobrar
           QTemp.SQL.Text := 'Select BalanceTotal From CxCobrar where CodCliente = '+Edit1.Text+
                             ' Order By OrdTrans;';
           QTemp.Open;
           IF QTemp.RecordCount = 0 then BalanceAnterior := 0
           else
           begin
              QTemp.Last;
              BalanceAnterior := QTemp.Fields[0].AsFloat;
           end;
           QTemp.Close;
           BalanceTotal := StrToFloat(Saldo) + BalanceAnterior;

           QTemp.SQL.Text := 'Insert Into CxCobrar ( CodTransac, Secuencia, TipoTransac, OrdTrans, FechaTransac, FechaVencimiento, CodCliente, SubTotal, Descuento, Impuesto, Total, Efectivo, Cheque, Tarjeta, Otro, Balance, BalanceTotal, BalanceAnterior, PagosRec, EstadoCuenta )'+
                             ' Values ('+IntToStr(NumFact)+', 0, ''FA'', '+IntToStr(OrdTrans)+', '+QuotedStr(Fecha)+', '+QuotedStr(FechaVence)+', '+Edit1.Text+', '+QuotedStr(SGTotal.Cells[1,0])+', '+QuotedStr(SGTotal.Cells[1,1])+', '+
                             QuotedStr(SGTotal.Cells[1,2])+', '+QuotedStr(SGTotal.Cells[1,3])+', '+QuotedStr(MntContado)+', '+QuotedStr(MntCheque)+', '+
                             QuotedStr(MntTarjeta)+', '+QuotedStr(MntOtros)+', '+QuotedStr(Saldo)+', '+QuotedStr(FloatToStr(BalanceTotal))+', '+QuotedStr(FloatToStr(BalanceAnterior))+', 0, 0)';
           QTemp.ExecSQL;
        end;

  // Actualizar la tabla de series
        For i := 1 to SgFact.RowCount-1 do
         begin
           if Tipo = 'F' then
              QTemp.SQL.Text := 'Update Series Set NumFactura = '+IntToStr(numfact)+', Estado = ''Facturado'' Where '+
                                'NumSerie = '+SGFact.Cells[2,i]
           else
              QTemp.SQL.Text := 'Update Series Set NumFactura = '+IntToStr(numfact)+', Estado = ''Consignac'' Where '+
                                'NumSerie = '+SGFact.Cells[2,i];
           QTemp.ExecSQL;
         end;

  // Actualizar la tabla de OrdenProdItem
        For i := 1 to SgFact.RowCount-1 do
         begin
           if Tipo = 'F' then
              QTemp.SQL.Text := 'Update OrdenProdItem Set Estacion = ''Est05'' Where '+
                                'NumSerie = '+SGFact.Cells[2,i]
           else
              QTemp.SQL.Text := 'Update OrdenProdItem Set Estacion = ''Est06'' Where '+
                                'NumSerie = '+SGFact.Cells[2,i];
           QTemp.ExecSQL;
         end;

  // Actualizar la tabla de Articulos
        For i := 1 to SgFact.RowCount-1 do
         begin
           QTemp.SQL.Text := 'Update Articulos Set Disponible = Disponible - '+SGFact.Cells[3,i]+' Where '+
                             'CodParte = '+QuotedStr(SGFact.Cells[0,i]);
           QTemp.ExecSQL;
         end;

   // Completa la Transaccion
        DataModule1.AC1.CommitTrans;

   // Imprime la factura si el usuario quiere
      FImprimirFactura:=TFImprimirFactura.Create(self);
      FImprimirFactura.numfact := numfact;
      FImprimirFactura.Tipo := Tipo;      
      try
         FImprimirFactura.ShowModal;
      finally
         FImprimirFactura.Free;
      end;

   except
        on E:Exception do
        begin
           DataModule1.AC1.RollbackTrans;
           MessageDlg('No fue posible completar la transacción, por favor contacte al administrador',mtError,[mbOK],0);
        end;
     end;//try
   end;
   Close;
end;
Espero te sirva de ejemplo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
01010001 01110101 01100101 00100000 01110110 01100001 00100000 01100001 01101101 01101001 01100111 01101111 00101100 00100000 01111001 01100001 00100000 01100001 01110000 01110010 01100101 01101110 01100100 01100101 01110010 01100001 00101100 00100000 01100101 01110011 00100000 01100011 01110101 01100101 01110011 01110100 01101001 01101111 01101110 00100000 01100100 01100101 00100000 01110100 01101001 01100101 01101101 01110000 01101111
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 03-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
En realidad todos empezamos con dudas
Responder Con Cita
  #7  
Antiguo 03-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
De las cosas que he visto de deprimera es que tiene ganas de aprender, me recuerda a mi.
Se que poco a poco va a llegar lejos, ademas sabe que aquí hay personas que saben mucho de las que todos aprendemos.
Saludos
__________________
Siempre Novato
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


La franja horaria es GMT +2. Ahora son las 21:42:51.


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