Ver Mensaje Individual
  #1  
Antiguo 15-10-2013
Jorge Orozco Jorge Orozco is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 25
Reputación: 0
Jorge Orozco Va por buen camino
Como hacer consultas de registro anterior y siguiente

Hola

Amigos necesito de su valiosa ayuda. Estoy desarrollando un programa de pedidos, donde tengo un TEdit con el nombre de Codigo_Producto y cuando le doy enter me despliega en un DBGrid todos aquellos código de la tabla de inventario que tengan relación con ese código que se dígito, hasta aquí todo me funciona bien, pero estoy poniendo dos botones, uno para seguir con el siguiente código y el otro botón para ir al código anterior. Pero no se como hacerlo. Si me puede ayudar se los voy agradecer.



Aqui les dejo el codigo de la consulta por código el producto.

Código Delphi [-]
procedure TMovimiento_Pedidos.Codigo_ProdKeyPress(Sender: TObject;
  var Key: Char);
Var llavepadre , articulo1 : string;
    conteo, i : integer;

begin
if KEY = #13 then
  begin
    if (informacion <> 0) then
        limpia_pantalla
      else
      informacion := 1;

    nombre_prod.Text := codigo_prod.Text;
    nombre_producto1;

    IBQuery1.Close;
    IBQuery1.SQL.Clear;
    IBQuery1.SQL.Add('select a.*, b.* from ARTICULOS a inner join ARTMOV b on b. ARMOVID = a.ARID where a.ARCODIGO = '''+Codigo_Prod.Text+'''');
    IBQuery1.Open;

    llavepadre := IBQuery1.FieldByName('ARMOVID').AsString;

    IBQuery2.Close;
    IBQuery2.SQL.Clear;
    IBQuery2.SQL.Add('select count(*) as contador from ARTMOV a where a.ARPADREID = '''+llavepadre+'''');
    IBQuery2.Open;

    //SG.RowCount := IBQuery2.FieldByName('contador').AsInteger;
    sg.RowCount := sg.RowCount + 1;

      if IBQuery2.FieldByName('contador').AsInteger = 0 then
        begin
          //--Application.MessageBox('No Tiene existencias','CONTROL DE MENSAJES',MB_OK);
          nombre_prod.SetFocus;
          exit;
        end;

      conteo := IBQuery2.FieldByName('contador').AsInteger;

  if conteo  > 0 then
    begin
    IBQuery2.Close;
    IBQuery2.SQL.Clear;
    IBQuery2.SQL.Add('select a.* from ARTMOV a where a.ARPADREID = '''+llavepadre+'''');
    IBQuery2.Open;

    for i := 0 to conteo do
      begin
        articulo1 := IBQuery2.FieldByName('ARMOVID').AsString;

        if IBQuery2.FieldByName('ARMOVID').AsString = llavepadre+'001' then
          base := floattostr(IBQuery2.FieldByName('AREXISTENCIA').AsInteger)
        else
        if IBQuery2.FieldByName('ARMOVID').AsString = llavepadre+'006' then
          begin
            desarme := floattostr(IBQuery2.FieldByName('AREXISTENCIA').AsInteger)
          end
        else
        if IBQuery2.FieldByName('ARMOVID').AsString = llavepadre+'007' then
          begin
            consignacion := floattostr(IBQuery2.FieldByName('AREXISTENCIA').AsInteger)
          end
        else
        if IBQuery2.FieldByName('ARMOVID').AsString = llavepadre+'009' then
          begin
            apartado := floattostr(IBQuery2.FieldByName('AREXISTENCIA').AsInteger)
          end
        else
        if IBQuery2.FieldByName('ARMOVID').AsString = llavepadre+'010' then
          otros := floattostr(IBQuery2.FieldByName('AREXISTENCIA').AsInteger);

     IBQuery2.Next;
      end;

    nombre_prod.Text := IBQuery1.FieldByName('ARNOMBRE').AsString;

    sg.Cells[0,sg.RowCount-2] := IBQuery1.FieldByName('ARCODIGO').AsString;
    sg.Cells[1,sg.RowCount-2] := IBQuery1.FieldByName('ARCODALT').AsString;
    sg.Cells[2,sg.RowCount-2] := IBQuery1.FieldByName('ARNOMBRE').AsString;
    sg.Cells[3,sg.RowCount-2] := IBQuery1.FieldByName('ARLINEA').AsString;costocol := FormatFloat('##,###,##0.00',IBQuery1.FieldByName('ARCOSTO').AsFloat);
    sg.Cells[4,sg.RowCount-2] := costocol;
    preciocol := FormatFloat('##,###,##0.00',IBQuery1.FieldByName('ARPRECIO1').AsFloat);
    sg.Cells[5,sg.RowCount-2] := preciocol;
    costodol := FormatFloat('##,###,##0.00',IBQuery1.FieldByName('ARCOSTOM2').AsFloat);
    sg.Cells[6,sg.RowCount-2] := costodol;
    preciodol := FormatFloat('##,###,##0.00',IBQuery1.FieldByName('ARPRECIO1M2').AsFloat);
    sg.Cells[7,sg.RowCount-2] := preciodol;
    SG.Cells[8,SG.RowCount-2] := base;
    SG.Cells[9,SG.RowCount-2] := consignacion;
    SG.Cells[10,SG.RowCount-2] := apartado;
    SG.Cells[11,SG.RowCount-2] := desarme;
    SG.Cells[11,SG.RowCount-2] := otros;

    if nombre_prod.Text = '' then
    begin
      showmessage('Codigo del Articulo NO EXISTE !!');
    end;

    codigo_prod.SetFocus;
  end;
  end;
end;

Esto funciona bien, lo que no se, es como hago si coloco los dos botones para que el programa, lea el siguiente registro y el registro anterior, apartir del registro dado.

Gracias

Última edición por Casimiro Notevi fecha: 15-10-2013 a las 16:40:08.
Responder Con Cita