Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Conexión con bases de datos
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Conexión con bases de datos

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 17/10/2010
microbiano's Avatar
microbiano microbiano is offline
Miembro
 
Join Date: Sep 2008
Location: Mexico D.F
Posts: 349
Poder: 18
microbiano Va por buen camino
problema resuelto

pues bien despues de unas horas de desvelo y de unas cuantas llamadas de mi linda esposa a dormir he resuelto el problema, pongo el codigo por si algun dia le sirve.... gracias esposita por aguantarme jejejeje.


Código Delphi [-]
procedure TFfactura.txtcodigoExit(Sender: TObject);
var wcodigobarras: string;
    wprecio_totalouble;
    wprecio_ventaouble;
    i:Integer;
    {variables para modificaciones}
   wcodigomodificar,wdescripcionmodificar:string;
   wcantidadmodificar,wventa_totalmodificada:Integer;
   wdescuentomodificar,wpreciomodificarouble;
   wtotalmodificarouble;
 begin
 wcodigobarras:=Trim(Ffactura.txtcodigo.Text);
 Ffactura.txtcodigo.Text:='';
 if wcodigobarras<>'' then
    begin
     //recorro todos los registros del Tstring grig
     For i:=1 to Ffactura.SGFact.RowCount-1 do
      begin
        if Ffactura.SGFact.Cells[0,i]= Trim(wcodigobarras) then
         begin
         {tomo los registros que existen en el flexgrid de acuerdo al registro que introdujeron}
          wcodigomodificar:=Ffactura.SGFact.Cells[0,i]; //codigo barras
          wdescripcionmodificar:=Ffactura.SGFact.Cells[1,i]; //descripcion
          wcantidadmodificar:=StrToInt(Ffactura.SGFact.Cells[2,i]); //cantidad venta
          wpreciomodificar:=wprecioventa;
          wdescuentomodificar:=StrToFloat(Ffactura.SGFact.Cells[4,i]);//descuento
          {valido la variable de cantidad para ver si es mayor a uno}
            if wcantidad_venta<>0 then
             begin
              Ffactura.SGFact.Cells[0,i]:=wcodigobarras;//codigobarras
              Ffactura.SGFact.Cells[1,i]:=wdescripcionmodificar;//descripcion
              wventa_totalmodificada:=wcantidadmodificar+wcantidad_venta;//suma cantidad
              Ffactura.SGFact.Cells[2,i]:=IntToStr(wventa_totalmodificada);//asigno cantidad a celda
              wprecio_total:=(wventa_totalmodificada*wprecioventa);//multiplico la cantidad por precio
              Ffactura.SGFact.Cells[5,i] := Format('%8.2f',[wprecio_total]);
              calcula_totales;
              wcantidad_venta:=0;
              Ffactura.txtcodigo.SetFocus;
              wcodigobarras:='';
              Exit;
             end
            else
             begin
              Ffactura.SGFact.Cells[0,i]:=wcodigobarras;//codigobarras
              Ffactura.SGFact.Cells[1,i]:=wdescripcionmodificar;//descripcion
              wventa_totalmodificada:=wcantidadmodificar+1;//suma cantidad
              Ffactura.SGFact.Cells[2,i]:=IntToStr(wventa_totalmodificada);//asigno cantidad a celda
              wprecio_total:=(wventa_totalmodificada*wprecioventa);//multiplico la cantidad por precio
              Ffactura.SGFact.Cells[5,i] := Format('%8.2f',[wprecio_total]);
              calcula_totales;
              wcantidad_venta:=0;
              Ffactura.txtcodigo.SetFocus;
              wcodigobarras:='';
              Exit;
             end;
          {termino la informacion proporcionada}
        end;
      end;
    end;
   {si no encuentra el registro en el TStringGrid lo agrego}
  if wcodigobarras<>'' then
   begin
    with fmodulo.Qry_Temp2 do
     begin
      Close;
      sql.clear;
      SQL.Add('select * from articulo');
      SQL.Add('where codigobarras=:Pcodigobarras');
      Parameters.ParamByName('pcodigobarras').Value:=Trim(wcodigobarras);
       try
        Open;
         if not Fmodulo.Qry_Temp2.IsEmpty then
          begin
           while not Fmodulo.Qry_Temp2.Eof do
            begin
             If Cuenta > 1 then SGFact.RowCount := SGFact.RowCount + 1;
              wprecioventa:=StrToFloat(FieldByname('precioventa').AsVariant);
              Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;
              Ffactura.SGFact.Cells[1,Cuenta]:=(FieldByname('nombre').AsString);
              {verifico cuantos productos asigno para la venta
                 y determino el importe total}
              if wcantidad_venta<>0 then
               begin
                Ffactura.SGFact.Cells[2,Cuenta]:=IntToStr(wcantidad_venta);
                wprecio_total:=(wcantidad_venta*wprecioventa);
               end
              else
               begin
                Ffactura.SGFact.Cells[2,Cuenta]:='1';
                wcantidad_venta:=StrToInt(SGFact.Cells[2,cuenta]);
                wprecio_total:=(wcantidad_venta*wprecioventa);
               end;
               wprecio_venta:=FieldByname('precioventa').AsFloat;
               Ffactura.SGFact.Cells[3,Cuenta]:=Format('%8.2n',[wprecio_venta]);
               wcantidad_venta:=StrToInt(SGFact.Cells[2,cuenta]);
               SGFact.Cells[4,Cuenta]:='0.00';
               //SGFact.Cells[5,Cuenta]:=Format('%8.2f',[wprecio_total]);
               Ffactura.SGFact.Cells[5,Cuenta] := Format('%8.2f',[wprecio_total]);
               Cuenta:=cuenta+1;
               calcula_totales;
               Next;
               Ffactura.txtcodigo.SetFocus;
               {limpio la variable de venta}
               wcodigobarras:='';
               wcantidad_venta:=0;
               Exit;
            end;
          end
         else
          begin
           MessageDlg('Registro'+chr(13)+'No localizado', mtError, [MBOK], 0);
           Ffactura.txtcodigo.Text:='';
           Ffactura.txtcodigo.SetFocus;
           Exit;
          end;
       except
        on E:EOleException do
         begin
          MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
         end;
       end;
     end;
   end;
 end;

Aveces creo que mi esposa tiene razon, jejeje prefiero a mi amante(PC) que a ella, segun ella esta viendo quien se queda conmigo pero creo que ya elegi jajajaja
Reply With Quote
  #2  
Old 18/10/2010
cloayza cloayza is offline
Miembro
 
Join Date: May 2003
Location: San Pedro de la Paz, Chile
Posts: 948
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo creo que podrias ahorrarte algunas lines haciendo lo siguiente:


Código Delphi [-]
 //recorro todos los registros del Tstring grig
     For i:=1 to Ffactura.SGFact.RowCount-1 do
      begin
        if Ffactura.SGFact.Cells[0,i]= Trim(wcodigobarras) then
        begin
             {tomo los registros que existen en el flexgrid de acuerdo al registro que introdujeron}
             wcodigomodificar:=Ffactura.SGFact.Cells[0,i]; //codigo barras
             wdescripcionmodificar:=Ffactura.SGFact.Cells[1,i]; //descripcion
             wcantidadmodificar:=StrToInt(Ffactura.SGFact.Cells[2,i]); //cantidad venta
             wpreciomodificar:=wprecioventa;
             wdescuentomodificar:=StrToFloat(Ffactura.SGFact.Cells[4,i]);//descuento
             {valido la variable de cantidad para ver si es mayor a uno}

             Ffactura.SGFact.Cells[0,i]  :=wcodigobarras;//codigobarras
               Ffactura.SGFact.Cells[1,i]:=wdescripcionmodificar;//descripcion

             if wcantidad_venta<>0 then
               wventa_totalmodificada:=wcantidadmodificar+wcantidad_venta
             else
               wventa_totalmodificada:=wcantidadmodificar+1;

             Ffactura.SGFact.Cells[2,i]:=IntToStr(wventa_totalmodificada);//asigno cantidad a celda
             wprecio_total:=(wventa_totalmodificada*wprecioventa);//multiplico la cantidad por precio
             Ffactura.SGFact.Cells[5,i] := Format('%8.2f',[wprecio_total]);
             calcula_totales;
             wcantidad_venta:=0;
             Ffactura.txtcodigo.SetFocus;
             wcodigobarras:='';
             Exit;

          {termino la informacion proporcionada}
        end;
      end;
    end;

Saludos
Reply With Quote
  #3  
Old 18/10/2010
microbiano's Avatar
microbiano microbiano is offline
Miembro
 
Join Date: Sep 2008
Location: Mexico D.F
Posts: 349
Poder: 18
microbiano Va por buen camino
ok gracias lo considerare, pero aunque parezca absurdo, creo que es mania de venir de visual Basic jejeje.
Reply With Quote
  #4  
Old 18/10/2010
BlueSteel's Avatar
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Join Date: May 2003
Location: Concepción - Chile
Posts: 2,310
Poder: 26
BlueSteel Va por buen camino
Talking

Hola Microbiano...

Hace tiempo yo tube que realizar un proceso similar... y utilice los StringGrid para ingresar temporalmente los detalles de las Facturas / Orden de Compra y otros documentos similares.... Mi problema era que cuando el usuario queria eliminar una o modificar un producto me generaba algun error... aunque no era siempre....

Para solucionar eso lo que hice fue utilizar el componente JvMemoryData de la Jedi... que basicamente es una tabla de memoria temporal y es muy sencilla de utilizar...

Si quieres te dejo algunos ejemplos

Salu2
__________________
BlueSteel
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
error en ciclo!!! MARLON1 PHP 7 08/04/2010 17:18
Repite los datos al guardar gsilvei Varios 1 19/01/2008 17:20
crear label por codigo en un ciclo for.. las beses de el ciclo sakuragi .NET 3 29/09/2005 05:04
DBlookupcombobox...repite nombres? alt126 Conexión con bases de datos 1 04/01/2005 12:25
buton en ciclo for rolando_s Varios 1 18/12/2004 12:38


All times are GMT +2. The time now is 04:49.


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