1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ASP.NET não me reconhece Textbox

Discussão em 'Web Development' iniciada por peter alien, 6 de Dezembro de 2007. (Respostas: 5; Visualizações: 2154)

  1. peter alien

    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: 6 de Dezembro de 2007
  2. slack_guy

    slack_guy Power Member

    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.
     
  3. p3dro

    p3dro Power Member

    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: 6 de Dezembro de 2007
  4. peter alien

    peter alien Power Member

    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. :(
     
  5. p3dro

    p3dro Power Member

    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>
     
  6. peter alien

    peter alien Power Member

    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?
     

Partilhar esta Página