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
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

impedir guardar Numero de factura repetido en la bd

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 25/05/2015 05:51:04
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
sin imagen de perfil

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