Foros del Web » Programación para mayores de 30 ;) » .NET »

No duplicar datos bd

Estas en el tema de No duplicar datos bd en el foro de .NET en Foros del Web. hola amigos, tengo un problema que llevo días y no consigo arreglar, tengo este código; Public Sub copiaintro() Dim adapta2 As New OleDbDataAdapter Dim datavacio ...
  #1 (permalink)  
Antiguo 25/06/2011, 02:34
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 13 años, 5 meses
Puntos: 5
Pregunta No duplicar datos bd

hola amigos, tengo un problema que llevo días y no consigo arreglar, tengo este código;

Public Sub copiaintro()

Dim adapta2 As New OleDbDataAdapter
Dim datavacio As New DataSet

Try
'creo los parametros que uso en el SELECT, para filtrar en el datagridview(dgtotales)
Dim comados = conexion.CreateCommand
comados.CommandType = CommandType.Text
'comados.CommandText = "INSERT INTO IntroduccionDeVentasAhora SELECT reg,Cantidad,Pts,Fecha,NombreFormaPago,IvaVenta,Ba rra,NombTerminal From [Introducción De Ventas] WHERE Barra = @combo1 and NombTerminal = @combo2 and Fecha BETWEEN @FI AND @FF ORDER BY reg"

'comados.CommandText = "SELECT COUNT(*) FROM IntroduccionDeVentasAhora WHERE Fecha = @FI AND @FF INSERT INTO IntroduccionDeVentasAhora SELECT * FROM [Introducción De Ventas] WHERE Fecha BETWEEN @FI AND @FF Order by Fecha"
comados.CommandText = "INSERT INTO IntroduccionDeVentasAhora SELECT * FROM [Introducción De Ventas] WHERE Fecha BETWEEN @FI AND @FF and Order by Fecha"
comados.Parameters.AddWithValue("@FI", Fecha1.Value.Date.ToString("dd/MM/yyyy"))
comados.Parameters.AddWithValue("@FF", Fecha2.Value.Date.ToString("dd/MM/yyyy"))


conexion.Open()

Dim Lecto1 = comados.ExecuteNonQuery
cargacomboMostradores()
cargacomboTerminales()
cargacombos()

MessageBox.Show("Se han copiado los datos seleccionados entre fechas " + Fecha1.Value.Date.ToString("dd/MM/yyyy") + " y " + Fecha2.Value.Date.ToString("dd/MM/yyyy"), "")
LbFechaPrimera.Visible = True
cargafechaslabelprimera()
LbFechasultima.Visible = True
cargafechaslabelultima()
Lhasta.Visible = True
conexion.Close()
Catch

End Try
'BPasa.Enabled = False

End Sub

funciona genial, pero tengo la necesidad de que antes de insertar los datos compruebe si existen y si es así que no lo haga...pero si no existen que si los inserte...alguna idea=?
  #2 (permalink)  
Antiguo 25/06/2011, 10:10
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: No duplicar datos bd

mira este es un ejemplo. esto lo use para verificar si existe los datos que ingreso en un textbox en mi base de datos. esto lo podrias modificar a tu conveniencia.
este codigo lo uso para validar usuarios y contraseñas.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ob As New VerReservacion.VerReservacion()
Dim Conn As New SqlConnection()
Conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Admin\Mis documentos\TEC_MERIDA\Tec_Merida_10º_sem\Programac ion Net Basica\ProyectoFinal\Final_net.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim sentenciaSql As String

sentenciaSql = String.Format("SELECT usuario, contraseña FROM Usuarios WHERE usuario='" + TextBox1.Text + "' AND contraseña='" + TextBox2.Text + "'")

Try
Dim adapter = New SqlDataAdapter(sentenciaSql, Conn)

Dim tabla = New DataTable()
Conn.Open()
adapter.Fill(tabla)
If (tabla.Rows.Count = 1) Then
Me.Hide()
ob.Show()
Else
MsgBox("El usuario o contraseña no son correctos")
End If

Catch ex As ApplicationException
End Try

End Sub

espero que te sirva
[email protected]
  #3 (permalink)  
Antiguo 25/06/2011, 22:58
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: No duplicar datos bd

Necesitas realizar la validación antes de mandar llamar el ExecuteNonQuery(). Por otro lado donde tienes el SELECT COUNT(*) necesitas hacer algo similar a lo siguiente:

Código vb:
Ver original
  1. Dim nRegistros AS INTEGER = Comandos.ExecuteScalar()
  2.  
  3. IF nRegistros > 0 THEN
  4.  
  5. '-- Realizas la inserción
  6.  
  7. ELSE
  8.  
  9. MsgBox("No existen datos.")
  10.  
  11. END IF
__________________
http://ka0stj.wordpress.com/
  #4 (permalink)  
Antiguo 26/06/2011, 02:13
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 13 años, 5 meses
Puntos: 5
Exclamación Respuesta: No duplicar datos bd

gracias como siempre por vuestras respuestas, voy a probarlo y si lo consigo pongo el código, sois la caña ...graciasssssssssssssssssssssssssssssssss
  #5 (permalink)  
Antiguo 26/06/2011, 12:05
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 13 años, 5 meses
Puntos: 5
Pregunta Respuesta: No duplicar datos bd

nada, no lo consigo, he intentado las dos opciones y no hay manera, no podría ser que viera si las fechas están cargadas y si lo están que no las cargue?¿?, el caso es que no se hacerlo
  #6 (permalink)  
Antiguo 26/06/2011, 16:24
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 13 años, 5 meses
Puntos: 5
Desacuerdo Respuesta: No duplicar datos bd

por lo de ahora no lo consigo así que he puesto una columna autonumérica y la he metido como clave principal...ya veré como arreglarlo mejor pero por ahora debo seguir con el proyecto...abrazosss
  #7 (permalink)  
Antiguo 26/06/2011, 18:50
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: No duplicar datos bd

Que tal guille, postea tu código para poder ayudarte.

Saludos!
__________________
http://ka0stj.wordpress.com/
  #8 (permalink)  
Antiguo 27/06/2011, 10:31
Avatar de ldcd  
Fecha de Ingreso: enero-2010
Ubicación: Distrito Federal
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: No duplicar datos bd

yo te recomendaria una validacion dentro de la consulta de sql, o como ya t dijeron, con el select count y verificar si la consulta te regreso algun dato, si es asi, no ejecutar el insert
  #9 (permalink)  
Antiguo 29/06/2011, 10:15
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: No duplicar datos bd

Hey yo publiqué un post parecido con tu pregunta, y lo resolví. Podrías 'chequear' entre mis posts y quizás encuentres tu respuesta.
  #10 (permalink)  
Antiguo 29/06/2011, 11:55
Avatar de CrazyGrungeMan  
Fecha de Ingreso: noviembre-2009
Ubicación: MVD
Mensajes: 18
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: No duplicar datos bd

yo en sql server al crear las tablas a los datos que no quiero que se repitan les pongo unique pero no se que usas porque no leí todo XD
o sino antes haces una consulta que te devuelva las filas afectadas y si no devuelve 0 es porque ya existen, entonces no realizas los insert.
bue saludos
  #11 (permalink)  
Antiguo 29/06/2011, 12:00
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: No duplicar datos bd

Cita:
Iniciado por CrazyGrungeMan Ver Mensaje
haces una consulta que te devuelva las filas afectadas y si no devuelve 0 es porque ya existen, entonces no realizas los insert.
bue saludos
Ya te resolvieron la duda, eso es lo que se hace (eso yo lo hice) xd
  #12 (permalink)  
Antiguo 29/06/2011, 12:06
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: No duplicar datos bd

Bueno porsiaca te dejo una parte de mi código con lo que hice para validar usuarios duplicados.

Código vb:
Ver original
  1. If estado = "insertar" Then
  2.                     'validar login duplicado
  3.                    sql = "select usu_login from usuarios where usu_login=@usu_login"
  4.                     cmd = New SqlCommand(sql, cn)
  5.                     cmd.Parameters.AddWithValue("@usu_login", txtlogin.Text)
  6.  
  7.                     If cmd.ExecuteScalar <> "" Then
  8.                         MsgBox("El nombre de login '" & txtlogin.Text & "' ya existe en la base de datos", 48, "Error")
  9.                         Exit Sub
  10.                     End If
  11. End If

Etiquetas: bd, duplicar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:25.