Ir para conteúdo
Fórum Script Brasil
  • 0

Pegar o código do Registro exibido no DBGrid


RafaelemeNt

Pergunta

Boa noite senhores.

Gostaria de algumas dicas de vocês para conseguir implementar um pequeno controle de cheques. Funciona da seguinte forma: eu tenho uma tabela cheques

Tabela: Cheques

codigo = int, autoinc, notnull

valor = double(9,2)

[... alguns outros campos para caracterizar um cheque ...]

compensado = boolean

A idéia é que a consulta realizada pelo programa retorne todos os cheques que NÃO estão compensados, ou seja, todos cujo campo "compensado" é "false". Eu consigo fazer a pesquisa, e exibo os resultados em um grid, da seguinte forma:

baixa_cheque956.jpg

O que eu pretendo:

Assim que o usuário selecionar uma linha do Grid, e clicar em "DAR BAIXA", o programa altere o campo "compensado" da tabela CHEQUES de false para true. Porém eu não faço a mínima idéia de como fazer isso. Vale lembrar que a pesquisa funciona corretamente, o DBGrid já está padronizado para essa finalidade, com as opções dgEditing (false), dgRowSelect (true), dgMultiSelect (true).

Se algum dos colegas puder me dar uma dica sobre o que procurar, ou dar um exemplo de como fazer, vou agradecer muito.

As pesquisas no google sobre DBGrid só retornam sobre "zebrar o grid" e "colocar combobox no grid" ;/

Desde já, agradeço a atenção de todos! Obrigado

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

RafaelemeNt...

Eu já fiz algo parecido com o que você esta querendo, eu usei um "Update" para modificar a tabela e atualizei o DBGrid abrindo e fechando a table ou query que eu estava usando para passar os dados para o DBGrid.

O código fica mais ou menos assim:

Query1.SQL.Add('UPDATE tabela SET coluna1=value, coluna2=value2 WHERE colun3=value3');
  Query1.ExecSQL;
  Query1.Active:= false;
  Query1.Active:= true;

Espero ter ajudado

falou abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela dica Victor_DF

Talvez eu não tenha explicado direito minha dúvida, que seria relativo a "coluna3=value3":

O código fica mais ou menos assim:

Query1.SQL.Add('UPDATE tabela SET coluna1=value, coluna2=value2 WHERE colun3=value3');
  Query1.ExecSQL;
  Query1.Active:= false;
  Query1.Active:= true;
Como saber o parâmetro para comparar? Explicando melhor: baixa_cheque956.jpg Supondo que eu selecione a terceira linha e clique em dar baixa: como será o código para que o programa faça o update no REGISTRO da tabela relativo à linha número 3. Eu tenho uma chave primária, (campo código) na tabela CHEQUES. É um campo numérico, autoincremento e não-nulo. E ele está no DBGrid, porém não é visível. Eu acredito que o código que eu utilizaria para o update seria:
UPDATE cheques SET compensado = true WHERE codigo = PARAMETRO

Onde, o PARAMETRO seria a linha selecionada do DBGrid. Porém, não faço a mínima idéia de como referenciar a linha selecionada do DBGrid. Alguma idéia ou algum exemplo que utilize uma linha selecionada no DBGrid?

Agradeço a atenção,

Link para o comentário
Compartilhar em outros sites

  • 0

Olha cara, uma maneira bem simples de fazer é pegar o conteudo da linha que voce quer quando a mesma for clicada no DBGrid usando o evento OnDblClick do DBGrid, assim quando o usuário desse um duplo click na linha que ele quero sistema pegaria este conteudo e colocaria no comando SQL de Update.

Ficaria mais ou menos assim:

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  Edit1.text:= Query1.FieldByName('Coluna1').AsString; // no caso, o Edit1 recebe o que essta na coluna 'coluna1' do DBGrid
  Edit2.text:= Query1.FieldByName('Coluna2').AsString; // a mesma coisa
end;

Neste caso é usando dois campos Edit para receber os valores, que voce pode colocar onde voce quiser.

A parte da 'coluna3 = value3' do exemplo que eu te mandei, é no caso de voce ter alguma condição de pesquisa na hora do update, por exemplo, voce só quer alterar os registros que possuem a coluna agencia = 532-0, ai voce coloca 'Update tabela set coluna1 = valor1 WHERE agencia = "532-0"', mas essa parte é opcional, se voce achar que não precisa, voce não tem que colocar.

Espero ter ajudado

falou abraço

Editado por Victor_DF
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela atenção Victor

O Exemplo que você deu foi perfeito para o que eu precisava. Eu não sabia como fazer para pegar o valor de uma determinada coluna.

Edit1.text:= Query1.FieldByName('Coluna1').AsString;

Desculpa pela pergunta boba, mas sou iniciante no Delphi!

Muito obrigado!!

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...