rubenmsoares Posted July 2, 2012 at 06:37 PM Report Share #466887 Posted July 2, 2012 at 06:37 PM Olá pessoal. Precisava da vossa ajuda para resolver o meu erro. Estou a criar uma aplicação em asp.net com ligação a base dados access. Tenho um formulario que é preenchido pelo utilizador. Formulário de "cliente". Este formulário que é carregado na base dados tem de estar associado a um utilizador e para isso eu criei outra tabela com o nome "sfidclientes" onde vai conter o "nif" do cliente e o respectivo "sfid" do utilizador O problema é que ao executar, os campos inseridos são registados na tabela "cliente" mas não são acrescentados na tabela "sfidclientes", inclusive indica um erro de "Erro a criar Cliente.Tipo de dados incorrecto na expressão de critérios. " Eu tenho este código. Try Dim cod_cliente As String Button1.Enabled = False Button2.Enabled = True Dim connectionstring = System.Configuration.ConfigurationManager.AppSetti ngs("accessConn") Dim connection As New Data.OleDb.OleDbConnection(connectionstring) Dim myInsertQuery As String = "insert into cliente([PKIDnif],[Nome],[Morada],[Localidade],[Codigo_Postal],[Pessoa_Contato],[Telefone]) values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "','" & TextBox7.Text & "')" Dim mycommand As New Data.OleDb.OleDbCommand(myInsertQuery) mycommand.Connection = connection connection.Open() Dim rs As Data.OleDb.OleDbDataReader = mycommand.ExecuteReader connection.Close() Dim qry3 As String = "select [PKIDnif] from cliente where [PKIDnif] ='" & TextBox1.Text & "'" Dim mycommand3 As New Data.OleDb.OleDbCommand(qry3) Dim myconnection3 As New Data.OleDb.OleDbConnection(connectionstring) mycommand3.Connection = myconnection3 myconnection3.Open() Dim rs3 As Data.OleDb.OleDbDataReader = mycommand3.ExecuteReader If rs3.Read() Then cod_cliente = rs3("PKIDnif") End If myconnection3.Close() Dim qry2 As String = "insert into sfidclientes (FKIDnif,sfid) values('" & cod_cliente & "', 1, " ')" Dim mycommand2 As New Data.OleDb.OleDbCommand(qry2) Dim myconnection2 As New Data.OleDb.OleDbConnection(connectionstring) mycommand2.Connection = myconnection2 myconnection2.Open() Dim rs2 As Data.OleDb.OleDbDataReader = mycommand2.ExecuteReader myconnection2.Close() Label19.Text = "Cliente criado com sucesso." TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox8.Text = "" TextBox1.Enabled = False TextBox2.Enabled = False TextBox3.Enabled = False TextBox4.Enabled = False TextBox5.Enabled = False TextBox6.Enabled = False TextBox7.Enabled = False TextBox8.Enabled = False Button1.Enabled = True Button2.Enabled = False Catch ex As Exception Label19.Text = "Erro a criar Cliente." & ex.Message End Try Podem ajudar-me? Link to comment Share on other sites More sharing options...
Rechousa Posted July 2, 2012 at 07:03 PM Report Share #466898 Posted July 2, 2012 at 07:03 PM Olá, A tua expressão está mal escrita. Não deverá ser isto? Dim qry2 As String = "insert into sfidclientes (FKIDnif,sfid) values('" & cod_cliente & "', 1)" PS1: Formata o código; PS2: Tens problemas graves com SQL Injection. O que estás a fazer (concatenar uma query valores de textboxes. por exemplo) é muito grave e muito propício a erros e ataques. Utiliza parâmetros em vez disso. Além de evitarem injecções de SQL, o teu código fica mais limpinho e mais fácil de ler. Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
rubenmsoares Posted July 2, 2012 at 07:21 PM Author Report Share #466901 Posted July 2, 2012 at 07:21 PM Olá, A tua expressão está mal escrita. Não deverá ser isto? Dim qry2 As String = "insert into sfidclientes (FKIDnif,sfid) values('" & cod_cliente & "', 1)" PS1: Formata o código; PS2: Tens problemas graves com SQL Injection. O que estás a fazer (concatenar uma query valores de textboxes. por exemplo) é muito grave e muito propício a erros e ataques. Utiliza parâmetros em vez disso. Além de evitarem injecções de SQL, o teu código fica mais limpinho e mais fácil de ler. Olá CRLF, Antes demais obrigado pela resposta. Colocando o código como indicas-te ele continua a dar o erro de "Erro a criar Cliente.Tipo de dados incorrecto na expressão de critérios." Eu acredito que não esteja a fazer as coisas da melhor maneira. Infelizmente aprendi num curso de pouca duração algumas noções de asp.net e acredito que tenhão ensinado da forma mais simples mas ao mesmo tempo mais complicada. O problema é que preciso de desenvolver uma aplicaçação de Gestão de clientes em web e não sei de outra forma, mais grave ainda, não consegui entender o teu concelho, "Utiliza parâmetros em vez disso. Além de evitarem injecções de SQL, o teu código fica mais limpinho e mais fácil de ler." 😞 Não me queres indicar uns links de matéria para estudar ou com trabalhos feitos de exemplos? Pois tenho muita vontade e necessidade de aprender. Obrigado Link to comment Share on other sites More sharing options...
Rechousa Posted July 2, 2012 at 09:18 PM Report Share #466918 Posted July 2, 2012 at 09:18 PM (edited) Olá CRLF, Olá! O meu nick é... Rechousa 😛 Antes demais obrigado pela resposta. De nada, é para isso que estamos aqui. Colocando o código como indicas-te ele continua a dar o erro de "Erro a criar Cliente.Tipo de dados incorrecto na expressão de critérios." O campo sfid é do tipo string? Então precisa das plicas.... Dim qry2 As String = "insert into sfidclientes (FKIDnif,sfid) values('" & cod_cliente & "', '1')" Eu acredito que não esteja a fazer as coisas da melhor maneira. Infelizmente aprendi num curso de pouca duração algumas noções de asp.net e acredito que tenhão ensinado da forma mais simples mas ao mesmo tempo mais complicada. O problema é que preciso de desenvolver uma aplicaçação de Gestão de clientes em web e não sei de outra forma, mais grave ainda, não consegui entender o teu concelho, "Utiliza parâmetros em vez disso. Além de evitarem injecções de SQL, o teu código fica mais limpinho e mais fácil de ler." 😞 Não me queres indicar uns links de matéria para estudar ou com trabalhos feitos de exemplos? Pois tenho muita vontade e necessidade de aprender. Links úteis: 1) Tens o blog do Jorge Paulino, nosso moderador e administrador e domina VB.Net. O blog é em Português, pelo vai acompanhando e aprendendo com ele. 2) Em Inglês envio-te um exemplo, mas se pesquisares SQL Injection e VB.Net encontrarás montes de referências. Edited July 2, 2012 at 09:19 PM by Rechousa Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now