Visual Basic.NET - impedir guardar Numero de factura repetido en la bd

   
Vista:

impedir guardar Numero de factura repetido en la bd

Publicado por EliRD (62 intervenciones) el 23/05/2015 20:57:39
Buenas tardes:

programa en vb.net y uso access

con este código genero el numero de factura y funciona bien.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim maximo As String
Dim Agregar As New OleDbCommand
Agregar.Connection = conexion
Agregar.CommandType = CommandType.Text
Agregar.CommandText = "Select MAX(codigo_factura) As maximo FROM Tbla_Factura"
 
 
Dim objeto As Object = Agregar.ExecuteScalar()
If IsDBNull(objeto) Then
	maximo = 1
	Me.txtCodigoFactura.Text = (maximo)
Else
	maximo = Convert.ToInt32(Agregar.ExecuteScalar()) + 1
	Me.txtCodigoFactura.Text = (maximo)
End If

lo que yo quiero es, que antes de hacer el Insert Into, primero verifique si el numero factura existe y si existe que le sume uno a Me.txtCodigoFactura

este el código con el cual intento hacer este procedimiento.

1
2
3
4
5
6
7
8
9
Dim consulta As String
consulta = "Select * From Tbla_Factura Where codigo_factura ='" & txtCodigoFactura.Text & "'"
comandos = New OleDb.OleDbCommand(consulta, conexion)
adaptador.SelectCommand = comandos
lector = comandos.ExecuteReader
 
If lector.Read = True Then
	Me.txtCodigoFactura.Text = Val(txtCodigoFactura.Text) + 1
End If

pero cuando ejecuto el botón guardar, sale el siguiente error:
No coinciden los tipos de datos, en la exprecion de criterios.

creo que con este código puedo ejecutar el sistema en el equipo, servidor y cliente.

Espero que alguien pueda ayudarme.

Saludos cordiales desde República Dominica.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo

impedir guardar Numero de factura repetido en la bd

Hola, eso es muy simple porque estás queriendo sumar una cadena de texto a un valor entero.

Prueba así:

1
2
3
4
5
6
7
8
9
10
Dim consulta As String
consulta = "Select * From Tbla_Factura Where codigo_factura =@NumeroFactura"
comandos = New OleDb.OleDbCommand(consulta, conexion)
comandos.parameters.Add("@NumeroFactura",OledbType.Integer).Value=Convert.ToInt32(txtCodigoFactura.Text)
adaptador.SelectCommand = comandos
lector = comandos.ExecuteReader
 
If lector.Read = True Then
	Me.txtCodigoFactura.Text =Convert.ToInt32((txtCodigoFactura.Text) + 1).ToString()
End If

Además tienes que ver si ese número de factura no se debe repetir en la tabla establece que sea clave primaria sin duplicados, y en caso que se quiera repetir uno, atrapa la excepcion por repetición.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

impedir guardar Numero de factura repetido en la bd

Publicado por Khristtian (17 intervenciones) el 29/05/2015 18:13:21
Para evitar Numero de Factura duplicado... Requisito esencial en un SGBD.... Indices de unicidad.

Esto es.... a la columna del numero de factura dale la calidad de registro unico, asi el SGBD te generará la excepción de unicidad.
Incluso, en el manejo de errores, puedes detectar esa excepción e intentar nuevamente el código sumando 1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar