Error por desbordamiento

25/02/2007 - 07:01 por Angel Said de la Vega | Informe spam
Que tal buen dia ...

tengo un problema que no he podido corregir . les mando el codigo que
estoy usando para ver si alguien me puede dar una pequeña ayuda .. porque la
verdad estoy sumamente agobiado por este error, es una rutina para agregar un
registro en la base de datos en access ..

Saludos y gracias

Private Sub btnRegistrar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnRegistrar.Click
'Creando y cargando connection y command
Dim cont As Integer = 0
Dim oconn As OleDbConnection
Dim orden As OleDbCommand


'Abriendo la coneccion
oconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data
Source=C:\Documents and Settings\avega\My Documents\Visual Studio
2005\Projects\test3\test3\db.mdb")

'Crearn y cargando un objecto command


Dim sql As String = "insert into clientes(NombreCliente,
DireccionCliente, TelCliente)values(@idCliente, @NombreCliente,
@DireccionCliente, @TelCliente)"

orden = New OleDbCommand(sql, oconn)

orden.Parameters.Add(New OleDbParameter("@idCliente",
OleDbType.Integer, 20))
orden.Parameters("@idCliente").Value = txtId.Text

orden.Parameters.Add(New OleDbParameter("@NombreCliente",
OleDbType.VarWChar, 20))
orden.Parameters("@NombreCliente").Value = txtNombre.Text

orden.Parameters.Add(New OleDbParameter("@DireccionCliente",
OleDbType.VarWChar, 100))
orden.Parameters("@DireccionCliente").Value = txtDireccion.Text

orden.Parameters.Add(New OleDbParameter("@TelCliente",
OleDbType.Integer, 20))
orden.Parameters("@TelCliente").Value = txtTelefono.Text

'mandando SQL a la base de datos

orden.Connection.Open()
orden.ExecuteNonQuery()
orden.Connection.Close()

'limpiando los textboxs para otra inseccion

txtNombre.Text = ""
txtDireccion.Text = ""
txtTelefono.Text = ""

'Avisando la inseccion

lblRegistro.Text = "Registro N°: " & cont.ToString() & " insertado"


End Sub
 

Leer las respuestas

#1 Alberto Poblacion
25/02/2007 - 08:26 | Informe spam
"Angel Said de la Vega" wrote
in message news:
[Error por desbordamiento]
tengo un problema que no he podido corregir . les mando el codigo que
estoy usando para ver si alguien me puede dar una pequeña ayuda .. porque
la
verdad estoy sumamente agobiado por este error, es una rutina para agregar
un
registro en la base de datos en access ..



El código, asi a primera vista, parece casi todo correcto. Veo un par de
cosas:
- En la sentencia SQL has nombrado los parámetros con "@...". Esto se
hace con el cliente System.Data.SqlServer, pero con el OleDb los parámetros
son símplemente interrogaciones "?".
- Declaras parámetros de tipo Integer con longitud 20, cuando los
Integer siempre tienen longitud 4 (es el número de bytes que ocupan en
memoria, no el número de dígitos que les metes, que en cualquier caso no
podrían ser más de 10).
Aparte de eso, lo único que veo que pueda ocasionar un desbordamiento
son las converisones implícitas de String a Integer que has metido en donde
asignas los textos de los textboxes al Value de los parámetros. Si el texto
contiene un número demasiado grande (o algo que no sea numérico) dará un
error al convertirlo.
Ojo también con el tamaño de los Integer, que en VB son de 32 bits, no
vaya a ser que las columnas en Access las tengas definidas con enteros de 16
bits.Esto te daría errores al intentar meter valores mayores de 32767.

Preguntas similares