Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cintiadel

[Resolvido] newsletter em asp net

Recommended Posts

gostaria de inserir, atualizar enfim essas informações de acordo com o q for selecionado, mas estou tentando uma grande dificuldade com os vários ifs q tenho q fazer

eu tenho seguinte formulario abaixo:

 

 

<table>
		<tr>
			<td colspan="2">
				<span class="style6">Cadastre seu e-mail :</span></td>
		</tr>
		<tr>
			<td class="style7">
				E-mail:</td>
			<td style="text-align: left">
				<asp:TextBox ID="txt_email" runat="server" Width="300px"/>
			 </td>
		</tr>
		<tr>
			<td colspan="2">
				<span class="style6">Selecione quais informações você deseja receber em seu e-mail:
				</span></td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2" class="style8">
				<asp:CheckBox ID="ckb_n" runat="server" 
					Font-Names="Arial Unicode MS" Font-Size="Small" 
					Text="Servico 2"/>
			</td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2" class="style8">
				<asp:CheckBox ID="ckb_b" runat="server" Font-Names="Arial Unicode MS" 
					Font-Size="Small" Text="Serviço 2" />
			</td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2">
				<asp:ImageButton ID="btn_enviar" runat="server" 
					ImageUrl="~/img/enviar.png" />
			</td>
		</tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites
bom é bem parecido com o q eu quero mas n ensina como fazer...

ao clicar no botão cadastrar e-mail ele me exibe a tela postada acima.

se a pessoa ja estiver cadastrada, ele me traz os dados, como no outro post q estava me ajudando.

o problema é que eu n estou conseguindo fazer com q ele verifique e capture se a pessoa alterou o e-mail no text box,

segue o meu codigo abaixo:

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		Dim conexao As New Data.SqlClient.SqlConnection("stringdeconexao")
		Dim comando As New Data.SqlClient.SqlCommand
		Dim email As Data.SqlClient.SqlDataReader
		Dim serv As Data.SqlClient.SqlDataReader

		conexao.Open()
		comando.Connection = conexao
		comando.CommandText = "Select codigo, al_codigo, cod_servico, email from tabela1 
inner join tabela2 ON tabela2.codigo = tabela1.al_codigo where tabela2.codigo='" & Session("cod") & "'"
		email = comando.ExecuteReader()
		email.Read()

		If email.HasRows = True Then
			txt_email.Text = email("email")
		Else
			txt_email.Text = ""
		End If
		conexao.Close()

		conexao.Open()
		comando.Connection = conexao
		comando.CommandText = "Select * from tabela2 where al_codigo='" & Session("cod") & "' and cod_servico=1"
		serv = comando.ExecuteReader()
		serv.Read()


		'Converte o valor para booleano
		If serv.HasRows = True Then
			ckb_n.Checked = CBool(serv("cod_servico"))
		Else
			ckb_n.Checked = False
		End If

		conexao.Close()

		conexao.Open()
		comando.Connection = conexao
		comando.CommandText = "Select * from tabela2 where al_codigo='" & Session("ra") & "' and cod_servico=2"
		serv = comando.ExecuteReader()
		serv.Read()

		If serv.HasRows = True Then
			ckb_b.Checked = CBool(serv("cod_servico"))
		Else
			ckb_b.Checked = False
		End If
		conexao.Close()


	End Sub

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("stringdeconexao")
		Dim comando As New Data.SqlClient.SqlCommand
		Dim email 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
				Response.Write("txt_email")
				Session("email") = Request.Form(txt_email.Text)
				comando.CommandText = "Update tabela1 set email='" & Session("email") & "',ativo='N' where al_codigo='" & Session("cod") & "'"
			ElseIf email("email") = "" Then
				comando.CommandText = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & txt_email.Text & "','N')"

			End If
			conexao.Close()
		End If

		conexao.Open()
		comando.CommandText = "Delete from tabela2 where al_codigo='" & Session("cod") & "'"
		email = comando.ExecuteReader()
		email.Read()
		conexao.Close()

		If ckb_n.Checked = True Then
			conexao.Open()
			comando.CommandText = "Insert into tabela2 (al_codigo,cod_servico) values ('" & Session("cod") & "',1)"
			email = comando.ExecuteReader()
			email.Read()
		End If

		If ckb_b.Checked = True Then
			conexao.Open()
			comando.CommandText = "Insert into tabela2 (al_codigo,cod_servico) values ('" & Session("cod") & "',2)"
			email = comando.ExecuteReader()
			email.Read()

		End If
		conexao.Close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe um botão próprio pra isso, alterar e-mail?

 

Abraços...

ao clicar no botao cadastrar e-mail, ele exibe a tela acima, nessa tela ele pode cadastrar se n estiver cadastrado, ou alterar o e-mail e o q ele quer receber.

e ao clicar no botao enviar, eu quero q ele verifique o caso e execute o sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta, mas para alterar ele tem que informar o antigo ou ter alguma tela de login antes de poder alterar se não é impossível saber é um novo cadastrado ou não.

 

Abraços...

o sistema é assim, é uma central de alunos, onde o aluno tem a tela de login, ao entrar ele tem a opcao de ver as notas, etc.

uma das opções é o botão cadastrar e-mail, onde ele pode escolher receber avisos, como as notas e boletos por e-mail.

no caso ele n precisa informar o antigo, pq se estiver cadastrado a tela ja vai exibir o antigo, so preciso checar se ele alterou as opcoes, se ele alterou dar o update, e se n estava cadastrado preciso executar o insert.

será q deu pra entender agora.....????

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq se estiver cadastrado a tela ja vai exibir o antigo

Você irá exibir o antigo em um textbox ou label. Só verificar se o texto do seu objeto é diferente de branco, se for quer dizer que já existia um antigo.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq se estiver cadastrado a tela ja vai exibir o antigo

Você irá exibir o antigo em um textbox ou label. Só verificar se o texto do seu objeto é diferente de branco, se for quer dizer que já existia um antigo.

 

Abraços...

 

estou exibindo num textbox, mas ao digitar um novo n estou conseguindo capturar o novo email digitado, só o q ele trouxe do banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você esteja esquecendo de colocar dentro da do IF:

 

If Not IsPostBack Then
  'Seu Código
End If

Abraços...

estava esquecendo de colocar Not IsPostBack

mas continuo com problema

como executar datareaders diferentes?

como e onde fechar o datareader?

está dando erro: Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro.

 

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") & "'"
				email2 = comando.ExecuteReader
				email2.Read()
			ElseIf email("email") = "" Then
				comando.CommandText = "Insert into tabela1 (al_codigo,email,ativo) values ('" & Session("cod") & "','" & txt_email.Text & "','N')"
				email2 = comando.ExecuteReader
				email2.Read()
			End If
			conexao.Close()
		End If

Da erro: Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que fechar o primeiro para criar outro. Armazene os resultados que precisa do primeiro em variáveis.

 

Abraços...

fechei colocando:

 

email.Close()
e deu "Tentativa inválida de HasRows quando a leitora estava fechada."

 

declarei a varivel dessa forma:

Dim vemail As String = email.HasRows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse você terá que gravar os resultados em variáveis, pois quando fechar seu DataReader não poderá mais acessa-lo.

 

Abraços...

mas eu n acabo de fazer isso?

o que eu devo jogar na variavel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.