Update no banco access

tenho uns registros nos access e um formulário jsp para fazer alteração.
Estou conseguindo alteração dos campos no banco tipo texto numa boa, porém quando tento alterar um campo tipo numérico ou data para vazio ta dando pau.
Ex: nome=“fulano”, dataaniversario = nada
Como é sintaxe para fazer essa mágica.

Colega,
Tu já verificou se o campo da tabela esta aceitando valores nulos ?
Se está aceitando, tens que passar ‘Null’ no teu UPDATE.

Espero ter ajudado.
Atenciosamente,
Leandro.

carinha, no access a única condição para campo tipo data e se é requerido, no caso da minha tabela tá requerido = não. Se jaba a sintaxe jsp para colocar null para esse campo? Já tentei fazer isso mas só levei bordoada :lol:

Colega,
Tens razão. Tu poderias colocar aqui o teu código para fazer o UPDATE ? e a(s) mensagen(s) de erro ?

Valeu.

Aí está a criança:
<HTML>
<HEAD>
<TITLE>IMPRENSA NACIONAL</TITLE>
</HEAD>
<BODY bgcolor = “38B0DE”>
<h3>Atualização de Dados do Fluxo DO</h3>
<HR size = 8>
<%@ page import=“java.sql.*” errorPage=“ErroBco.jsp” %>
<FORM name=“Alteracao” action=“Fluxo.jsp”>
<BR><H3>Atualização Concluida</H3><BR>
<BR><BR>
<%! String diajornal, publicacao,
nedicaosecao1,nedicaosecao2,nedicaosecao3,inicioeditoracaodo1,fimeditoracaodo1,
iniciopaginacaodo1, fimpaginacaodo1, npagpaginacaodo1, npagdo1somapr1,
inicioeditoracaopr1,fimeditoracaopr1, iniciopaginacaopr1, fimpaginacaopr1,
npagpaginacaopr1, pagcaderno1_1, pagcaderno1_2, pagcaderno1_3,
pagcaderno1_4, totcadernos1, totpartes1, enviofoto1, contato1,
inicioeditoracaodo2,fimeditoracaodo2,
iniciopaginacaodo2, fimpaginacaodo2, npagpaginacaodo2, npagdo2somapr2,
inicioeditoracaopr2,fimeditoracaopr2, iniciopaginacaopr2, fimpaginacaopr2,
npagpaginacaopr2, pagcaderno2_1, pagcaderno2_2, pagcaderno2_3,
pagcaderno2_4, totcadernos2, totpartes2, enviofoto2, contato2,
inicioeditoracaodo3, fimeditoracaodo3, iniciopaginacaodo3, fimpaginacaodo3,
npagdo3, pagcaderno3_1, pagcaderno3_2, pagcaderno3_3,
pagcaderno3_4, totpartes3, enviofoto3, contato3,totcadernos3,
inicioeditoracaoextra1, fimeditoracaoextra1, iniciopaginacaoextra1,
fimpaginacaoextra1, npagextra1, totcadernosextra1, totpartesextra1,
enviofotoextra1, contatoextra1, inicioeditoracaoextra2,fimeditoracaoextra2,
iniciopaginacaoextra2, fimpaginacaoextra2, npagextra2, totcadernosextra2,
totpartesextra2, enviofotoextra2, contatoextra2, inicioeditoracaoextra3,
fimeditoracaoextra3, iniciopaginacaoextra3, fimpaginacaoextra3,
npagextra3, totcadernosextra3, totpartesextra3, enviofotoextra3,
contatoextra3, ocorrencias1, ocorrencias2, ocorrencias3,
sql, url = “jdbc:odbc:odbcfluxo1”;
Connection MinhaConexao;
Statement MeuState;
ResultSet rs;
public String nulo1 = null;

%>
<% diajornal = (String) request.getParameter(“diajornal”);
diajornal = diajornal.substring(6).substring(0,4)+"-"+
diajornal.substring(3).substring(0,2)+"-"+
diajornal.substring(0).substring(0,2);
publicacao = (String) request.getParameter(“publicacao”);
if(publicacao != “”){
publicacao = publicacao.substring(6).substring(0,4)+"-"+
publicacao.substring(3).substring(0,2)+"-"+
publicacao.substring(0).substring(0,2);
}
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
MinhaConexao = DriverManager.getConnection(url);
MeuState = MinhaConexao.createStatement();
sql = “UPDATE TabDO SET diajornal=#”+diajornal+"#";
if(publicacao==""){
sql = sql + “, publicacao = ‘null’”;
}
else{
sql = sql + “,publicacao=#”+publicacao+"#";
}
sql = sql + " WHERE diajornal=#"+diajornal+"#";
MeuState.executeUpdate(sql);
}
catch(ClassNotFoundException e)
{
System.err.println(“Driver JDBC nao encontrado !!!”);
throw e;
}
catch (SQLException se)
{
System.err.println(“Nao consegui conectar com o banco !!!”);
throw se;
}

%>
Registros Atualizados
<BR><BR>
<INPUT type=submit value=“Confirmar”>
</FORM>
</BODY>
</HTML>
ERRO RECEBIDO QUANDO TEMTO LIMPAR O VALOR DO CAMPO DATA:
java.lang.NullPointerException

Colega,
Tô achando meio estranho essas “#”, mas vou te dar umas dicas:

  1. Comenta o código para executar o SQL(o executeUpdate) e dá um System.out.println() na variável que contém o SQL para verificar se estão sendo passado os parâmetros todos de forma correta.
  2. Se estiver OK, tenta executar o resultado desta impressão no ACCESS e verifica se faz o UPDATE, tipo assim, copia o código que foi impresso com o System.out e executa lá dentro do ACCESS para ver se não esta sendo infrigida alguma regra de integridade do banco ou algo parecido. ( Para fazer isto crie uma nova consulta no modo estrutura e depois muda para o tipo especifica SQL ( Algo deste tipo ) ).
  3. Tenta executa sem estas “#”, substituiindo por “’” (Aspas simples).

Espero ter ajudado.

Atenciosamente,
Leandro.

8O OK! VOU TENTAR ESSAS DICAS. VALEU!!!

Vale para access e demais banco de dados que sigam de alguma maneira o que determina o ANSI:

Se um campo não é requerido (aceita null) basta omití-lo da sql!

[code]
sql = "UPDATE TabDO SET diajornal=#"+diajornal+"#";

if( publicacao != "" ) {

 sql = sql + &quot;,publicacao=#&quot;+publicacao+&quot;#&quot;;

}[/code]

outro detalhe:

datas no sql do access devem ser informado entre ## E NECESSARIAMENTE em um dos seguintes formatos:

mm/dd/yy ou
mm/dd/yyyy ou
yyyy-mm-dd

bob