ASP.NET não me reconhece Textbox

peter alien

Power Member
Boas,

queria introduzir os dados de um formulário numa BD em Access e para isso estou a utilizar ASP.NET (ficheiro aspx).

O código é o seguinte (vou postar apenas a parte essencial, porque é muito codigo:



No ficheiro do formulário em HTML:

...
<td align="left">
<font color="#6A6D96" size="4" face="verdana">
<input name="dataactual" type="text" size="8" maxlength="10" value="" readonly="true">
</font>
</td>





No ficheiro Process.aspx:

...
Sub DataSave(sender as Object, e as EventArgs)
Rem Grava a informação introduzida na Form, na BD em Access.
Rem Query SQL que servirá para inserir na BD Access os dados introduzidos na Form.
Dim SQLString as string
Dim S1 as string
Dim S2 as string
S1 = Request.Form("codpostal1") & "','" & Request.Form("codpostal2") & "','" & Request.Form("localidade")
S2 = Request.Form("codpostal1insp") & "','" & Request.Form("codpostal2insp") & "','" & Request.Form("localidadeinsp")
SQLString = "INSERT INTO Pedidos_de_Inspeccao (Data_de_Entrada_do_Pedido_de_Inspeccao, Nome_do_Requerente, Morada_do_Requerente, CodPostal_do_Requerente, Telefone_do_Requerente, Telemovel_do_Requerente, Email_do_Requerente, Tipo_de_Inspeccao, Tipo_de_Instalacao, Morada_da_Inspeccao, CodPostal_da_Inspeccao, DataPreferencial_Inspeccao)"
SQLString = SQLString & "VALUES ('" & Request.Form("dataactual") & "','" & Request.Form("nome") & "','" & Request.Form("morada") & "','" & S1 & "','" & Request.Form("telefone") & "','" & Request.Form("telemovel") & "','" & Request.Form("email") & "','" & Request.Form("tipodeinspeccao") & "','" & Request.Form("tipodeinstalacao") & "','" & Request.Form("moradainsp") & "','" & S2 & "','" & Request.Form("datapreferencial") & "')"
Rem A Conexão à Fonte de Dados é feita usando o Provedor OleDB.
Dim DBConn as New OleDBConnection ("Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=\BD\Pedidos.mdb")
Rem Cria um Objecto OleDbCommand.
Rem Passa os parâmetros para um Objecto OleDbCommand.
Dim DBComm as New OleDbCommand
DBComm.Connection = DBConn
DBComm.CommandText = SQLString
Rem Cria e passa os dados para Objectos OleDbParameter.
Rem *****
Dim DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao as new OleDbParameter
DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao.ParameterName = "@Data_de_Entrada_do_Pedido_de_Inspeccao"
DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao.Value = dataactual.text
DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao.Type = DbType.String
DBComm.Parameters.Add(DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao)
Rem *****
Dim DBParam_Nome_do_Requerente as new OleDbParameter
DBParam_Nome_do_Requerente.ParameterName = "@Nome_do_Requerente"
DBParam_Nome_do_Requerente.Value = nome.text
DBParam_Nome_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_Nome_do_Requerente)
Rem *****
Dim DBParam_Morada_do_Requerente as new OleDbParameter
DBParam_Morada_do_Requerente.ParameterName = "@Morada_do_Requerente"
DBParam_Morada_do_Requerente.Value = morada.text
DBParam_Morada_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_Morada_do_Requerente)
Rem *****
Dim DBParam_CodPostal_do_Requerente as new OleDbParameter
DBParam_CodPostal_do_Requerente.ParameterName = "@CodPostal_do_Requerente"
DBParam_CodPostal_do_Requerente.Value = codpostal1.text & codpostal2.text & localidade.text
DBParam_CodPostal_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_CodPostal_do_Requerente)
Rem *****
Dim DBParam_Telefone_do_Requerente as new OleDbParameter
DBParam_Telefone_do_Requerente.ParameterName = "@Telefone_do_Requerente"
DBParam_Telefone_do_Requerente.Value = telefone.text
DBParam_Telefone_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_Telefone_do_Requerente)
Rem *****
Dim DBParam_Telemovel_do_Requerente as new OleDbParameter
DBParam_Telemovel_do_Requerente.ParameterName = "@Telemovel_do_Requerente"
DBParam_Telemovel_do_Requerente.Value = telemovel.text
DBParam_Telemovel_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_Telemovel_do_Requerente)
Rem *****
Dim DBParam_Email_do_Requerente as new OleDbParameter
DBParam_Email_do_Requerente.ParameterName = "@Email_do_Requerente"
DBParam_Email_do_Requerente.Value = email.text
DBParam_Email_do_Requerente.Type = DbType.String
DBComm.Parameters.Add(DBParam_Email_do_Requerente)
Rem *****
Dim DBParam_Tipo_de_Inspeccao as new OleDbParameter
DBParam_Tipo_de_Inspeccao.ParameterName = "@Tipo_de_Inspeccao"
DBParam_Tipo_de_Inspeccao.Value = tipodeinspeccao.text
DBParam_Tipo_de_Inspeccao.Type = DbType.String
DBComm.Parameters.Add(DBParam_Tipo_de_Inspeccao)
Rem *****
Dim DBParam_Tipo_de_Instalacao as new OleDbParameter
DBParam_Tipo_de_Instalacao.ParameterName = "@Tipo_de_Instalacao"
DBParam_Tipo_de_Instalacao.Value = tipodeinstalacao.text
DBParam_Tipo_de_Instalacao.Type = DbType.String
DBComm.Parameters.Add(DBParam_Tipo_de_Instalacao)
Rem *****
Dim DBParam_Morada_da_Inspeccao as new OleDbParameter
DBParam_Morada_da_Inspeccao.ParameterName = "@Morada_da_Inspeccao"
DBParam_Morada_da_Inspeccao.Value = moradainsp.text
DBParam_Morada_da_Inspeccao.Type = DbType.String
DBComm.Parameters.Add(DBParam_Morada_da_Inspeccao)
Rem *****
Dim DBParam_CodPostal_da_Inspeccao as new OleDbParameter
DBParam_CodPostal_da_Inspeccao.ParameterName = "@CodPostal_da_Inspeccao"
DBParam_CodPostal_da_Inspeccao.Value = codpostal1insp.text & codpostal2insp.text & localidadeinsp.text
DBParam_CodPostal_da_Inspeccao.Type = DbType.String
DBComm.Parameters.Add(DBParam_CodPostal_da_Inspeccao)
Rem *****
Dim DBParam_DataPreferencial_Inspeccao as new OleDbParameter
DBParam_DataPreferencial_Inspeccao.ParameterName = "@DataPreferencial_Inspeccao"
DBParam_DataPreferencial_Inspeccao.Value = datapreferencial.text
DBParam_DataPreferencial_Inspeccao.Type = DbType.String
DBComm.Parameters.Add(DBParam_DataPreferencial_Inspeccao)
Rem A Conexão vai ser aberta.
DBConn.Open()
Rem Altera o conteúdo de uma BD sem precisar de se recorrer a um Dataset.
DBComm.ExecuteNonQuery()
Rem A Conexão vai ser fechada.
DBConn.Close()
End Sub
</script>
...



O problema é que me dá um erro por o interpretador não me estar a reconhecer a Textbox "dataactual" na linha:

DBParam_Data_de_Entrada_do_Pedido_de_Inspeccao.Value = dataactual.text


... diz que o nome "dataactual" não está declarado ?!!!! mas ele está declarado no ficheiro HTML!


Alguém que me possa dar uma dica de como solucionar este problema!


Obrigadão
 
Última edição:
<input name="dataactual" type="text" size="8" maxlength="10" value="" readonly="true">
Não sei responder à tua questão porque não conheço ASP.NET. Só quero é alertar-te para outro problema.

Não te fies nos valores que vêm do formulário, principalmente se vierem de campos 'readonly'. É prefeitamente possível modificar os valores de campos 'readonly'. Depois, se o teu script pensa que eles são correctos, pode dar problemas.

Por exemplo: o teu 'dataactual' é 'readonly' mas eu posso modificar esse valor e meter uma data qualquer, ou até mesmo qualquer coisa que não seja uma data. Se o teu script está à espera que venha uma data bem formatada, pode ter supresas ;-)

Sugestão: trata os valores que vêm de campos 'readonly' ainda com mais cuidado do que tratas os restantes. Se possível, nem utilizes esses valores.
 
Penso que estejas a definir mal a textbox, falta-te o runat="server" e o id, para que seja "visto" como um html server control, de modo a que o asp.net consiga aceder às suas propriedades

Ficaria algo deste tipo:

Código:
<input runat="server" id="dataactual" name="dataactual" type="text" size="8" maxlength="10" value="" readonly="true">

Ou então recorres ao WebControl <asp:TextBox ....... />

edit:

se usares o 1º caso tens de usar a propriedade Value e não Text como tens no teu script, por ex: dataactual.Value, ao passo que no WebControl é ao contrário
 
Última edição:
Ok obrigadão... eu vou modificar o código para ver o que dá :)


Só mais uma coisa, na página aspx, eu tenho definido antes do código HTML um SUB em VB.NET, como é que de dentro do código HTML eu depois posso chamar esse SUB?


tentei fazer: CALL nome_do_Sub, mas deu-me erro. :(
 
Se bem percebi a tua dúvida podes usar o <% %>

Por ex:

Código:
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Private Sub ShowMsg(ByVal arg As String)
        HttpContext.Current.Response.Write(arg)
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form id="form1" runat="server">
        <div>
            Isto é um teste<br /><br />
            <% ShowMsg("Olá mundo!")%>
        </div>
    </form>
</body>
</html>
 
Tudo certo até agora... :D:D:D Obrigadão


Só notei uma coisa curiosa, quando o conteúdo da Form é colocado na BD em Access pelo código ASP.NET, porque razão é que os caracteres com acentos e cedilhas desaparecem?!

Há alguma maneira de evitar isso?
 
Back
Topo