Navegação de registros perfeita usando ADODataSet
05/11/2005
0
Estou tentando fazer uma navegação de registros perfeita no delphi com sql server mas não estou conseguindo, alguem pode me ajudar?
Eu coloquei os paramentros de conexão certinho
ConnectionString := ConnStr;
CommandText := STR_SQL;
CursorLocation := clUseClient;
CursorType := ctKeyset;
Quanbdo eu faço as condições para saber se está em fim ou inicio de registro para mostrar os dados, mas ele sempre no final ou no inicio eu tenho que clicar duas vezes para navegar.
Alguem pode me ajudar??????????????
Grato
Levisants
Posts
05/11/2005
Bon Jovi
05/11/2005
Levisants
ADODataSetCadTransp.Recordset.MoveFirst;
end else begin
if Not ADODataSetCadTransp.Recordset.BOF Then ADODataSetCadTransp.Recordset.MovePrevious;
end;
if Not ADODataSetCadTransp.Recordset.BOF Then exibedados; //mostra os dados no campo
06/11/2005
Bon Jovi
Nao entendi seu objetivo em relacao a esse código. Mas pegue exemplo aqui: http://rapidshare.de/files/7248897/Project1.zip.html (No final da pagina clica no botao [Free] e na prox pagina no final clica em Download: Project1.zip)
06/11/2005
Levisants
Mas num tem como vc me ajudar a fazer usando o recordset?
E porque existe duas opções de uso, a sem o recordset e com o recordset...
06/11/2005
Bon Jovi
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ADODB, StdCtrls; type TForm1 = class(TForm) btnPrimeiro: TButton; btnAnterior: TButton; btnProximo: TButton; btnUltimo: TButton; Edit1: TEdit; procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnPrimeiroClick(Sender: TObject); procedure btnAnteriorClick(Sender: TObject); procedure btnProximoClick(Sender: TObject); procedure btnUltimoClick(Sender: TObject); private { Private declarations } ADOConexao: _connection; ADORecordSet: _Recordset; procedure Mostra; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses ADOInt; procedure TForm1.FormCreate(Sender: TObject); begin ADOConexao := CoConnection.Create; ADORecordSet := CoRecordSet.Create; ADOConexao.CursorLocation := adUseClient; ADORecordSet.CursorLocation := adUseClient; ADORecordSet.CursorType := adOpenStatic; ADORecordSet.LockType := adLockOptimistic; end; procedure TForm1.FormDestroy(Sender: TObject); begin ADORecordSet.Close; ADORecordSet := nil; ADOConexao.Close; ADOConexao := nil; end; procedure TForm1.FormShow(Sender: TObject); begin ADOConexao.Open(´Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd1.mdb;Persist Security Info=False´, ´´, ´´, 0); ADORecordSet.Open(´select nome from tabela´, ADOConexao, adOpenStatic, adLockOptimistic, -1); if ADORecordSet.RecordCount > 0 then Mostra; end; procedure TForm1.Mostra; begin Edit1.Text := VarToStr(ADORecordSet.Fields[´nome´].Value); end; procedure TForm1.btnPrimeiroClick(Sender: TObject); begin if ADORecordSet.AbsolutePosition <= 1 then Exit; ADORecordSet.MoveFirst; Mostra; end; procedure TForm1.btnAnteriorClick(Sender: TObject); begin if ADORecordSet.AbsolutePosition <= 1 then Exit; ADORecordSet.MovePrevious; Mostra; end; procedure TForm1.btnProximoClick(Sender: TObject); begin if (ADORecordSet.AbsolutePosition = ADORecordSet.RecordCount) or (ADORecordSet.AbsolutePosition = -1) then Exit; ADORecordSet.MoveNext; Mostra; end; procedure TForm1.btnUltimoClick(Sender: TObject); begin if (ADORecordSet.AbsolutePosition = ADORecordSet.RecordCount) or (ADORecordSet.AbsolutePosition = -1) then Exit; ADORecordSet.MoveLast; Mostra; end; end.
07/11/2005
Levisants
Eu tentei de diversas maneiras de fazer associar o recordset com o dbgrid e até agora não consegui.
08/11/2005
Bon Jovi
Clique aqui para fazer login e interagir na Comunidade :)