duvida dbgrid + edit
boa tarde gente, gostaria da ajuda de vcs
tenho um formularios de cadastro onde a pessoa tem q cliar num botao q abre um form para selecionar o cliente.
como eu posso fazer para quando a pessoa apetar enter na dbgrid o nome do cliente aparecer no edit?
grato desde ja.
tenho um formularios de cadastro onde a pessoa tem q cliar num botao q abre um form para selecionar o cliente.
como eu posso fazer para quando a pessoa apetar enter na dbgrid o nome do cliente aparecer no edit?
grato desde ja.
Pedro Henrique
Curtidas 0
Mais Respostas
Ricardo
19/05/2014
Digamos que esse DBGrid esteja ligado a um ClientDataSet(mas pode ser outro componente, ou o que você esta usando),
No evento OnCellClick do DBGrid(para clicar com o mouse) / OnKeyPress do DBGrid(para tecla enter) você coloca: edit.Text :='ClientDataSetnome_do_campo.AsString';
ou
edit.Text :='ClientDataSet.FieldByName('nome_do_campo').AsString';
Lembrando que o AsString você usa se estiver trabalhando com um campo do tipo string. Se for outro tipo tem que converter.
No evento OnCellClick do DBGrid(para clicar com o mouse) / OnKeyPress do DBGrid(para tecla enter) você coloca: edit.Text :='ClientDataSetnome_do_campo.AsString';
ou
edit.Text :='ClientDataSet.FieldByName('nome_do_campo').AsString';
Lembrando que o AsString você usa se estiver trabalhando com um campo do tipo string. Se for outro tipo tem que converter.
GOSTEI 0
Pedro Henrique
19/05/2014
meu dbgrib ra ligado a um datasouce.
GOSTEI 0
Romulo Silva
19/05/2014
edit.Text := SuaQuelry.FieldByName('nomedocampo').AsString'
GOSTEI 0
Ricardo
19/05/2014
meu dbgrib ra ligado a um datasouce.
Certo, mas o Dataset do seu DataSource esta ligado a que? é esse componente que você vai colocar no código.
GOSTEI 0
Pedro Henrique
19/05/2014
no caso a minha dbgrid ta ligada com o datasource q ta ligado com uma Zreadonlyquery do componente Zeos
GOSTEI 0
Ricardo
19/05/2014
Putz nunca precisei usar o Zeus pra nada, por isso nem conheço os seus componentes direito.
Mas enfim, se ele for equivalente a uma query por exemplo, pode ser que funcione ou não se você colocar
Zreadonlyquery.FieldByName('campo').AsXXXXX
Enfim tenho que procurar mais informações sobre o componente para ser mais preciso, mas mesmo assim tenta aí.
Mas enfim, se ele for equivalente a uma query por exemplo, pode ser que funcione ou não se você colocar
Zreadonlyquery.FieldByName('campo').AsXXXXX
Enfim tenho que procurar mais informações sobre o componente para ser mais preciso, mas mesmo assim tenta aí.
GOSTEI 0
Pedro Henrique
19/05/2014
deu certo nao, sempre da esse erro. segue imagem[img]http://arquivo.devmedia.com.br/forum/imagem/359568-20140521-123252.png[/img]
GOSTEI 0
Deivison Melo
19/05/2014
O erro que está ocorrendo agora é devido o delphi está tentando abrir um objeto que já está aberto e na memória, sendo necessário verificar com o comando: Assigned antes de abrir novamente ou está tentando acessar um objeto que ainda não foi instanciado pelo delphi.
Já referente a sua dúvida:
E algum dos eventos do DBGrid vc coloca o comando abaixo, ou no DblClick (quando houver um duplo clique):
edtCodCli.Text := dbgConsulta.Columns[0].Field.AsString; // onde o 0 é o index da coluna
edtNomeCli.Text := dbgConsulta.Columns[1].Field.AsString; // onde o 1 é o index da coluna
Abração e bons códigos, espero ter ajudado!
Qualquer dúvida postar para ajudarmos da melhor forma possível!!
Já referente a sua dúvida:
E algum dos eventos do DBGrid vc coloca o comando abaixo, ou no DblClick (quando houver um duplo clique):
edtCodCli.Text := dbgConsulta.Columns[0].Field.AsString; // onde o 0 é o index da coluna
edtNomeCli.Text := dbgConsulta.Columns[1].Field.AsString; // onde o 1 é o index da coluna
Abração e bons códigos, espero ter ajudado!
Qualquer dúvida postar para ajudarmos da melhor forma possível!!
GOSTEI 0
Pedro Henrique
19/05/2014
mt obrigado Deivison, sua dica deu certo. vlw cara :)
GOSTEI 0
Pedro Henrique
19/05/2014
desculpe encher o saco de vcs, quando eu fiz a parte de edita um cadastro passando os dados por parametro deu o seginte erro(imagem) nao consigo encontrar o erro. sera q vcs poderiam me ajudar?
[img]http://arquivo.devmedia.com.br/forum/imagem/359568-20140522-135527.png[/img]
codigo:
[img]http://arquivo.devmedia.com.br/forum/imagem/359568-20140522-135527.png[/img]
codigo:
with DM.DataM.ZQueryCadCli do
begin
SQL.Clear;
SQL.Add('UPDATE cliente SET)');
SQL.Add(' nomecli = :nomecli,)');
SQL.Add(' telcli = :telcli,)');
SQL.Add(' endcli = :endcli,)');
SQL.Add(' obscli = :obscli,)');
SQL.Add(' idadecli = :idadecli,)');
SQL.Add(' dtnasccli = :dtnasccli)');
SQL.Add('WHERE codcli = :codcli)');
ParamByName('nomecli').AsString := EditNomeCli.Text;
ParamByName('telcli').AsString := EditTelCli.Text;
ParamByName('endcli').AsString := EditEndCli.Text;
ParamByName('obscli').AsString := MemoObsCli.Text;
ParamByName('idadecli').AsInteger := StrToInt(EditIdadeCli.Text);
ParamByName('dtnasccli').AsDate := DtNascEdit.Date;
ParamByName('codcli').AsInteger := StrToInt(LabelCodCli.Caption);
ExecSQL;
end;GOSTEI 0
Lourival Queiroz
19/05/2014
Eu passei por esse problema a tempo, e resolvi criando um padrão de pesquisa e outro de manutenção. A ideia é facilitar a manutenção do sistema e ter apenas um Form para pesquisa e outro para manutenção (Incluir/Alterar). Nos Forms padrões eu faço todos os códigos básicos (Abertura de query, tratamento enter, help, botões, etc), e as exceções ficam no Form herdado. Abaixo um exemplo simples de ambos.
Form de Pesquisa (Exclui/Imprime nesse form) (Inclui/Altera efetua chamada no form de manutenção):
[img]http://arquivo.devmedia.com.br/forum/imagem/318028-20140522-151813.png[/img]
Form de Manutenção (Inclusão/Alteração) os campos são associados a query do form de pesquisa:
[img]http://arquivo.devmedia.com.br/forum/imagem/318028-20140522-151759.png[/img]
Com isso economizei tempo pra desenvolver o sistema.
Espero que vc possa solucionar teu problema.
Form de Pesquisa (Exclui/Imprime nesse form) (Inclui/Altera efetua chamada no form de manutenção):
[img]http://arquivo.devmedia.com.br/forum/imagem/318028-20140522-151813.png[/img]
Form de Manutenção (Inclusão/Alteração) os campos são associados a query do form de pesquisa:
[img]http://arquivo.devmedia.com.br/forum/imagem/318028-20140522-151759.png[/img]
Com isso economizei tempo pra desenvolver o sistema.
Espero que vc possa solucionar teu problema.
GOSTEI 0
Pedro Henrique
19/05/2014
criei um form para cadastrar,editar e excluir cada funcao separada por uma tab.
pra editar eh assim: o operador seleciona o cliente numa dbgrib e as informacoes aparece direto nos edits, dai edito como quer ai depois do um Update no banco passando as novas infor pro parametro.
pra editar eh assim: o operador seleciona o cliente numa dbgrib e as informacoes aparece direto nos edits, dai edito como quer ai depois do um Update no banco passando as novas infor pro parametro.
GOSTEI 0
Ricardo Araujo
19/05/2014
conseguiu resolver o seu problema ?
GOSTEI 0
Pedro Henrique
19/05/2014
ainda nao, da o mesmo erro ainda. ele nao ta encontrando as info. nem no update nem do delete.
GOSTEI 0
Nelson Santos
19/05/2014
ganhe dinheiro com softwares 3D com Delphi 7
http://www.3dsistemas.com.br
http://www.3dsistemas.com.br
GOSTEI 0
Lourival Queiroz
19/05/2014
Em todos os campos para update vc tinha colocado um ")" sem necessidade. Compare com o teu update
with DM.DataM.ZQueryCadCli do
begin
SQL.Clear;
SQL.Add('UPDATE cliente SET ');
SQL.Add(' nomecli = :nomecli, ');
SQL.Add(' telcli = :telcli, ');
SQL.Add(' endcli = :endcli, ');
SQL.Add(' obscli = :obscli, ');
SQL.Add(' idadecli = :idadecli, ');
SQL.Add(' dtnasccli = :dtnasccli ');
SQL.Add('WHERE codcli = :codcli ');
ParamByName('nomecli').AsString := EditNomeCli.Text;
ParamByName('telcli').AsString := EditTelCli.Text;
ParamByName('endcli').AsString := EditEndCli.Text;
ParamByName('obscli').AsString := MemoObsCli.Text;
ParamByName('idadecli').AsInteger := StrToInt(EditIdadeCli.Text);
ParamByName('dtnasccli').AsDate := DtNascEdit.Date;
ParamByName('codcli').AsInteger := StrToInt(LabelCodCli.Caption);
ExecSQL;
end;
GOSTEI 0
Pedro Henrique
19/05/2014
kkkkkkkkk, verdade. noa tinha visto isso. aff erro de amador.
mt obrigado lorival. desculpe a demora pra responder.
mt obrigado lorival. desculpe a demora pra responder.
GOSTEI 0
Deivison Melo
19/05/2014
Finalizando o post!!
Abração a todos e bons códigos!!!
Abração a todos e bons códigos!!!
GOSTEI 0
Lucas Mees
19/05/2014
Eu utilizo o Componente Zeos mas acho que n influencia no seu caso vou lha passar um pedaço do codigo que eu fiz para isto
utilizando o OnDblClick, mas acho que o procedimento é igual para os demais eventos
os If's são para verificar se o campo do banco esta vazio ou nulo
ai ele pula para o proximo if e não passa para o edit pq no meu caso ele ocorre um erro de tipos de valores incorretos.
utilizando o OnDblClick, mas acho que o procedimento é igual para os demais eventos
os If's são para verificar se o campo do banco esta vazio ou nulo
ai ele pula para o proximo if e não passa para o edit pq no meu caso ele ocorre um erro de tipos de valores incorretos.
if (DM_Agenda.tbl_compromisso.FieldByName ('descricao_compromisso').Value <> '') then
EdDescricao.Text := DM_Agenda.tbl_compromisso.FieldByName ('descricao_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName ('data_inicio_compromisso').Value <> null) then
EdDtInicio.Date := DM_Agenda.tbl_compromisso.FieldByName ('data_inicio_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName ('data_fim_compromisso').Value <> null) then
EdDtFim.Date := DM_Agenda.tbl_compromisso.FieldByName ('data_fim_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName ('hora_inicio_compromisso').Value <> null) then
EdHoraInicio.Text := DM_Agenda.tbl_compromisso.FieldByName ('hora_inicio_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName('hora_fim_compromisso').Value <> null) then
EdHoraFim.Text := DM_Agenda.tbl_compromisso.FieldByName('hora_fim_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName ('rua_compromisso').Value <> null) then
EdRua.Text := DM_Agenda.tbl_compromisso.FieldByName ('rua_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName('lembrete_popup_compromisso').Value <> Null) then
rbPopUp.Checked := DM_Agenda.tbl_compromisso.FieldByName('lembrete_popup_compromisso').Value;
if (DM_Agenda.tbl_compromisso.FieldByName('lembrete_email_compromisso').Value <> Null) then
rbEmail.Checked := DM_Agenda.tbl_compromisso.FieldByName('lembrete_email_compromisso').Value;
GOSTEI 0