Vishhhhh ... hehehehehehehe ....... Po velhinho valeu pela PUTA DICA ..... valeu mesmo, vou dar uma olhada nos links e farei as melhorias nas rotinas, é lavando uns "cascudos" como esses que aprendemos, valeu mesmo.
Aproveitando o email, teria alguém aqui que trabalhe com Delphi que pudesse me indicar e ajudar e utilizar alguns Drivers bacanas para trabalhar com Oracle? E se tiver (o que acho dificil) algum que seja Free, pois a empresa não quer investir nem um centavo nesse tipo de coisa, por isso estou utilizando ADO. E tambem alguém para me explicar como é esse esquema de acesso via OLEDB que eu nunca vi ou utilizei. ... ta bom, ta bom, chega de pedir ... rs Valeu pessoal Adalberto ----- Original Message ----- From: jlchiappa To: oracle_br@yahoogrupos.com.br Sent: Friday, March 03, 2006 11:29 AM Subject: [oracle_br] Re: Formatar Valor Numerico Bom, eu mesmo não programo em delphi e não uso middleware tipo odbc/ado, mas até onde sei o operador + concatena strings, e vc especifica todos os campos como nnn..AsString , então em princípio a resposta seria vc usar as funções do delphi que coloquem máscara na conversão de string (como a TO_CHAR no Pl/sql faz, por exemplo). NOTAR, porém, que pelo que vi na sua lógica vc não está usando bind variables, está enviando strings de comando pro banco, aí vc acaba entupindo o cache de SQLs do banco com n entradas tipo : insert into OCOITEMNFATENDIMENTO(NR_ATENDIMENTO,CD_EMPRESA,CD_FILIAL,.. values(1,10,... insert into OCOITEMNFATENDIMENTO(NR_ATENDIMENTO,CD_EMPRESA,CD_FILIAL,.. values(2,20,... insert into OCOITEMNFATENDIMENTO(NR_ATENDIMENTO,CD_EMPRESA,CD_FILIAL,.. values(3,30,... insert into OCOITEMNFATENDIMENTO(NR_ATENDIMENTO,CD_EMPRESA,CD_FILIAL,.. values(4,40... ou seja, comandos que deveriam ser iguaisi s não são por causa de valores, isso é a causa Número UM de problemas, vai fazer COM CERTEZA a sua aplicação ficar lenta, enfim, CESSE de usar isso se vc tem o MENOR desejo que essa aplicação não quebre, literalmente, quando o volume de usuários crescer. O correto seria vc sempre enviar um comando tipo : insert into OCOITEMNFATENDIMENTO(NR_ATENDIMENTO,CD_EMPRESA,CD_FILIAL,.. values(:x, :y,.. onde X e Y são variáveis que a cada vez vc atualiza com o valor correto. Pra mais info a respeito, veja a minha apresentação na ENPO-2005 e leia http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:8015253775496 e http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:2320123769177 . A idéia portanto seria vc ** NÂO ** converter pra string, e sim ter bind variables numéricas, aí vc NÂo teria o problema de formato de conversão. Outra dica : aqui no Forum o pessoal que trabalha com delphi tem contra-recomendado ODBC e ADO, e ** largamente ** preferido, e relatado sucessos muito maiores, ou com o método Oracle de OLEDB, que é o OO4OLE, ou (o que parece ser ainda melhor) com drivers delphi que fazem o acesso nativo, fica a recomendação. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Adalberto Sousa Monteiro" <[EMAIL PROTECTED]> escreveu > > Valeu Chiappa pela dica .... > Segue abaixo a rotina que estou utilizando para inserir o registro, utilizando Delphi 7, componente ADO, acessando Oracle 8i. > > Ja peguei a rotina tanto de update quanto a de insert e rodei direto no SQL/Plus e funciona normalmente, tando usando virgula como ponto para separar decimal, mas dentro do programa na rotina abaixo, so funciona se eu informar o campo " EditVR_NF.Text " com ponto. > > Gostaria de saber se não uma forma de eu deixar livre para o usuario digitar com virgulo por exemplo "100,25" e na linha do Update e/ou insert eu formatar de uma forma que eu envie para o banco como "100.25", ja que so funciona com ponto. > > Valeu e uma boa sexta feira a todos > Adalberto > > > oTemp : TADOCommand; > > vs_linha := ' update OCOITEMNFATENDIMENTO set CD_OCORRENCIA = ' + EditCdOcorrencia.Text + ',' > + ' CD_RESPONSAVEL = ' + EditCodResp.Text + ',' > + ' QT_TOTAL = ' + EditQuant.Text + ',' > + ' CD_UNIDADE = ' + QuotedStr((copy((Trim(ComboUnidade.Items.Strings[ComboUnidade.ItemIndex])),1,2)) ) + ',' > + ' NR_NFDESTINATARIO = ' + QuotedStr(EditNR_NFDESTINATARIO.Text) + ',' > + ' CD_DESTINATARIO = ' + QuotedStr(EditCD_DESTINATARIO.Text) + ',' > + ' VR_NF = ' + QuotedStr(EditVR_NF.Text) > + ' WHERE NR_ATENDIMENTO = ' + Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_ATENDIMENTO.AsString > + ' and CD_EMPRESA = ' + Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_EMPRESA.AsString > + ' and CD_FILIAL = ' + Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_FILIAL.AsString > + ' and NR_NF = ' + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_NF.AsString) > + ' and CD_REMETENTE = ' + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_REMETENTE.AsString ) > + ' and NR_ITEM = ' + Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_ITEM.AsString > + ' and CD_PRODUTO = ' + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_PRODUTO.AsString); > > oTemp.Connection.BeginTrans; > oTemp.CommandText := vs_linha; > oTemp.Execute(iTemp, null); > > case iTemp of > 0: begin > oTemp.CommandText := ' insert into OCOITEMNFATENDIMENTO (NR_ATENDIMENTO, ' > + ' CD_EMPRESA, ' > + ' CD_FILIAL, ' > + ' NR_NF, ' > + ' CD_REMETENTE, ' > + ' NR_ITEM, ' > + ' CD_PRODUTO, ' > + ' CD_OCORRENCIA, ' > + ' CD_RESPONSAVEL, ' > + ' QT_TOTAL,' > + ' CD_UNIDADE, ' > + ' NR_NFDESTINATARIO, ' > + ' CD_DESTINATARIO, ' > + ' VR_NF ' > + ' ) ' > + ' values ( ' > + Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_ATENDIMENTO.AsString + ',' > + Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_EMPRESA.AsString + ',' > + Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_FILIAL.AsString + ',' > + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_NF.AsString) + ',' > + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_REMETENTE.AsString ) + ',' > + Form_ViagensCallCenter.adoTBItemNFAtendimentoNR_ITEM.AsString + ',' > + QuotedStr(Form_ViagensCallCenter.adoTBItemNFAtendimentoCD_PRODUTO.AsString) + ',' > + EditCdOcorrencia.Text + ',' > + EditCodResp.Text + ',' > + EditQuant.Text + ',' > + QuotedStr((copy((Trim(ComboUnidade.Items.Strings[ComboUnidade.ItemIndex])),1,2)) ) + ',' > + QuotedStr(EditNR_NFDESTINATARIO.Text) + ',' > + QuotedStr(EditCD_DESTINATARIO.Text) + ',' > + QuotedStr(EditVR_NF.Text) > + ' ) '; > > try > oTemp.Execute (iTemp, null); > if (iTemp = 1) then oTemp.Connection.CommitTrans > except > oTemp.Connection.RollbackTrans; > end; > end; > end; > > > ----- Original Message ----- > From: jlchiappa > To: oracle_br@yahoogrupos.com.br > Sent: Thursday, March 02, 2006 8:47 PM > Subject: [oracle_br] Re: Formatar Valor Numerico > > > Diga exatamente QUAL é a sua linguagem/tool de programação, o ambiente > (se client/server ou web), de que maneira vc conecta no banco (se usa > ODBC/OLEDB/JDBC ou client Oracle nativo), e de que maneira vc está > enviando seus SQLs pro banco (qual método, se é SQl dinãmico ou não, > um exemplinho curto vai bem também), que quem trabalha com a mesma > coisa que vc talvez possa dizer . No Forms client/server, por exemplo, > com SQL executado em triggers, vc sempre usa ponto decimal em vars > numéricas, e no caso de text itens que vc queira usar como bind > variables basta os definir como datatype number. > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "Adalberto Sousa Monteiro" > <[EMAIL PROTECTED]> escreveu > > > > Boa tarde ao grupo, > > Como faço para formatar um valor númerico na hora do insert ou update ? > > > > É o seguinte, quando tento dar um insert ou update através da minha > aplicação com o seguinte valor 400,50 ele me da erro de numero > invalido e quando mudo para 400.50 ele inseri numa boa, alguem poderia > me dar uma dica como formatar isso de uma forma que seja indiferente a > formatação de virgula ou ponto ?? > > > > Valeu > > Adalberto > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > -------------------------------------------------------------------------------------------------------------------------- > Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ > Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine > > > > > Yahoo! Grupos, um serviço oferecido por: > PUBLICIDADE > > > > > ------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > a.. Para visitar o site do seu grupo na web, acesse: > http://br.groups.yahoo.com/group/oracle_br/ > > b.. Para sair deste grupo, envie um e-mail para: > [EMAIL PROTECTED] > > c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. > > > > [As partes desta mensagem que não continham texto foram removidas] > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html