Inserir

5 respostas
fsf

Oi pessoal,

Construi um formulario onde alguns dados podem ser digitados ou nao pelo usuario, mas quando se deixa algum campo em branco o cadastro nao é efetuado!!Como faço para consertar isso??

Coddigo sql de cadastro SQL = "Insert into Produto(cod_barra,descricao,fabricante,cod_categoria,unidade,precocusto,precovenda,margemlucro,stitributaria) values("; SQL = SQL + "'"+codbarra+"'"; SQL = SQL + ","; SQL = SQL + "'"+descricao+"'"; SQL = SQL + ","; SQL = SQL + "'"+fabricante+"'"; SQL = SQL + ","; SQL = SQL + "'"+categoria+"'"; SQL = SQL + ","; SQL = SQL + "'"+unidade+"'"; SQL = SQL + ","; SQL = SQL +"'"+custo+"'"; SQL = SQL + ","; SQL = SQL + "'"+venda+"'"; SQL = SQL + ","; SQL = SQL + "'"+lucro+"'"; SQL = SQL + ","; SQL = SQL + "'"+stitributaria+"'" ; SQL = SQL + ")";

erro<blockquote>

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] O campo P

roduto.margemlucro nÒo pode ser uma seq³Ûncia de caracteres de comprimento zero

.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)

at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)

at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)

at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:

288)

</blockquote>

5 Respostas

rodrigo_gomes

mas vc quer que o cadastro seja efetuado mesmo tendo algum campo em branco?

fsf

Sim!!

rodrigo_gomes

quando ele preencher o formulario, você pode testar se tem algum campo em branco (ou nulo) e preencher com um valor default determinado por você.
Por exemplo, se ele deixar a margem de lucro em branco você poderia colcoar zero como default…

Alguem tem outra sugestão?

jc_oz

Pode alterar a coluna no DB, permitindo que seja gravado valor null ou brancos ou seja lá o que for, configurando um valor default no próprio DB.

[]'s
Julio

N

O seu problema é de SQL, não de interface.

Se o seu campo permitir null na base, use algo como:

if &#40;campo == null || campo.trim&#40;&#41;.length&#40;&#41; == 0&#41;
    myPreparedStatement.setNull&#40;&lt;campoid&gt;, java.sql.Types.VARCHAR&#41;;
else
    myPreparedStatement.setString&#40;&lt;campoid&gt;, campo&#41;;

Veja que estou usando PreparedStatement, não Statement. Também uso dois Sets, setNull ou setString.

Mas você está usando ODBC para Access (eca), nunca testei. Em um banco de verdade é assim que deveria funcionar :slight_smile:
Fui

Criado 8 de outubro de 2004
Ultima resposta 9 de out. de 2004
Respostas 5
Participantes 4