Fórum inserir casa decimal delphi x oracle #418290
11/06/2012
0
Estou tentando fazer um insert com dados de uma dbgrid no meu banco porem é informado o erro: 01722: invalid number...
O campo valor do pedido esta na grid com virgula (736,73). Porem o oracle nao esta reconhecendo inserir essa virgula e no caso so reconhece com .. Eis o comando:
querynumpedido.SQL.Add(insert into pcpedido(VLTOTAL);
querynumpedido.SQL.Add(values(+QuotedStr(DBGrid3.fields[6].Text)+);
essa forma nao funciona
+QuotedStr( StringReplace(DBGrid3.fields[6].AsString, .,,,[]))+;
mesmo erro dessa forma.
Tentei inserir no AFTER CONNECT do sqlconnection o seguinte comando
conexaobd.Execute(alter session set NLS_NUMERIC_CHARACTERS = .,, nil,nil);
nao deu certo tambem...
utilizo o SQLCONNECTION, DBEXPRESS, DATASETPROVIDER, CLIENTDATASET, DATASOURCE.
Segui o topico abaixo , porem sem sucesso tambem.
https://www.devmedia.com.br/forum/delphi7-x-dbexpress-x-mysql5-problema-com-casas-decimais/349533
Se alguem tiver alguma dica me ajudem por favor. Vlw
Marcos Souza
Curtir tópico
+ 0Posts
12/06/2012
Eliel Martins
Eu tenho essa função abaixo, sempre que faço um insert no banco de dados e o valor tem casa decimal utilizo ela, verifique se vai te atender.
function Replica(Text, Busca, Troca: string): string;
var
n: integer;
begin
for n := 1 to length(Text) do
if Copy(Text, n, Length(Busca)) = Busca then
begin
Delete(Text, n, Length(Busca));
Insert(Troca, Text, n);
end;
Result := Text;
end;
Um exemplo de como utilizar a função :
Replica(FormatFloat(#0.000, StrToFloat(edPerc.Text)),,,.));
Espero ter ajudado.
Atenciosamente,
Eliel Gonçalves Martins
Gostei + 0
12/06/2012
Marcos Souza
Ficou da seguinte forma a linha:
´+Replica(FormatFloat(´#0.000´, StrToFloat(DBGrid3.fields[6].Text)),´.´,´,´,)+´
Ocorreu o erro: 00913: too many values.
Alguma sugestão?
Gostei + 0
12/06/2012
Deivison Melo
Qualquer coisa estou à disposição!
Gostei + 0
12/06/2012
Marcos Souza
ThousandSeparator := ,;
DecimalSeparator := .;
O comando deve ser inserido no evento ONCREATE do form.
Sendo assim meu codigo ficou da seguinte forma:
+QuotedStr(DBGrid3.fields[6].Text)+
Dessa forma consegui inserir com a virgula no B.D
Muito obrigado pelas dicas, pois a sua função é interessantissima para poder utilizar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)