Erro quando seleciona a informação no DBGrid
Boa noite,
Estou desenvolvendo um pequeno Software para minha empresa, e notei um problema em alguns DBGrid's. quando tento selecionar uma determinada linha para alterar sempre retorna os valores da primeira linha do DBGrid.
Alguém sabe me dizer porque isso acontece???
desde já muito obrigado.
Estou desenvolvendo um pequeno Software para minha empresa, e notei um problema em alguns DBGrid's. quando tento selecionar uma determinada linha para alterar sempre retorna os valores da primeira linha do DBGrid.
Alguém sabe me dizer porque isso acontece???
desde já muito obrigado.
Erivan Silva
Curtidas 0
Respostas
Alessandro Folk
22/02/2013
Bom dia...
quais os componentes você esta utilizando?
Grid: ???
componente de conexão: ???
Esta alteração que você citou seria em algum outro componente?
Ex:
você tem a grid para visualizar os registros e conforme vai mudando de linha quer fazer a alteração em alguma DbEdit?
se for, você esta usando o mesmo DataSource? caso contrario no evento OnDataChange do DataSource da Grid é que você deve abrir seu dataSet de manutenção passando como parametro o registro da grid!
ou a alteração será feita diretamente na DbGrid?
quais os componentes você esta utilizando?
Grid: ???
componente de conexão: ???
Esta alteração que você citou seria em algum outro componente?
Ex:
você tem a grid para visualizar os registros e conforme vai mudando de linha quer fazer a alteração em alguma DbEdit?
se for, você esta usando o mesmo DataSource? caso contrario no evento OnDataChange do DataSource da Grid é que você deve abrir seu dataSet de manutenção passando como parametro o registro da grid!
ou a alteração será feita diretamente na DbGrid?
GOSTEI 0
Erivan Silva
22/02/2013
Rapaz acontece é o seguinte:
no DBgrid do Cadastro de Usuários eu posso da um duplo click e selecionar um determinado usuário para fazer a alteração de senha, permissão, login, etc... no entanto quando eu escolho um determinado usuário para fazer a alteração em algum destes campos ele não me retorna o usuário selecionado, retorna o primeiro usuário da lista.
Estou utilizando os seguintes componentes:
IBQuery: conexão com a tabela.
DataSource: conexão com componentes.
DBGrid: Visualização dos dados.
Edit: para preenchimento de informações.
Não utilizo DBEdit.
no DBgrid do Cadastro de Usuários eu posso da um duplo click e selecionar um determinado usuário para fazer a alteração de senha, permissão, login, etc... no entanto quando eu escolho um determinado usuário para fazer a alteração em algum destes campos ele não me retorna o usuário selecionado, retorna o primeiro usuário da lista.
Estou utilizando os seguintes componentes:
IBQuery: conexão com a tabela.
DataSource: conexão com componentes.
DBGrid: Visualização dos dados.
Edit: para preenchimento de informações.
Não utilizo DBEdit.
GOSTEI 0
Perivaldo Martins
22/02/2013
Rapaz acontece é o seguinte:
no DBgrid do Cadastro de Usuários eu posso da um duplo click e selecionar um determinado usuário para fazer a alteração de senha, permissão, login, etc... no entanto quando eu escolho um determinado usuário para fazer a alteração em algum destes campos ele não me retorna o usuário selecionado, retorna o primeiro usuário da lista.
Estou utilizando os seguintes componentes:
IBQuery: conexão com a tabela.
DataSource: conexão com componentes.
DBGrid: Visualização dos dados.
Edit: para preenchimento de informações.
Não utilizo DBEdit.
no DBgrid do Cadastro de Usuários eu posso da um duplo click e selecionar um determinado usuário para fazer a alteração de senha, permissão, login, etc... no entanto quando eu escolho um determinado usuário para fazer a alteração em algum destes campos ele não me retorna o usuário selecionado, retorna o primeiro usuário da lista.
Estou utilizando os seguintes componentes:
IBQuery: conexão com a tabela.
DataSource: conexão com componentes.
DBGrid: Visualização dos dados.
Edit: para preenchimento de informações.
Não utilizo DBEdit.
Como está se código no Duplo Click?
Boa sorte e bons códigos!
GOSTEI 0
Erivan Silva
22/02/2013
Código do Duplo Clique no DBGrid, o código que preenche os edites está a baixo.
if (frmPrincipal.permissao < 2) or
(dm.V_users.Fields[0].AsInteger = frmPrincipal.user) then
begin
LiparEdit;
try
senha := Crypt('D', dm.V_users.Fields[5].Text);
Edit3.Text := senha;
preencherEdits;
except
on EConvertError do
begin
MessageBox(0, 'Impossível descriptografar a senha!' + #13 +
'Talves a senha não exista ou não esteja criptografada, procure o Administrador do sistema'
+ #13 + 'Erivan Alves - Fone: 73-9155-0021 ou 73-3525-7843',
'Erro de Criptografia', 16);
Edit3.Clear;
preencherEdits;
end
else // if (frmPrincipal.permissao > frmPrincipal.user) then
begin
MessageBox(0,
'Erro não identificado, procure o administrador do sistema' + #13 +
'Erivan Alves - Fone: 73-9155-0021 ou 73-3525-7843', 'Erro', 16);
preencherEdits;
end;
end;
end
else
begin
MessageBox(0, 'Você não pode realizar essa opração: ' + #13 +
'Você só tem permissão para alterar sua propria senha!', 'Erro', 16);
edtNome.SetFocus;
end;
Função para preencher os edits.
with dm.V_users do
begin
if (dm.V_users.Fields[2].AsInteger <> 0) then
begin
edtLote.Enabled := false;
end
else if (dm.V_users.Fields[2].AsInteger = frmPrincipal.user) then
begin
edtLote.Enabled := true;
end;
id := Fields[0].AsInteger;
permissao := Fields[2].AsInteger;
edtNome.Text := Fields[1].Text;
Edit2.Text := Fields[3].Text;
edtLote.Text := Fields[6].Text;
end;
if dm.qUser.Fields[4].Text = 'S' then
begin
CheckBox1.Checked := true;
end
else
begin
CheckBox1.Checked := false;
end;
tipo(permissao);
Button1.Enabled := false;
Button2.Enabled := true;
Button3.Enabled := true;
dbgLote.Visible := false;
senha := '';
edtNome.SetFocus;
if (frmPrincipal.permissao < 2) or
(dm.V_users.Fields[0].AsInteger = frmPrincipal.user) then
begin
LiparEdit;
try
senha := Crypt('D', dm.V_users.Fields[5].Text);
Edit3.Text := senha;
preencherEdits;
except
on EConvertError do
begin
MessageBox(0, 'Impossível descriptografar a senha!' + #13 +
'Talves a senha não exista ou não esteja criptografada, procure o Administrador do sistema'
+ #13 + 'Erivan Alves - Fone: 73-9155-0021 ou 73-3525-7843',
'Erro de Criptografia', 16);
Edit3.Clear;
preencherEdits;
end
else // if (frmPrincipal.permissao > frmPrincipal.user) then
begin
MessageBox(0,
'Erro não identificado, procure o administrador do sistema' + #13 +
'Erivan Alves - Fone: 73-9155-0021 ou 73-3525-7843', 'Erro', 16);
preencherEdits;
end;
end;
end
else
begin
MessageBox(0, 'Você não pode realizar essa opração: ' + #13 +
'Você só tem permissão para alterar sua propria senha!', 'Erro', 16);
edtNome.SetFocus;
end;
Função para preencher os edits.
with dm.V_users do
begin
if (dm.V_users.Fields[2].AsInteger <> 0) then
begin
edtLote.Enabled := false;
end
else if (dm.V_users.Fields[2].AsInteger = frmPrincipal.user) then
begin
edtLote.Enabled := true;
end;
id := Fields[0].AsInteger;
permissao := Fields[2].AsInteger;
edtNome.Text := Fields[1].Text;
Edit2.Text := Fields[3].Text;
edtLote.Text := Fields[6].Text;
end;
if dm.qUser.Fields[4].Text = 'S' then
begin
CheckBox1.Checked := true;
end
else
begin
CheckBox1.Checked := false;
end;
tipo(permissao);
Button1.Enabled := false;
Button2.Enabled := true;
Button3.Enabled := true;
dbgLote.Visible := false;
senha := '';
edtNome.SetFocus;
GOSTEI 0