quintelab 91 Denunciar post Postado Janeiro 27, 2009 Tudo que esta dentro do objeto email você terá que jogar para variáveis, pois quando você der um close no objeto email, pode esquecer que não usará mais ele. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Janeiro 27, 2009 Tudo que esta dentro do objeto email você terá que jogar para variáveis, pois quando você der um close no objeto email, pode esquecer que não usará mais ele. Abraços... tudo o q?eu fiz assim: Dim vemail As String = email.HasRows Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 28, 2009 Agora que copiei seu código para testar que reparei, você esta tentando usar um ExecuteReader para o insert e o update. Esta errado. Utilize o ExecuteNonQuery para executar comandos no banco. E utilizando o ExecuteNonQuery não precisa mudar nada, pode deixar o código como esta. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Janeiro 29, 2009 Agora que copiei seu código para testar que reparei, você esta tentando usar um ExecuteReader para o insert e o update. Esta errado. Utilize o ExecuteNonQuery para executar comandos no banco. E utilizando o ExecuteNonQuery não precisa mudar nada, pode deixar o código como esta. Abraços... fiz a seguinte mudança no código, mas esta dando erro, na linha do comando.executenonquery:"Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro. " e se substituo o executedatareader por executenonquery, da esse erro: " value of type integer cannot be converted to System.Data.SqlClient.SqlDataReader", devo q trocar para DataAdapter? Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() email.Read() If email.HasRows = True Then If email("email") <> txt_email.Text Then Session("email") = txt_email.Text comando.CommandText = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" comando.ExecuteNonQuery() ElseIf email("email") = "" Then comando.CommandText = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" comando.ExecuteNonQuery() End If conexao.Close() End If Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 29, 2009 Como declarou essa variável comando? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Janeiro 29, 2009 Como declarou essa variável comando? Abraços... Dim comando As New Data.SqlClient.SqlCommand Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 29, 2009 Tente o seguinte: Dim conexao As New Data.SqlClient.SqlConnection("") Dim comando As Data.SqlClient.SqlCommand Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader Dim sql As String Dim emailLinha As Boolean = False comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() email.Read() If email.HasRows = True Then emailLinha = True If email("email") <> "" Then Session("email") = "" sql = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" ElseIf email("email") = "" Then sql = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" End If End If email.Close() If (emailLinha) Then comando = New Data.SqlClient.SqlCommand comando.CommandText = sql comando.ExecuteNonQuery() End If conexao.Close() Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Janeiro 29, 2009 Tah dando erro: ExecuteNonQuery: propriedade Connection não foi inicializada. me disseram q eu poderia fazer dessa forma tbm, mas tah dando erro, tbm...rsrs Erro: Operator '=' is not defined for types char and boolean Protected Sub btn_enviar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_enviar.Click Dim conexao As New Data.SqlClient.SqlConnection("conexao") Dim comando As New Data.SqlClient.SqlCommand comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("ra") & "'" Dim email As String = comando.ExecuteNonQuery().ToString If email("email") <> txt_email.Text Then Session("email") = txt_email.Text comando.CommandText = "Update tabela1 set email='" & Session("email") & "',ativo='N' where al_codigo='" & Session("ra") & "'" comando.ExecuteNonQuery() ElseIf email("email") = "" Then comando.CommandText = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("ra") & "','" & Session("email") & "','N')" comando.ExecuteNonQuery() End If conexao.Close() End Sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 30, 2009 Você tem que aprender a ler o erro e resolver baseado no erro. Estou fazendo sem testar, de cabeça e baseado no seu código. Dim conexao As New Data.SqlClient.SqlConnection("") Dim comando As Data.SqlClient.SqlCommand Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader Dim sql As String Dim emailLinha As Boolean = False comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() email.Read() If email.HasRows = True Then emailLinha = True If email("email") <> "" Then Session("email") = "" sql = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" ElseIf email("email") = "" Then sql = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" End If End If email.Close() If (emailLinha) Then comando = New Data.SqlClient.SqlCommand comando.Connection = conexao comando.CommandText = sql comando.ExecuteNonQuery() End If conexao.Close() Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Janeiro 30, 2009 não posso alterar essas duas linhas senao ele perde a lógica... ele tem q pegar o textbox, senao ele entra sempre no insert e n do update como alguns casos. e se mudo essas linhas onde você colocou da erro : "Variable 'sql' is used before it has a been assigned a value. A null reference exception could result at runtime" e tbm erro: 'ExecuteNonQuery: propriedade CommandText não foi inicializada.' If email("email") <> txt_email.Text Then Session("email") = txt_email.Text Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Janeiro 31, 2009 Mas não mudei seu if, só criei uma variável que é alimentada com o valor do IF. Referente a variável sql, defina um valor default para ela, desta forma: Dim sql As String = String.Empty Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 2, 2009 entao o insert n funciona preciso q se o select for falso ele execute o insert ao inves do update Dim conexao As New Data.SqlClient.SqlConnection("") Dim comando As Data.SqlClient.SqlCommand Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader Dim sql As String = String.Empty Dim emailLinha As Boolean = False comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() email.Read() If email.HasRows = True Then emailLinha = True If email("email") <> "" Then Session("email") = "" sql = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" ElseIf email("email") = "" Then sql = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" End If End If email.Close() If (emailLinha) Then comando = New Data.SqlClient.SqlCommand comando.Connection = conexao comando.CommandText = sql comando.ExecuteNonQuery() End If conexao.Close() será q você poderia me explicar o q fez pra q eu entenda, vou precisar disso em outras páginas tbm Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 2, 2009 Isso é questão de lógica apenas, o seu insert estava no if do email("email") = "", eu utilizei da mesma forma, agora você esta falando se o select for falso. Você tem que executar o Insert quando o select não retornar nada ou quando o e-mail for igual a ""? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 3, 2009 Isso é questão de lógica apenas, o seu insert estava no if do email("email") = "", eu utilizei da mesma forma, agora você esta falando se o select for falso. Você tem que executar o Insert quando o select não retornar nada ou quando o e-mail for igual a ""? Abraços... seria a mesma coisa...pq se email("email")= "" o select não irá retornar nda Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 3, 2009 Dim conexao As New Data.SqlClient.SqlConnection("") Dim comando As Data.SqlClient.SqlCommand Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader Dim sql As String = String.Empty comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() email.Read() If email.HasRows = True Then Session("email") = "" sql = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" Else sql = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" End If email.Close() comando = New Data.SqlClient.SqlCommand comando.Connection = conexao comando.CommandText = sql comando.ExecuteNonQuery() conexao.Close() Tente desta forma. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 3, 2009 desta forma n funcionou ele n entra nem no update e nem no insert Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 3, 2009 Vou retirar sua verificação de HasRows, acho que não tem necessidade: Dim conexao As New Data.SqlClient.SqlConnection("") Dim comando As Data.SqlClient.SqlCommand Dim email As Data.SqlClient.SqlDataReader Dim email2 As Data.SqlClient.SqlDataReader Dim sql As String = String.Empty comando.Connection = conexao conexao.Open() comando.CommandText = "Select * from tabela1 where al_codigo='" & Session("cod") & "'" email = comando.ExecuteReader() If email.Read() Then Session("email") = "" sql = "Update tabela1 set email='" & Session("txt_email") & "',ativo='N' where al_codigo='" & Session("cod") & "'" Else sql = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & Session("email") & "','N')" End If email.Close() comando = New Data.SqlClient.SqlCommand comando.Connection = conexao comando.CommandText = sql comando.ExecuteNonQuery() conexao.Close() Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 4, 2009 agora resolveu faltava colocar emailLinha = True no else se n ele n entra no ultimo bloco de codigo para executar o sql muito obrigada pela paciencia e ajuda mais uma vez topico resolvido Compartilhar este post Link para o post Compartilhar em outros sites