Caro Alexandre,
 
O comportamento padrão numa conexão do Centura com SQLServer via ODBC é gravar espaço em branco quando a variável de bind possui tamanho 0. Esse comportamento pode ser mudado de duas formas:
 
1) Antes de executar o insert, verifique se a variável de bind possui tamanho 0 e, nesse caso, faça-a igual STRING_Null, como no exemplo abaixo:
 
Set vCampo = VisStrChoose(vCampo = '', STRING_Null, vCampo)
Call SqlPrepareAndExecute( 'insert into tabela (:vCampo)')
 
2) Existe um chave que pode ser colocada no sql.ini que muda esse comportamento padrão do Centura. Deve ser colocada na seção [win32client]:

setzerolengthstringstonull=on
 
Qualquer dúvida, entre em contato.
 
Um abraço.
 
Ricardo Gomes.
----- Original Message -----
Sent: Tuesday, August 23, 2005 2:31 PM
Subject: [sqlwin] Null - ODBC

Olá pessoal,
 
Estou com o seguinte problema:
 
Tenho uma aplicação que faz um insert de uma tabela com alguns campos NOT NULL a partir uma table window.
Na conexão com sybase se uma coluna NOT NULL não é preenchida o banco retorna erro para tentativa de inserir valor nulo.
No Mssql 2000 com ODBC porém, isto não ocorre, o insert é executado e a coluna não fica com NULL e sim com um campo vazio.
Já tentei alterar parâmetros na fonte do ODBC (ansi null e padding) e não obtive resultado.
Estou utilizando Centura 1.5.1 ptf 6.
 
Alguém tem experiência com este tipo de problema?
Existe alguma solução? Está faltando alguma coisa?
 
Agradeço desde já,
 
Alexandre Augusto Teixeira
Miu Assessoria de Projetos
Tel.: (11) 3284-1472

Responder a