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.
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
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..
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...