Visual Basic.NET - Detectar registros duplicados VB.NET

   
Vista:

Detectar registros duplicados VB.NET

Publicado por Ana Centeno (2 intervenciones) el 23/11/2009 04:48:11
Buenas!! Estoy desarrollando una aplicacion simple en vb.net en la cual deseo almacenar un registro en la tabla clientes, tengo como primarykey el codigo del cliente y quisiera que al agregar un nuevo registro y colocarle un codigo ya existente el sistema me lo detectara y lo mostrara en un msgbox.

Se que en vb6 es tan simple como agregarle un manejador de errores con el numero de error que en este caso seria el 3022 pero no consigo hacer esto ni con el try and catch, ni con el count del datatable (empezando porq no tengo un datatable ni un datareader que seria lo mas optimo) ni con el select count etc etc xq me da un error de (coma) en la sentencia.. por favor si podrian indicarme un fragmento de codigo que pueda ayudarme se los agradeceria, le dejo el codigo q utilizo actualmente con el cual guarda perfect al colocarle un try catch q omita el 3022 pero por supuesto no detecta duplicados...

Dim myCommand As New Data.OleDb.OleDbCommand
Dim accAdapterUpdate As Data.OleDb.OleDbDataAdapter
Dim stringsql As String
AccConexion = New OleDb.OleDbConnection

AccConexion.ConnectionString = stringconexion
AccConexion.Open()
stringsql = "insert into clientes(codigocli,nombrecli,direccli,telfcli,emailcli,movilcli,comentcli,fecha) values ('" & _
code.Text & "','" & name1.Text & "','" & address.Text & "','" & phone.Text & "','" & email.Text & "','" & cel.Text & "','" & comment.Text & "','" & date1.Text & "')"
accAdapterUpdate = New OleDb.OleDbDataAdapter(stringsql, AccConexion)
myCommand.CommandText = stringsql
myCommand.Connection = AccConexion
accAdapterUpdate.UpdateCommand = myCommand
accAdapterUpdate.UpdateCommand.ExecuteNonQuery()
MsgBox("Registro guardado con éxito", MsgBoxStyle.Information)
AccConexion.Close()
AccDataset = New Data.DataSet
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

RE:Detectar registros duplicados VB.NET

Publicado por csdk (17 intervenciones) el 23/11/2009 18:17:30
mmmm demaciado rollo para algo tan simple, genera el codigo sigiente asi evitas errores, para el codigo del cliente
Public Function ID(ByVal Tabla, ByVal Campo) As Integer
Dim i As Integer
On Error GoTo Mensaje
Conex()

Dim m_daDataAdapter = New Npgsql.NpgsqlDataAdapter("Select MAX (" & Campo & ")AS ultimo from " & Tabla & "", ADOCONN)
Dim m_cbCommandBuilder = New Npgsql.NpgsqlCommandBuilder(m_daDataAdapter)
Dim m_dsClientes = New DataSet
m_daDataAdapter.Fill(m_dsClientes)
Tabla = m_dsClientes.Tables(0).clone
For Each row As DataRow In m_dsClientes.Tables(0).rows
Tabla.ImportRow(row)
Next
i = Tabla.Rows(0).Item(0).ToString
ID = i + 1
desconectar()
Exit Function
Mensaje:
ID = 1
desconectar()
End Function
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

ayuda

Publicado por lau (1 intervención) el 20/04/2011 04:34:42
Estoy siguiendo los pasos de tu solucion pero me sale error: relation Ventas no existe, no he podido d en realizar una simple consulta de seleccion. como debo configurar los parametros del dataset y dataadapter en diseño. tengo base de datos en postgres y la aplicacion en .net. y una forma con un datagridview cuya primera columna es un comboboxcolumn que se llena al cargar l forma con los articulos de la tabla articulos, una columna precio que debe llenarse del valor q devuelva la consulta q estoy tratando hacer una vez se seleccione del combo el articulo, y una columna cantidad q la llena el usuario es un textboxcolumn y una ultima columna total q es resultado de una operacion.
dejo un trozo de codigo en el evento datagridview_selectindexchanged :
Dim precio As Double = 0
'begin my code

Dim _ObjConn As NpgsqlConnection = New NpgsqlConnection(Conexion)
Dim ElDataTable As DataTable = New DataTable
Dim ElComando As NpgsqlCommand
Dim ds As New DataSet
Try
Dim strCommand As String = "SELECT Valor_unitario FROM Ventas Where Cod_arti=@CodartiDataGridViewTextBoxColumn"
ElComando = New NpgsqlCommand(strCommand, _ObjConn)
ElComando.CommandType = CommandType.Text
Dim da As New NpgsqlDataAdapter(ElComando)
ElComando.Parameters.AddWithValue("@CodartiDataGridViewTextBoxColumn", Convert.ToDouble(combo.SelectedValue))
_ObjConn.Open()

'da.SelectCommand.CommandText = strCommand
Dim m_cbCommandBuilder = New Npgsql.NpgsqlCommandBuilder(da)
'da.SelectCommand = ElComando
da.Fill(ElDataTable)
ElDataTable = ds.Tables(0).Clone
precio = ElDataTable.Rows(0).Item(0).ToString
precio = ElComando.ExecuteScalar() 'Convert.ToDouble()
'End Using
Dim row As DataGridViewRow = DataGridView2.CurrentRow
row.Cells("Valor Unitario").Value = precio
_ObjConn.Close()
toda la orientacion q me puedas prestar estaria agradecida
feliz noche
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

RE:Detectar registros duplicados VB.NET

Publicado por carlos-adan@hotmail.com (33 intervenciones) el 03/12/2009 04:58:55
Bueno esto es tan facil, y ya estabas cerca, porque la solucion esta en el SQLDatareader, o OLEDBDatareaDer Es lo mismo

Bueno esl reader lo que hace es Leer registros hacia adelante, corrcto, ahora existe una porpiedad del datareader que se llama

Datareader.HasRows

Esa propiedad es la que hace que un registro estee al tanto y puedas preguntar si existe o no existe este registro.

Mira Aqui te lo dejo en SQL Server tu lo cambias a OLEDB es Facil
Bueno parece que no l otraje jejejeje :D Bueno ya otro dia te lo mando pero es con ese metodo Chau.

Arequipa - Peru
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

RE:Detectar registros duplicados VB.NET

Publicado por xavier (1 intervención) el 24/02/2014 13:06:05
controla el error con un try
Try
ejecuta_consulta
Catch ex as Exception
evalua el tipo de error y haz lo que quieras.

End Try
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

RE:Detectar registros duplicados VB.NET

Publicado por Carlos cgprognet@hotmail.com (33 intervenciones) el 25/02/2014 00:08:38
En el Evento Leave de code.Text, en el instante que terminas de escribir el código del cliente y quitas cursor al textbox
(code.Text) se ejecuta este evento Leave, en ese instante verifica si existe el código del cliente en la tabla respectiva...
si existe salta el error, si no hay error sigue la ejecución del programa....este mismo código puedes poner en el botón Guardar al inicion....

Private Sub code.Text _Leave(sender As System.Object, e As System.EventArgs) Handles TextBox2.Leave

Dim CONSULTA As New SqlDataAdapter("SELECT * FROM clientes WHERE codigocli=@codigocli", CONEXION)
CONSULTA.SelectCommand.CommandType = CommandType.Text
CONSULTA.SelectCommand.Parameters.AddWithValue("@codigocli", code.Text)
Dim TABLA As New DataTable
CONSULTA.Fill(TABLA)
If TABLA.Rows.Count > 0 Then
MessageBox.Show("El código del cleinte ya existe...")
code.Text.SelectAll()
code.Text.Focus()
End If
End Sub

Saludos.
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