Fórum Quase desistindo! Como editar uma tabela no DBGRID sem PK! #43751
15/04/2004
0
tenho uma tabela sem nenhuma chave primária, onde todos os campos podem ser repetidos.
Tenho um Grid que retorna uma determinada consulta, quando vou editar apenas um registro desta consulta, ele altera todos os registros que se concidem por qualquer campo...
Como faço para alterar apenas o registro em questão, e não interfeir em nada no restante?
Estou desesperado...
Uso D7/IBX mas aceito mudanças...
Anarchybra
Curtir tópico
+ 0Posts
15/04/2004
Aroldo Zanela
Coloque um fragmento do código para que o pessoal possa analisar melhor. Você está efetuando a alteração diretamente na dbGrid?
Gostei + 0
15/04/2004
Anarchybra
eu desejo fazer a alteração direto pelo Grid.
Este é o código que estou usando.
procedure TForm1.SalvarAlteracoes; begin QryEditar.Edit; QryEditar.FieldByName(´cod_material´).Asstring := DBGrid1.Columns[0].Field.AsString; QryEditar.FieldByName(´descricao´).Asstring := DBGrid1.Columns[1].Field.AsString; QryEditar.FieldByName(´taxa1´).Asstring := DBGrid1.Columns[2].Field.AsString; QryEditar.FieldByName(´preco1´).Asstring := DBGrid1.Columns[3].Field.AsString; QryEditar.FieldByName(´custo1´).Asstring := DBGrid1.Columns[4].Field.AsString; QryEditar.FieldByName(´tipo_moeda´).Asstring := DBGrid1.Columns[5].Field.AsString; QryEditar.FieldByName(´data_cadastro´).Asstring := DBGrid1.Columns[6].Field.AsString; QryEditar.post; Transacao.Commit; end;
Gostei + 0
15/04/2004
Dorivansousa
Gostei + 0
15/04/2004
Anarchybra
você poderia me dar um exemplo de como alterar pela ponteiro do campo?
Gostei + 0
15/04/2004
Dorivansousa
var_recno:=qryeditar.recno;
e compara se a posicao q ta sendo gravada é igual a posicão do registro q vc quer gravar
if QryFulano.RecNo=rc then
begin
end;
end;
Gostei + 0
15/04/2004
Aroldo Zanela
Colega,
Isto normalmente só funciona em banco de dados desktop como Paradox e dBase.
Na minha opinião, acho melhor utilizar um ClientDataSet para minimizar o esforço na implementação da solução.
Gostei + 0
15/04/2004
Anarchybra
Caros amigos dorivansousa e Aroldo Zanela, agradeço a disposição de vocês.
dorivansousa, a instrução que me passou, realmente não funcionou, como o Aroldo tinha premeditado.
Aroldo, você citou que eu poderia usar um ClientDataSet...
Como ficaria a implementação em minha aplicação?
Muito obrigado a todos!
Gostei + 0
16/04/2004
Dorivansousa
update Grupos
set
CODIGO = :CODIGO
DESCRICAO = :DESCRICAO,
COMISSAO_VISTA = :COMISSAO_VISTA,
COMISSAO_PRAZO = :COMISSAO_PRAZO,
DT_CADASTRO = :DT_CADASTRO
where
CODIGO = :CODIGO
pois no caso todos os registro q tiverem os codigos iguais serao atualizados, nao sei se estou correto mais acredito que o banco elegeu uma ´chave´ para a sua tabela. Minha sugestao é q vc coloque uma chave primaria nessa tabela ou um campo que nao se repita (indice unico), pode ser um campo qualquer tipo ´contador´ para a tabela se basear por ele...
Falow!!!!
Gostei + 0
16/04/2004
Anarchybra
muito obrigado pela dica....
estou pensando em adicionar um campo em minha tabela para me basear, pois todos os outros campos podem ser repetidos, inclusive o código...
Valeu pela dica!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)