Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Ayuda con VB .net (http://www.forosdelweb.com/f29/ayuda-con-vb-net-114073/)

vamp_02 30/01/2003 18:05

Ayuda con VB .net
 
Hola a todos, he retomado el .net, y tengo ya un problema
en visual Studio .net:

tengo un form, que se llama usuarios, detro de este tengo
4 controles (login,password, password2, nombre y boton),
debidamente validados y comparados.

ahora como hago para que cuando presione el boton, vaya a
la bbdd (Access),use la tabla usuarios, verifique si el
usuario existe.
si existe, envie un mensaje en la misma pagina de error, y
si no existe que lo inserte.

Eso creo que es facil, pero no se hacerlo con asp .net en
el entorno de Visual studio .net

De ante mano Gracias

Henry Zapata 30/01/2003 20:39

Hola:

No es suficiente con coloacar el c骴igo en el evento click del boton? igual a como si fuera un winform..

vamp_02 31/01/2003 05:27

Pedon, y gracias por tu respuesta, pero lo que necesito es primero que nada:

.- Insertar un registro en un BBDD, Access, por .net


Te cuento, he buscado en algunas paginas y los ejemplo los copio, pero no me dan resultado.


Asi que sigo averiguando.

Henry Zapata 31/01/2003 09:26

Hola:

Aqui tienes un ejemplo de acceso a una BD Access en .NET
fijate solo en la forma de conectarse.. no en la forma de llenar
el dataset (que es una prueba para hacer una paginaci髇 personalizada).

/**********************************************/
Imports System.Data.OleDb
Public Class foro
Inherits System.Web.UI.Page
Protected WithEvents dgPreguntas As System.Web.UI.WebControls.DataGrid

Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb") & ";"
Dim cnnMoviplus As New OleDbConnection(strConnection)
Public currentIndex As Integer = 0
Dim pageSize As Integer = 2


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim orderSQL As String = "SELECT * FROM preguntas"
Dim daEstablecimientos As OleDbDataAdapter = New OleDbDataAdapter(orderSQL, cnnMoviplus)
Dim dsEstablecimientos As DataSet = New DataSet()
daEstablecimientos.Fill(dsEstablecimientos, currentIndex, pageSize, "Establecimientos")
dgPreguntas.DataSource = dsEstablecimientos
dgPreguntas.DataBind()
End Sub

/**************************************************/

vamp_02 31/01/2003 10:11

Henrry, ya logre que se insertara un registro (en oracle), pero ahora necesito hacer un par de validaciones:

.- Que si el Registro existe

supongamos:

Tengo el Form, Login y password, que tengo que poner si el usuario trata de inscribirse y su login ya existe.

<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="aa.aspx.vb" Inherits="TCCUOTAS.aa" Debug="true"%>
<HTML>
<script runat="server">
Sub addusu_click(obj As object, e As eventargs)
if ispostback() then
Dim objConn As New OleDbConnection ("Provider=MSDAORA.1;Password=clcabrer;User ID=clcabrer;Data Source=ccabrera")
If(Page.IsValid)
Dim sSQL, Resul as string
sSQL = "Insert into usu (USUARIO,PASSWORD) values ('" & login.text & "','" & password.text & "')"
Dim objCmd As New OleDbCommand (sSQL, objConn)
objConn.open
resul= objCmd.ExecuteNonQuery()
if resul="" then
response.write ("Registro agregado")
else
response.write ("Registro no agregado")
End if
else
response.write ("Registro no agregado")
end if
end if
obj.Connection.Close()
End sub
</script>
<body>
<form id="Form1" runat="server">
Insertar nuevo cliente:
<br>
<br>
<hr>
Nombre:
<ASP:TEXTBOX id="login" runat="Server" AutoPostBack="True"></ASP:TEXTBOX><br>
password:
<ASP:TEXTBOX id="password" runat="Server"></ASP:TEXTBOX><br>
<ASP:BUTTON id="Enviar" onclick="addusu_click" runat="Server" Text="Enviar"></ASP:BUTTON><br>
<hr>
</form>
</body>
</HTML>


Este cogi no me sirve, porque me devuelve este error.


ORA-00001: restricci髇 鷑ica (CLCABRER.PK_USU) violada
Descripci贸n: Excepci贸n no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener m谩s informaci贸n acerca del error y d贸nde se origin贸 en el c贸digo.

Detalles de la excepci贸n: System.Data.OleDb.OleDbException: ORA-00001: restricci髇 鷑ica (CLCABRER.PK_USU) violada


Como lo hago para manejar este error, que no me aprezca en pantalla, pero si que aparezca un mensaje "Error:Usuario ya existe"

Algo asi.


Gracias

Henry Zapata 31/01/2003 10:21

Hola:

Puedes usar el try/catch.. Aqui un ejemplo

/*********************/
Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click


Try
Dim modelo As New Modelo()
modelo.nombre = txtNombre.Text
modeloJoyaDB.InsertarModeloJoya(modelo)
dgModelo.DataSource = modeloJoyaDB.listarModeloJoya.Tables(0)
Catch ex As SqlException
MessageBox.Show(ex.Message, "Informaci髇 del Modelo de Joya", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Catch ex As Exception
MessageBox.Show(ex.Message, "Informaci髇 del Modelo de Joya", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Finally
txtNombre.Focus()
txtNombre.Clear()
intCodigoModelo = 0
End Try
End Sub

/*****************/

vamp_02 31/01/2003 10:34

para que sirven el try/catch, disculpa mi ignorancia.

Es que no te entiendo.


disculpa mi lentitud

Henry Zapata 31/01/2003 10:42

Hola:

lee primero esto, y si tienes cualquier duda luego, avisa nomas.

http://es.gotdotnet.com/quickstart/howto/doc/catch.aspx

vamp_02 31/01/2003 10:46

Perdona, pero sigo sin entender!!!

Henry Zapata 31/01/2003 10:54

Hola:

El try/catch se utiliza para manejar los errores (Aunque deberia ser la ultima opcion a usar). Todos los lenguajes siempre tienen una forma de manejar errores, en VB 6.0 era el ON ERROR GO TO, en JAVA try/catch y en .NET es try/catch tambien.

Try

'Aqui escribes el codigo que PUEDE producir error
insertando datos...
conexion.commit

Catch e As Exception

'Aqui lo que quieres mostrar al ocurrir el error.
conexion.rollback
messagebox.show("se produjo un error")

Finally

'Aqui pones lo que siempre se ejecutara no importando si
'hubo o no un error
conexion.close

End Try

vamp_02 31/01/2003 11:02

creo, creo, pero no estoy seguro si entendi.


Voy a probar y te cuento.

vamp_02 31/01/2003 11:16

no me resulto, podrias decrime en que vaya esta cosa....


<HTML>
<script runat="server">
Sub addusu_click(obj As object, e As eventargs)
if ispostback() then
Dim objConn As New OleDbConnection ("Provider=MSDAORA.1;Password=clcabrer;User ID=clcabrer;Data Source=ccabrera")
Dim sSQL, Resul as string
sSQL = "Insert into usu (USUARIO,PASSWORD) values ('" & login.text & "','" & password.text & "')"
Dim objCmd As New OleDbCommand (sSQL, objConn)
objConn.open
try
'Aqui escribes el codigo que PUEDE producir error
resul= objCmd.ExecuteNonQuery
message.show("Registro Insertado")
Catch
'Aqui lo que quieres mostrar al ocurrir el error.
message.show("se produjo un error")
Finally
'Aqui pones lo que siempre se ejecutara no importando si hubo o no un error
conexion.close
End if
End sub

</script>


Gracias

Henry Zapata 31/01/2003 11:23

Hola:

Catch e As Exception

conexion.close ' es solo un ejemplo, objConn.close podria ser

donde esta el end try???

vamp_02 31/01/2003 11:30

Bueno lo pobre, lo corregi, y me dice:

L胈nea 14: 'Aqui escribes el codigo que PUEDE producir error
L胈nea 15: resul= objCmd.ExecuteNonQuery
L胈nea 16: message.show("Registro Insertado") <-- aca
L胈nea 17: Catch e As Exception
L胈nea 18: 'Aqui lo que quieres mostrar al ocurrir el error.


y este es el codigo:

<HTML>
<script runat="server">
Sub addusu_click(obj As object, e As eventargs)
if ispostback() then
Dim objConn As New OleDbConnection ("Provider=MSDAORA.1;Password=clcabrer;User ID=clcabrer;Data Source=ccabrera")
Dim sSQL, Resul as string
sSQL = "Insert into usu (USUARIO,PASSWORD) values ('" & login.text & "','" & password.text & "')"
Dim objCmd As New OleDbCommand (sSQL, objConn)
objConn.open
try
'Aqui escribes el codigo que PUEDE producir error
resul= objCmd.ExecuteNonQuery
message.show("Registro Insertado")
Catch e As Exception
'Aqui lo que quieres mostrar al ocurrir el error.
messagebox.show("se produjo un error")
Finally
'Aqui pones lo que siempre se ejecutara no importando si hubo o no un error
objConn.close
End Try
End if
End sub

</script>

Henry Zapata 31/01/2003 11:35

:'(

messagebox.show("se produjo un error")

vamp_02 31/01/2003 11:36

??? :pensando: :pensando:

Henry Zapata 31/01/2003 11:41

Hola:

Uhm.. el ejemplo que te di era solo para que vieras el uso del try cach.. el error esta en usar showmessge para mostrar el mensaje
cuando estamos en un script de servidor.

Lo que yo haria es poner una etiqueta que la haria invisible o visible segun exista el error

Label1.Text = "error"
Label1.Visible = True

Henry Zapata 31/01/2003 11:45

Hola:

Podrias usar el customValidator pero tienes que leer un poco mas sobre VALIDACION DE DATOS EN .NET antes.

vamp_02 31/01/2003 11:46

ya corregui el error, coloque el Label1, ahora me da error en esta linea.


Catch e As Exception este es el codigo ahora:


<script runat="server">
Sub addusu_click(obj As object, e As eventargs)
if ispostback() then
Dim objConn As New OleDbConnection ("Provider=MSDAORA.1;Password=clcabrer;User ID=clcabrer;Data Source=ccabrera")
Dim sSQL, Resul as string
sSQL = "Insert into usu (USUARIO,PASSWORD) values ('" & login.text & "','" & password.text & "')"
Dim objCmd As New OleDbCommand (sSQL, objConn)
objConn.open
try
'Aqui escribes el codigo que PUEDE producir error
resul= objCmd.ExecuteNonQuery
label1.Text="se produjo un error"
Label1.visible=true
Catch e As Exception
'Aqui lo que quieres mostrar al ocurrir el error.
label1.Text="Se produjo un error"
Label1.visible=true

Finally
'Aqui pones lo que siempre se ejecutara no importando si hubo o no un error
objConn.close
End Try
End if
End sub

</script>

Henry Zapata 31/01/2003 11:55

Hola:

cambia el e por otra variable, por ejemplo ex
lo que pasa es que e es una variable reservada

Catch ex As Exception

vamp_02 31/01/2003 12:08

bien, perfecto ya funciono......................mil gracias, cualquier duda te puedo volver a molestar.


Gracias

Henry Zapata 31/01/2003 12:10

salio ??? :borracho: :cool: :-)

vamp_02 31/01/2003 12:11

sip espectacular.............

Y vuelvo a decirte sii te puedo molestar mas adelante que de hecho asi lo creo.



Gracias :arriba: :-)


La zona horaria es GMT -6. Ahora son las 12:33.

Desarrollado por vBulletin® Versi髇 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.