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

 



Responder a