Fórum Puxar dados de outro Formulario #445213

12/06/2013

0

Boa Noite Pessoal, tenho um formulario princiapal com uma tabela com o campo erro, porem esse campo erro vai puxar os dados de um outro formulario com uma tabela secundaria, normalmente eu faço isso com DBLookUpComboBox, porem esse campo tem muita informação, qual componente vc's me indicariam? Para ficar uma coisa mais bacana eu pensei em: quando o usuario clicar nesse campo ele me abre esse formulario secundario eu navegava por ele criava um botão selecionar, esse botao salvava esse registro nesse campo fecharia o formulario secundario e eu continuaria preenchendo o formulario principal. Alguem poderia me ajudar nessa complexa situação. Estou usando banco de dados firebird.

Obrigado, a todos, aguardo uma ajuda.

Att, Felipe.
Felipe Arruda

Felipe Arruda

Responder

Posts

12/06/2013

Joel Rodrigues

Essa forma que você citou é interessante. Você pode fazer assim:
1) Declarar variáveis públicas no form secundário;
2) Ao selecionar o registro, preencher essas variáveis (com Código, Id, Nome, etc);
3) No form principal, você chama o form secundário e após o ShowModal, acessa essas variáveis (afinal, são públicas).
Veja um exemplo:
formClientes := TformClientes.Create(Application);
formClientes.ShowModal();
codigoCliente := formClientes.CodigoClienteSelecionado;

Essa é uma forma, mas você poderia muito bem acessar a tabela que está no form secundário direto:
formClientes := TformClientes.Create(Application);
formClientes.ShowModal();
codigoCliente := formClientes.queryClientes.FieldByName('Codigo').AsString;


Qualquer coisa, é só falar.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Bom dia Joel, cidade boa Natal, tive ai mes passado....heheheh. E desde ja fico agradecido a ajuda.
Vamos la, como sou iniciante em delphi gostaria de uma ajuda mais detalhada.

1) Eu declaro a variavel no FRSecundario, seria isso?

private
{ Private declarations }
public
{ Public declarations }
end;

var
FRPrimario: TFRPrimario;

implementation

uses unitprimario;


2) Essa segunda citação tenho que fazer algo ou ja esta incluso no codigo a frente?

3) O cdigo que vc citou abaixo eu o coloco no FRPrimario? Em qual evento do Formulario? Onde vc cita formClientes, seria meu FRSecundario? o codigocliente que vc tambem citou e uma variavel "var", tenho que cita la também?

Obrigado, aguardo, tenha um bom dia.
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Opa, tudo em paz?
Rapaz, nesse caso sugiro que você faça da segundo forma que eu citei. Vai ser mais rápido e mais fácil pra você~, além de atender bem sua necessidade.

O formClientes que citei é o form secundário sim, no seu caso, o FRSecundario.

Com relação a em que evento fazer o procedimento, aí depende de você, se vai ser em um botão ou em outro controle, por exemplo.

Abraço.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Ok, mas qual componente eu vou usar para mostrar esses dados em meu formulario principal?
esse codigocleinte que vc citou no seu codigo o que seria?
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

codigoCliente seria uma variável declarada no form principal. O que eu quis dizer foi que você pode pegar o conteúdo de uma query que está em outro form e fazer o que quiser: atribuir a uma variável, mostrar em um edit, label, etc.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Boa Tarde, uma variavel codigocliente : String;??
Posso mostrar em um DBMemo, ele ligado a minha tabela principal, pois esses dados tem que ficar salvos no banco de dados, a ele tenho um IBTable e um DataSource, não tenho nenhuma query, e necessario essa query?
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Funciona da mesma forma par o IBTable.
E como eu disse, uma vez acessado o valor, você pode fazer o que quiser com ele, inclusive mostrar em um Memo.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Boa Tarde, fiz o seguinte no meu formulario primario tenho um DBMemo que esta ligado ao DataSource1 e um IBTable1, no evento dele onchange coloquei:

procedure TFRAtendimento.DBMemo1Change(Sender: TObject);
var
codigocliente : String;

begin
FRSecundario := TFRSecundario.Create(Application);
FRFRSecundario.ShowModal();
codigoCliente := FRSecundario.IBTable1.FieldByName('Codigo').AsString;
end;

Os erros foram: inves de abrir o formulario primario, abre o secundario, ok. O outro erro e o seguinte, fecho os formularios secundarios para voltar para o primario, quando eu clico no DBMemo abre o formulario secundario, ate ai certo, porem, quero que abra o formualario eu escolha um dos registro da minha tabela que esta sendo mostrada em um DBGrid e ele preenche automaticamento esse campo no meu formulario primario. exemplo que vc me passou so esta abrindo o formulario.
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Sobre os erros:
1) Está abrindo o form secundário: ora, e não é essa a intenção? Abrir o form secundário para que nele o usuário selecione um registro?
2) Você colocou no evento OnChange do Memo, isso não é bom. Utilize um botão ou algo do tipo.
3) Você atribuiu o retorno a uma variável, mas não fez nada relacionado ao memo. Precisaria colocar a variável dentro do memo, por exemplo:
DBMemo1.Lines.Add('Cliente: ' + codigoCliente);
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Ok. A primeira situação foi resolvida, foi erro meu aqui.
a variavel dentro do memo, seria assim:

var
codigocliente : String;

begin
DBMemo1.Lines.Add('Cliente: ' + codigoCliente);
end;
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Não, não.. essa linha deve ser adicionada após aquelas outras 3 que já tem.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Boa Noite, fiz aqui, porem o que esta acontecendo. Abre o form principal clico no botão com os codigo abaixo, abre o form secundario que neste meu caso e o FRErro, clico no registro que desejo ser salvo no campo ERRO/PROBLEMA do form princiapl, fecho o form secundario, os dados desejados aparecem no campo ERRO/PROBLEMA do form principal, porem aparece assim: "ERRO/PROBLEMA: E AQUI OS DADOS QUE FORAM PUXADOS DO FORM SECUNDARIO"

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
codigocliente : String;

begin
FRErro := TFRErro.Create(Application);
FRErro.ShowModal();
codigoCliente := FRErro.IBTable1.FieldByName('ERRO/PROBLEMA').AsString;
DBMemo1.Lines.Add('ERRO/PROBLEMA: ' + codigoCliente);
end;
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Não entendi o que está errado, para mim você descreveu o procedimento como deveria ser.
Responder

Gostei + 0

12/06/2013

Felipe Arruda

Se eu clicar no campo no form principal onde foi puxado do form secundario, os dados somi.
Posso te passar a aplicação para vc ver?
Responder

Gostei + 0

12/06/2013

Joel Rodrigues

Como assim no campo em que o form secundáriofoi puxado? O form secundário está sendo chamado a prartir de um botão.
Responder

Gostei + 0

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

Aceitar