Buen día a todos, hace tiempo no ingresaba, he ido desarrollando en base a las necesidades en la compañía donde laboro y tengo ya algunos dias con este problema. Tengo una tabla en MS SQL tiene unos 120 mil registros de los cuales muchos son repetidos en la columna "A" (clave de producto) por decirlo de alguna forma, pero que tomando la columna "B" (numero almacén) lo clasificaría en numero de almacén del producto "XXXX" y en la columna "C" estaría el concepto por el cual habría que definir si se resta o se suma la cantidad que esta en una columna "D" , y por ultimo tomar la cantidad que esta en una columna "E". para pasar al siguiente registro y validar el dato de la columna "A" sea igual al anterior. si es asi, ve si la columna "B" es igual, si no se asume que es otro almacén y con esto debería totalizar la columna "C", "D" y "E" y pegar esta información en una tabla distinta. lo desarrollado hasta el momento funciona en parte pero si encuentra que la columna "B" es distinta me agrega la info en la nueva tabla. lo que necesito es que se haga algo similar a la instruccion DISTINCT de SQL para que me muestre en la columna "A" la clave del producto y en la columna "B" únicamente los almacenes 1,2,3,4, etc en los que se encuentra (sin repetirse), en la columna "C" sus totales, en la "D" y "E" lo respectivo.
Espero haber sido claro en la explicación del problema. voy a buscar el código ya que lo he reescrito tantas veces que ya lo elimine, por suerte lo guarde en un txt para copiarlo.
Código Delphi
[-] With DataModule1.ADOTabla Do
Begin
Open;
Edit;
First;
ProgressBar1.Max := RecordCount;
Cart := DataModule1.ADOTabla.AsString;
Cart1 := DataModule1.ADOTabla.AsString;
Nalma := DataModule1.ADOTabla.AsInteger;
Nalma1 := DataModule1.ADOTabla.AsInteger;
Ncant := 0;
Nexist := 0;
Nsumacanti := 0;
Nsumaexist := 0;
While Not Eof Do
Begin
Cart := DataModule1.ADOTabla.AsString;
If Cart = Cart1 Then
Begin
Nalma := DataModule1.ADOTabla.AsInteger;
If Nalma=Nalma1 Then
Begin
Nalma := DataModule1.ADOTabla.AsInteger;
If Nalma=1 Then
Begin
Cart := DataModule1.ADOTabla.AsString;
Ncon := DataModule1.ADOTabla.AsInteger;
DataModule1.ADOTabla.Next;
If Ncon = 1 Then
Begin
Nexist := DataModule1.ADOTabla.AsInteger;
Almacen[0] := Almacen[0]+Nexist;
End
Else
If Ncon = 2 Then
Begin
Nexist := DataModule1.ADOTabla.AsInteger;
Almacen[0] := Almacen[0]+Nexist;
End
Else
If Ncon = 3 Then
Begin
Nexist := DataModule1.ADOTabla.AsInteger;
Almacen[0] := Almacen[0]+Nexist;
End
Else
...............................
Gracias por su atención, apoyo y comentarios.