Ver Mensaje Individual
  #1  
Antiguo 10-10-2014
Jose Carlos Rey Jose Carlos Rey is offline
Miembro
NULL
 
Registrado: may 2014
Posts: 26
Reputación: 0
Jose Carlos Rey Va por buen camino
Depurar DB MS SQL

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.
Responder Con Cita