JScript - JSP

8 respostas
T

Galera,

Como que eu faço para que o meu formulário ao ser carregado já mostre no campo Código o valor desse código que é a chave primária auto incremento de uma tabela no banco.
Ou seja, buscar sempre o último valor da chave que será gravada.

JSP e MSSQL

Obrigada

8 Respostas

G

Thais vc pode fazer assim:

<%

Statement stm  = conn.createStatement();
ResultSet rs = stm.executeQuery("SELECT max(suaChavePrimaria) as codigo FROM suaTabela");

int codigo = rs.getInt("codigo"); //seu codigo que vem do DB

<input name="codigo" value="<%= codigo %>" type="text" >

%>

se vc não conseguir, eu te mando um exemplo melhor!!!

:wink:

T

Após as alterações os campos do form simplesmente não carregam…fica tudo em branco.

Dê uma olhada no código abaixo por favor

<%@ page import=java.sql.* %>

<%@ page import=java.lang.String %>

<%

Connection con = null;

Statement st = null;
try{
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception e){
      System.out.println("Erro" + e);
}
try{
con = DriverManager.getConnection("jdbc:odbc:Controle_Contratos","","");
}
catch(SQLException k){
      System.out.println("Erro" + k);
}
try{
st = con.createStatement();
    
ResultSet rs = st.executeQuery("select max(codContrato)as codigo from tbContratos");

    int codigo= rs.getInt("codigo");
%>

<body>

<form method=“POST” action=“incluirContrato.jsp”>

<table>

<tr>

<td width=“16%”>Código Contrato:</td>

<td width=“84%”><input type=“text” name=“tfcodContrato” size=“20” value="<%= codigo %>"></td>

</tr>

<tr>

<td width=“16%”>Número Contrato:</td>

<td width=“84%”><input type=“text” name=“tfNumContrato” size=“20”></td>

</tr>

<tr>

<td width=“16%”>Fornecedor:</td>

<td width=“84%”><input type=“text” name=“tfFornecedor” size=“20”></td>

</tr>

<tr>

<td>Assunto</td>

<td><input type=“text” name=“tfAssunto” size=“20”></td>

</tr>

</table>

<p><input type=“submit” value=“Enviar” name=“btEnviar”><input type=“reset” value=“Limpar” name=“btLimpar”></p>

</form>

<%

st.close();
}catch(Exception s){

System.out.println("Erro:" + s);
}
finally{
  try{
  	if(st != null)
  	   st.close();
  	 
  	 } catch (SQLException a){}
  	 try{
  	 	if(con!= null)
  	 	   con.close();
}catch(SQLException a){}

}%>
</body>

M

Bem, vamos tentar de outra forma:
1° crie a variável código antes do seu resultSet;
2° passe o seguinte código para antes do fomulário:

e 3° substitua a linha:int codigo= rs.getInt&#40;&quot;codigo&quot;&#41;;
para:codigo= rs.getInt&#40;&quot;codigo&quot;&#41; + 1;

:okok:

T

Marco,

Agora ocorre erro na saída

Compiling 1 source file to C:\Projetos_Java\ControleContratos\build\generated\classes
C:\Projetos_Java\ControleContratos\build\generated\src\org\apache\jsp\Contrato_jsp.java:94: cannot resolve symbol
symbol : variable codigo
location: class org.apache.jsp.Contrato_jsp
out.print( codigo );
^

Na linha:
<input type=“text” name=“tfcodContrato” size=“20” value="<%= codigo %>"></td>

Muito obrigada mesmo!!!

T

Não entendo porque não está funcionando.

Veja

<%@ page import=java.sql.* %>

<%@ page import=java.lang.String %>

<html>

<body>

<%

Connection con = null;

Statement st = null;
try{
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception e){
      System.out.println("Erro" + e);
}
try{
con = DriverManager.getConnection("jdbc:odbc:Controle_Contratos","","");
}
catch(SQLException k){
      System.out.println("Erro" + k);
}
try{
st = con.createStatement();
    
    int valor;

    ResultSet rs = st.executeQuery("select max(codContrato)as   codigo   from tbContratos");

    valor = rs.getInt("codigo")+1;

        st.close();
        con.close();
    
}catch(Exception s){

System.out.println("Erro:" + s);
}
finally{
  try{
  	if(st != null)
  	   st.close();
  	 
  	 } catch (SQLException a){}
  	 try{
  	 	if(con!= null)
  	 	   con.close();
}catch(SQLException a){}

}%>

<form method=“POST” action=“incluirContrato.jsp”>
<table>
<tr>
<td width=“16%”>Código Contrato:</td>
<td width=“84%”><input type=“text” name=“tfcodContrato” size=“20” value="<%= valor %>"></td>
</tr>
<tr>
<td width=“16%”>Número Contrato:</td>
<td width=“84%”><input type=“text” name=“tfNumContrato” size=“20”></td>
</tr>
<tr>
<td width=“16%”>Fornecedor:</td>
<td width=“84%”><input type=“text” name=“tfFornecedor” size=“20”></td>
</tr>
<tr>
<td>Assunto</td>
<td><input type=“text” name=“tfAssunto” size=“20”></td>
</tr>
</table>
<p><input type=“submit” value=“Enviar” name=“btEnviar”><input type=“reset” value=“Limpar” name=“btLimpar”></p>
</form>
</body>
</html>

M

Taiz,

você não seguiu esta recomendação minha:

insira o código

int codigo = 0;

debaixo linha

Este erro aconteceu porque você declarou sua variável dentro da estrutura try/catch, e não deve declarar variáveis dentro deste trecho de código para utilizar fora dele.

:okok:

T

Marco,

Finalmente, conseguimos. Era isso mesmo.
Muuuuuuuuuuuuito obrigada!

Só mais um help…você como que eu faço para que o(s)
usuários(s) não consigam deletar esse Código no campo?

Mais uma vez obrigada!

M

Insira no seu input a atribuição readonly.

&lt;input type="text" name="tfcodContrato" readonly size="20" value="&lt;%= valor %&gt;"&gt;

até mais.

Criado 9 de abril de 2005
Ultima resposta 12 de abr. de 2005
Respostas 8
Participantes 3