Jump to content

Archived

This topic is now archived and is closed to further replies.

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>

Share this post


Link to post
Share on other 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()

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.....????

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.