Oracle x progress

Discussão em 'Progress 4GL' iniciado por syclone, Dezembro 11, 2009.

  1. syclone

    syclone Sem Pontuação

    Preciso de ajuda..

    O cliente tem o módulo da Datasul com banco Oracle, e rodou um programa de acerto onde ele cria registros (iniciais).. só que o cliente rodou o programa de acerto (.r) mas não criou os registros e não ocorreu nenhum erro.

    E quando ele foi no programa que mostraria esses registros iniciais, ele viu que não tinha nenhum registro cadastrado (o pragrama de acerto .r não criou os registros)... e tentou criar eles manualmente.. só que está dando um erro loco.

    Será que isso teria que usar o comando "validate tabela no-error." após o "create" e "assign".. ou seria outra coisa?

    Alguem poderia me ajudar.
  2. costa

    costa Sem Pontuação

    Syclone, a alguns meses estou trabalhando com Datasul em base Oracle, e temos alguns problemas com esse ambiente, segundo a própria Datasul é pau de oracle com progress, principalmente em campos char. Não sei se o seu programa de acerto le uma tabela para criar em outra, mas as vezes pode ser algo assim.
    Como exemplo veja o seguinte:

    for each item where item.it-codigo = "001"
    disp item.it-codigo ..., olho pelo cadastro de item e vejo este item, mas se for no editor e fazer este comando ele não mostra nada.

    for each item where trim(item.it-codigo) = "001" ..., ai sim ele mostra
  3. syclone

    syclone Sem Pontuação

    Valeu pela dica..

    Mas eu não estou lembrado se tem algum tipo de busca em campo char, mas tem pelo menos três "if not can-find" em campos inteiros... e justamente nestes não estão criando os registros..

    Ex:
    Código:
    if not can-find(first tabela where
                          tabela.campo = 1 and
                          tabela.campo2 = 1 and
                          tabela.idi_campo = 3) then do:
              create tabela.
              assign........
    end.
    
    Eles faz estes testes e não cria os campos (mesmo que não tenha encontrado os registros)... agora me gerou outra dúvida, será que ele não está conseguindo fazer o "if not can-find" ou não está conseguindo criar os registros..
  4. syclone

    syclone Sem Pontuação

    Descobri o que era... problema na trigger de write.

    Mas o que o rapaz aqui em cima falou esta´correto.. o oracle tem problema pra trabalhar com character..
    Eu tinha um campo livre substr(tabela.campolivre,22,1) que, e um for each na clausula where ele verificava se essa posição tinha o valor "S", se tivesse, executava o for each... e o oracle tinha problema e não encontrava esse "S" (mesmo ele estando gravado na base nessa posição 22,1).

    A soluçao é usar trim(substr(tabela.campo,22,1)) = "S", ai ele funciona...

Compartilhe esta Página