Problemas Na DBGrid
Olá amigos, sou novo no fórum. Estou com um problema.
O Aplicativo usado aqui na empresa onde trabalho possui dados numa DBGrid.
Os usuários desse aplicativo alimentam (nessa dbgrid) um campo de valor. Esse valor por sua vez é copiado (Crtl + C) de outro lugar e nesse lugar o valor está formatado da seguinte forma: ´2.555,60´.
O aplicativo precisa tratar o valor ´colado´ e passar no formato ´2555,60´ para que o Delphi aceite.
O problema é que após copiar e colar na aplicação nesse formato (´2.555,60´), quando tento passar pra linha de baixo (por consequencia gravar a alteração) o sistema me mostra a mensagem: ´is not a valid floating point value for field´.
Tentei usar o StringReplace no evento BEFORE POST da seguinte forma:
svalor := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADOR.AsCurrency := StrToCurr(svalor);
Mas, o sistema apresenta o mesmo erro. Tento inserir um Break Point e o sistema não chega nem a passar pelo evento BEFORE POST. Tentei colocar isso em outros eventos mas, também não funcionou.
Alguém sabe uma forma de resolver isso ???
Ah, estou usando Delphi 7 com Oracle.
Abraços
Richard Wagner
O Aplicativo usado aqui na empresa onde trabalho possui dados numa DBGrid.
Os usuários desse aplicativo alimentam (nessa dbgrid) um campo de valor. Esse valor por sua vez é copiado (Crtl + C) de outro lugar e nesse lugar o valor está formatado da seguinte forma: ´2.555,60´.
O aplicativo precisa tratar o valor ´colado´ e passar no formato ´2555,60´ para que o Delphi aceite.
O problema é que após copiar e colar na aplicação nesse formato (´2.555,60´), quando tento passar pra linha de baixo (por consequencia gravar a alteração) o sistema me mostra a mensagem: ´is not a valid floating point value for field´.
Tentei usar o StringReplace no evento BEFORE POST da seguinte forma:
svalor := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADOR.AsCurrency := StrToCurr(svalor);
Mas, o sistema apresenta o mesmo erro. Tento inserir um Break Point e o sistema não chega nem a passar pelo evento BEFORE POST. Tentei colocar isso em outros eventos mas, também não funcionou.
Alguém sabe uma forma de resolver isso ???
Ah, estou usando Delphi 7 com Oracle.
Abraços
Richard Wagner
Richardwagner
Curtidas 0
Respostas
Marco Salles
22/03/2007
No evento onsettext do field Escreva a sua idéia
procedure TForm1.SeuDataSETSeuCampoSetText(Sender: TField; const Text: String);
begin
sender.AsString:=StringReplace(text,´.´,´´, [rfReplaceAll]);
end;
GOSTEI 0
Richardwagner
22/03/2007
Coloquei
procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String);
begin
Sender.AsString := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
end;
Ele está passando como valor (DBGrid4.Columns[6].Field.AsString) o valor antes de ´colar´ o novo valor.
Como se ele não tivesse reconhecendo o valor que eu colo.
procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String);
begin
Sender.AsString := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
end;
Ele está passando como valor (DBGrid4.Columns[6].Field.AsString) o valor antes de ´colar´ o novo valor.
Como se ele não tivesse reconhecendo o valor que eu colo.
GOSTEI 0
Marco Salles
22/03/2007
Coloquei
procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String);
begin
Sender.AsString := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
end;
Ele está passando como valor (DBGrid4.Columns[6].Field.AsString) o valor antes de ´colar´ o novo valor.
Como se ele não tivesse reconhecendo o valor que eu colo.
procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String);
begin
Sender.AsString := StringReplace(text,´.´,´´, [rfReplaceAll]);
end;
[b:6f8ac5cea7]so trocar o DBGrid4.Columns[6].Field.AsString pelo Parametro Text[/b:6f8ac5cea7]
GOSTEI 0
Richardwagner
22/03/2007
Mas, aí é que tá...
O parametro text precisa receber um valor. E o valor que eu passo pra ele é exatamente esse ´DBGrid4.Columns[6].Field.AsString´ né ???
O parametro text precisa receber um valor. E o valor que eu passo pra ele é exatamente esse ´DBGrid4.Columns[6].Field.AsString´ né ???
GOSTEI 0
Marco Salles
22/03/2007
Mas, aí é que tá...
O parametro text precisa receber um valor. E o valor que eu passo pra ele é exatamente esse ´DBGrid4.Columns[6].Field.AsString´ né ???
[u:fe94e7cf73][b:fe94e7cf73]não... [/b:fe94e7cf73][/u:fe94e7cf73]o parametro text é o que esta no seu DBGrid4.Columns[6].Field.AsString , momento antes dele ser gravado na base de dados..
Mas porque que não esta dando certo com ?
Sender.AsString := StringReplace(text,´.´,´´, [rfReplaceAll]);
GOSTEI 0
Richardwagner
22/03/2007
Cara, deu certo.
Eu não tinha atentado pro Parametro Text.
Muitissimo Obrigado.
Abraços
Richard Wagner
Eu não tinha atentado pro Parametro Text.
Muitissimo Obrigado.
Abraços
Richard Wagner
GOSTEI 0