Fórum Abrir form em determinado registro #227546

22/04/2004

0

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

Responder

Posts

22/04/2004

Vinicius2k

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+


Responder

Gostei + 0

22/04/2004

Lucas Silva

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.


Responder

Gostei + 0

22/04/2004

Vinicius2k

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

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


T+


Responder

Gostei + 0

22/04/2004

Edkardoso

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!


Responder

Gostei + 0

22/04/2004

Vinicius2k

Colega,

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

T+


Responder

Gostei + 0

22/04/2004

Edkardoso

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.


Responder

Gostei + 0

22/04/2004

Sgubert

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


Responder

Gostei + 0

22/04/2004

Lucas 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.


Responder

Gostei + 0

22/04/2004

Edkardoso

[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 ?


Responder

Gostei + 0

22/04/2004

Vinicius2k

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+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar