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 := sg.RowCount + 1;
if IBQuery2.FieldByName('contador').AsInteger = 0 then
begin
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