Fórum Código em um DBGrid? #294488
05/09/2005
0
Joule
Curtir tópico
+ 0Posts
05/09/2005
Steve_narancic
edit1.text := dbgDados.Fields[0].Value;
Gostei + 0
05/09/2005
Steve_narancic
Gostei + 0
05/09/2005
Massuda
var S: string; ... // se souber a posição da coluna no grid S := DBGrid1.Columns[NumeroDaColuna].Field.AsString; // se souber a posição do campo na tabela S := DBGrid1.Fields[NumeroDoCampo].AsString; // do campo/coluna selecionado no grid S := DBGrid1.SelectedField.AsString; ...
Para escolher uma determinada linha do grid, você pode dar um Locate no DataSet ligado ao DataSource do DBGrid.
A linha atual do DBGrid é sempre o registro atual do DataSet ligado ao DataSource do DBGrid.
Gostei + 0
05/09/2005
Martins
// Se vc clicar na celula desejada ele transfere o conteúdo do campo // nome para o Edit procedure TForm1.DBGrid1CellClick(Column: TColumn); begin Edit1.Text := Md.cdsContas.FieldbyName(´Nome´).AsString; end; // Aqui ele transfere o conteúdo do campo nome para o Edit quando // vc utiliza as teclas de navegação procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Edit1.Text := Md.cdsContas.FieldbyName(´Nome´).AsString; end; // Ao entrar no grid ele já transfere o valor do campo nome atual para // o Edit. procedure TForm1.DBGrid1Enter(Sender: TObject); begin Edit1.Text := Md.cdsContas.FieldbyName(´Nome´).AsString; end;
Como disse logo acima não sei se é o q vc precisa, mas tem as dicas do restante do pessoal aqui que manja pra carambas, vale conferir.
Um forte abraço!!!
Boa Sorte!!!
Retorna para dizer qual foi a solução, preciso adicionar novas dicas em meus doc.
Gostei + 0
05/09/2005
Joule
a rotina é essa que estou usando:
var
Valor_DBGrid : Integer;
begin
Valor_DBGrid := DBGrid1.SelectedField.AsInteger;
frmDM.cdsMov.Close;
frmDM.cdsMov.Params.ParamByName(´CodMov´).AsInteger:= Valor_DBGrid;
frmDM.cdsMov.Open;
if not (frmDM.cdsMov.IsEmpty) then
begin
frmDM.cdsMov.Edit;
frmDM.cdsMovTEMPO_TOTAL.AsDateTime :=
frmDM.cdsMovHORAINICIO.AsDateTime-frmDM.cdsMovHORAFINAL.AsDateTime;
frmDM.cdsMov.Post;
try
frmDM.cdsMov.ApplyUpdates(0);
ShowMessage( ´Os dados foram gravados no Banco de Dados.´ );
except
ShowMessage( ´Erro ao tentar salvar informações no Banco de Dados.´ );
end;
frmDM.cdsVerMov.Close;
frmDM.cdsVerMov.Open;
end;
Gostei + 0
05/09/2005
Massuda
Gostei + 0
05/09/2005
Joule
mais ainda tá apareceu esse erro: ´Unable to find record. No key specified´
Gostei + 0
05/09/2005
Martins
Os dados em seu DbGrid são de outro CDS certo?
vc está selecionando o registro no DbGrid e depois retornando para outra tela, ou é tudo em uma tela só?
Post um comentário sobre seu objetivo com esse código.
Gostei + 0
05/09/2005
Joule
Gostei + 0
05/09/2005
Martins
Edit2.Text := DbGrid1.SelectedField.DataSet.FieldByName(´Nome´).AsString;
Espero q possa lhe ajudar!!!
Boa sorte!!!
Martins
Gostei + 0
05/09/2005
Joule
fiz assim:
frmDM.cdsMov.Close;
frmDM.cdsMov.Params.ParamByName(´CodMov´).AsInteger:= DbGrid1.SelectedField.DataSet.FieldByName(´CodMov´).AsInteger;
frmDM.cdsMov.Open;
if not (frmDM.cdsMov.IsEmpty) then
begin
frmDM.cdsMov.Edit;
frmDM.cdsMovTEMPO_TOTAL.AsDateTime :=
frmDM.cdsMovHORAINICIO.AsDateTime-frmDM.cdsMovHORAFINAL.AsDateTime;
frmDM.cdsMov.Post;
try
frmDM.cdsMov.ApplyUpdates(0);
ShowMessage( ´Os dados foram gravados no Banco de Dados.´ );
except
ShowMessage( ´Erro ao tentar salvar informações no Banco de Dados.´ );
end;
frmDM.cdsVerMov.Close;
frmDM.cdsVerMov.Open;
end;
mais ainda tá apareceu esse erro: ´Unable to find record. No key specified´
Gostei + 0
05/09/2005
Martins
Gostei + 0
05/09/2005
Joule
Gostei + 0
05/09/2005
Martins
Estamos aqui para ajudar, por isso sempre q precisar, é só postar.
Boa sorte!!!
Martins
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)