Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Actualizar lista de precios MySql (https://www.clubdelphi.com/foros/showthread.php?t=53970)

whatson 05-03-2008 19:51:55

Actualizar lista de precios MySql
 
Buen dia para todos.

Tengo la necesidad de actualizar los precios de los articulos desde Excel.

El problema es de que son al rededor de 15,000 articulos que se verifican cada 15 dias en promedio.
Me gustaria poder hacer un recorrido de cada line de excel para que me localize y compare los articulos con una tabla llamada prods de MySql.

Y que los Articulos que fueran encontrados Me los enviara directamente a otra hoja de excel, con estos datos;

Articulo DescripcionActual DescripcionNueva PrecioActual PrecioNuevo

Los articulos que no fueran encontrados Me los pasara a una hoja diferente de excel. (Que se supone serian articulos nuevos).

Articulo Descripcion Precio

Se me ocurre la posibilidad de exportar primero a una tabla nueva en MySql y posteriormente hacer una comparacion entre las
dos tablas para lograr el resultado deseado.
No considero muy conveniente de que este programa haga las actualizaciones de precio automaticamente, por si la lista del
proveedor estubiera incorrecta.
Los campos que utilizaria de la tabla PRODS serian unicamente "articulo","Descrip","precio".
Utilizaria para la exportacion simple si fuera el caso de la "comparacion entre tablas", este ejemplo que nos proporciono Roman http://www.clubdelphi.com/foros/show...44&postcount=5


Código Delphi [-]

Código Delphi [-]
while not AdoDataSet1.EoF do
begin
Table1.Append;
Table1.Fields[0].Value := AdoDataSet1.Fields[0].Value;
Table1.Fields[1].Value := AdoDataSet1.Fields[1].Value;
Table1.Fields[2].Value := AdoDataSet1.Fields[2].Value;
...
AdoDataSet1.Next;
end;






No se si estoy planteando este proyecto de forma correcta. Me gustaria recibir sus comentarios al respecto, asi como alguna
idea para lograr llevar estos datos a excel para su modificacion y su posterior actualizacion directa.

Nota. Necesito la comparacion para poder definir ciertos filtros posteriores, Ejemplo: Si precio de articulo "x" no es mayor o menor a .05% , el precio no sera modificado.

Gracias.

whatson 07-03-2008 17:07:14

Tomé la desición de exportar a la tabla primero
 
De nuevo gracias por su tiempo.

Tengo un proble ma para exportar desde excel
Me puediera ayudar con este codigo para localizar la causa de que Me este mandando error en que se "estan duplicando los datos en el campo llave 1". ( SQL Error: Duplicate entry 'For Key 1').





Código Delphi [-]
procedure TFormPrincipal.BitBtnCargaClick(Sender: TObject);
var Hoja : OleVariant;
     nFil  : Integer; 
     xVal : String;
begin
      // Crea objeto Excel.
      try
      Excel := CreateOleObject('Excel.Application');
      except
           showmessage('No se pudo crear el Objecto Excel.');
           Exit;
      end;
      Excel.Workbooks.Open('C:\ExportaLista.xls'); // Abre libro Excel
      Hoja := Excel.Worksheets.Item['DATOS']; // Abre Hoja 'Datos'.
     Hoja.Activate; 
     with FormPrincipal.ZTableProdsPaso do
         begin
            if Active then
               Close;
               Open;
               nFil:= 2;
               repeat
                 FormPrincipal.ZQueryProds.Open;
                 FormPrincipal.ZQueryProds.Insert;
                 FormPrincipal.ZQueryProds.FieldByName('ARTICULO').asString := Excel.Cells[nFil,1].Value;
                 FormPrincipal.ZQueryProds.FieldByName('DESCRIP').asString := Excel.Cells[nFil,2].Value;
                 FormPrincipal.ZQueryProds.FieldByName('LINEA').asString := Excel.Cells[nFil,3].Value;
                 FormPrincipal.ZQueryProds.FieldByName('FAMILIA').asString := Excel.Cells[nFil,4].Value;
                 FormPrincipal.ZQueryProds.FieldByName('SUBFAMILIA').asString := Excel.Cells[nFil,5].Value;
                 FormPrincipal.ZQueryProds.FieldByName('COSTO').asString := Excel.Cells[nFil,6].Value;
                 FormPrincipal.ZQueryProds.FieldByName('LISTAPROVEEDOR').asString := Excel.Cells[nFil,7].Value;
                 FormPrincipal.ZQueryProds.Post;
 
                 nFil:= nFil + 1;
                 xVal:= VarToStr(Excel.Cells[nFil,7].Value);
                 until (xVal = '0');

            // Cierra archivo excel.
            try
            Excel.Quit;
            except
                    ShowMessage('Excel no se pudo finalizar.');
                    Excel.Visible := True;
            end;
     end;
end;



Gracias por sus comentarios o sugerencias.:confused:

whatson 07-03-2008 18:54:11

Gracias por la ayuda

El problema lo tenia en la linea
Código Delphi [-]
until (xVal = '0');

Esto provocaba el proceso seguia leyendo lineas vacias de excel y tratando de escribir registros sin datos. (No se detenia).

La linea correcta fue
Código Delphi [-]
until (xVal = '');


La franja horaria es GMT +2. Ahora son las 12:04:50.

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