Abrir form em determinado registro

Delphi

22/04/2004

Tenho um form (form1) que contém um dbgrid. Este dbgrid mostra uma tabela que contém os campos: Contrato, ID, Referência. Tenho um botão que abre outro form (form2), contudo gostaria que ele abrisse no registro correspondente ao que foi selecionado no dbgrid do form1.

obs.: A tabela do form2 lógicamente tb tem o campo ID.

valeu e muito obrigado.


Edkardoso

Edkardoso

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

22/04/2004

Colega,

Supondo : no Form1 => Table1 no Form2 => Table2, no OnClick do botão vc entra com o código antes do método Form2.ShowModal :
Form2.Table2.Locate(´ID´, Table1.ID.Value,[]´);


Espero ter ajudado...

T+


GOSTEI 0
Lucas Silva

Lucas Silva

22/04/2004

Dê uma olhada no código
// isso é na hora de chamar o form2;

with qry_do_dbgrid do
  begin
    Close;
    Sql.Clear;
    SQl.Add(´select * from tabela where ID = ´´´+edtid.text+´´´ ´);
    // supondo que o id esteja no "edtid"
    Open;
    // blz, agora a query já esta apontada p/ o registo.
  end;


form2 := TForm2.Create;


Se você tiver alguma dúvida ai, me dá o toque.


GOSTEI 0
Vinicius2k

Vinicius2k

22/04/2004

Desculpe-me,
Form2.Table2.Locate(´ID´, Table1.ID.Value,[]´);

Leia-se :
Form2.Table2.Locate(´ID´, Table1.ID.Value,[]);


T+


GOSTEI 0
Edkardoso

Edkardoso

22/04/2004

Colega, Supondo : no Form1 => Table1 no Form2 => Table2, no OnClick do botão vc entra com o código antes do método Form2.ShowModal :
Form2.Table2.Locate(´ID´, Table1.ID.Value,[]´);
Espero ter ajudado... T+


Infelizmente não deu certo amigo, pode ser q eu esteja cometendo algum erro. O meu código está assim:

procedure TfrmFat.BitBtn1Click(Sender: TObject);
begin
Application.CreateForm(TfrmFaturamento, frmFaturamento);
frmFaturamento.atDados.Locate(´IDdoFaturamento´,frmFat.ADOTable1IDdoFaturamento.Value,[]);
frmFaturamento.ShowModal;

end;


Dá um erro de excessão.

obs:
frmFat = Form1
frmFaturamento=Form2


Valeu!


GOSTEI 0
Vinicius2k

Vinicius2k

22/04/2004

Colega,

O projeto compila?
Qual a excessão levantada? (mensagem)

T+


GOSTEI 0
Edkardoso

Edkardoso

22/04/2004

Colega, O projeto compila? Qual a excessão levantada? (mensagem) T+


Compila perfeitamente.
A excessão é a seguinte:
´Access violation at address 004FC87B in modelu ´prjfat.exe´. Read of address 00000304. Process stopped. Use step ou run to continue.

Brigadão!

obs.: Te cadastrei no meu Messenger.


GOSTEI 0
Sgubert

Sgubert

22/04/2004

Eu faria da seguinte forma:

Colocaria no form2 uma query com um parametro :id.
no evento on show do form pego a lina que esta selecionada no form1 passo o id como parametro para a query e abro ela......pronto, o que vc precisa estara lá.....

abraço


GOSTEI 0
Lucas Silva

Lucas Silva

22/04/2004

Eu faria da seguinte forma: Colocaria no form2 uma query com um parametro :id. no evento on show do form pego a lina que esta selecionada no form1 passo o id como parametro para a query e abro ela......pronto, o que vc precisa estara lá..... abraço


eu tambem acho bem mais simples desta forma.


GOSTEI 0
Edkardoso

Edkardoso

22/04/2004

[quote:5178093c7c=´Lucas Alves Silva´]
Eu faria da seguinte forma: Colocaria no form2 uma query com um parametro :id. no evento on show do form pego a lina que esta selecionada no form1 passo o id como parametro para a query e abro ela......pronto, o que vc precisa estara lá..... abraço


eu tambem acho bem mais simples desta forma.[/quote:5178093c7c]

e como eu passo o parâmetro ?


GOSTEI 0
Vinicius2k

Vinicius2k

22/04/2004

Colegas,

Concordo que seria a melhor forma se o que o edkardoso quisesse fosse um filtro... mas no meu entender ele deseja apenas posicionar o cursor na segunda [color=red:4c6be1e2fa]tabela[/color:4c6be1e2fa].


edkardoso, normalmente, as exceções de Access Violation ocorrem quando se tenta acessar um objeto que não existe...
Os nomes do campos estão corretos?
o método locate : Locate(´Campo_para_localizar´,Valor_a_localizar,[]´);

vc pode tentar também desta forma :
frmFaturamento.atDados.Locate(´IDdoFaturamento´,frmFat.ADOTable1.FieldByName(´IDdoFaturamento´).Value,[]);


T+


GOSTEI 0
POSTAR