SQL Server - ayuda Llenar campo id usando identity

   
Vista:

ayuda Llenar campo id usando identity

Publicado por Brand (3 intervenciones) el 12/03/2016 21:54:15
Hola a todos soy un poco nuevo en el sql y estoy trabajando con visual basic .net
basicamente tengo un problema con mi PK ya que el identity se autoicrementa pero con las veces que borro algunos registros ya se quedan unos numeros saltados y es eso lo que quiero cubrir con otros registros .. porfavor ayudenme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub btn_guardar_Click(sender As Object, e As EventArgs) Handles btn_guardar.Click
        Dim b As Integer
        Dim sConnectionString As String _
            = "Data Source=localhost;Initial Catalog=Trisys;Integrated Security=True"
        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()
        Dim sSQL As String = "INSERT INTO deposito
          (nombre,ubicacion,cantidad,codigo,unid_medida) 
          VALUES (' " & txt_descripcion.Text & " ',' " & cmb_ubicacion.SelectedValue & " ','" & txt_cant.Text & " ',' " & txt_cod.Text & " ',' " & txt_medida.Text & " ' )"
        Dim objCmd As New SqlCommand(sSQL, objConn)
        Try
            objCmd.ExecuteNonQuery()
        Catch q As Exception
 
            b = 1
 
        End Try
        If b = 0 Then
            MessageBox.Show("DATOS  GUARDADOS ")
        Else
            MessageBox.Show("DATOS NO GUARDADOS", "ERROR")
        End If
    End Sub

este seria mi codigo en el boton en vb.net
gracias
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

ayuda Llenar campo id usando identity

Un campo identity como ya tu mismo lo dijiste se autoincrementa solo, no lo puedes cubrir con datos de manera manua, ya que si intentas insertar otro, se generará un nuevo registro con otro ID, no lo podrás agregar a mano, si quieres hacer de manera manual, tendrías que rehacer tu tabla y quitar el identity.

Otro cosa, tu código, hazle este pequeño cambio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub btn_guardar_Click(sender As Object, e As EventArgs) Handles btn_guardar.Click
        Dim b As Integer
        Dim sConnectionString As String _
            = "Data Source=localhost;Initial Catalog=Trisys;Integrated Security=True"
        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()
 
        Dim objCmd As New SqlCommand
        objCmd.CommandType=CommandType.Text
        objCmd.CommandText="INSERT INTO deposito  (nombre,ubicacion,cantidad,codigo,unid_medida)
          VALUES (@Descripcion,@Ubicacion,@cantidad,@codigo,@medida)"
         objCmd.Parameters.Add("@Descripcion",SQDBType.Varchar).Value= txt_descripcion.Text
         objCmd.Parameters.Add("@Ubicacion",SqlDbType.Varchar).Value=cmb_ubicacion.SelectdValue
         objCmd.Parameters.Add("@Cantidad",SqlDbType.Int).Value=Convert.ToInt32(txt_cant.Text)
         objCmd.Parameters.Add("@Codigo",SqlDbType.Varchar).Value=txt_cod.Text
         objCmd.Parameters.Add("@Medida",SQLDBType.Varchar).Value=txt_medida.Text
         objCmd.Connection=objConn
        Try
            b=objCmd.ExecuteNonQuery()
            if b>0 then
                     MessageBox.Show("DATOS  GUARDADOS ")
            else
                  MessageBox.Show("DATOS NO GUARDADOS", "ERROR")
            en dif
        Catch q As Exception
                MessageBox.Show(q.Message,"Error")
        Finally
                 Conn.Close()
        End Try
 
End Sub

Con eso previenes la inyeccion de código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

ayuda Llenar campo id usando identity

Publicado por Brand (3 intervenciones) el 14/03/2016 13:04:02
Gracias por responder, en cuanto al tema, como haria para que incremente solo o algun codigo para eso?
lo que no quiero es que se ingrese por programa el ID y tampoco que queden numeros saltados como este caso con idenity
me ayudas con eso porfavor?
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
Imágen de perfil de Isaias

ayuda Llenar campo id usando identity

Publicado por Isaias (3186 intervenciones) el 14/03/2016 16:56:23
El campo de tipo IDENTITY son para registros que NO SE BORRARAN.

En cuanto a como obtener el incremento "automatico", pues no lo hay, tendrias que programarlo en una transaccion

1
2
3
4
Declare @MyNumero int
BEGIN TRAN
SELECT @MyNumero = MAX(COLUMNA) + 1 FROM tutabla............    -- Aqui tomas el maximo de tu numero mas 1
COMMIT TRAN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

ayuda Llenar campo id usando identity

Publicado por Brand (3 intervenciones) el 14/03/2016 18:51:17
gracias por la paciencia, por ultimo te quiero pedir si me puedes aclarar mejor eso del codigo, como lo implementaria dentro del boton?
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
Imágen de perfil de Isaias

ayuda Llenar campo id usando identity

Publicado por Isaias (3186 intervenciones) el 14/03/2016 19:18:45
No me queda muy clara tu duda, te pase el codigo, ¿como lo implementas en el "boton", pues supongo que con el mismo codigo, ¿no?

1
2
3
4
objCmd.CommandText="DECLARE @MyConsecutivo int; select @MyConsecutivo = max(mycampo) + 1 from mytabla;
INSERT INTO deposito  (nombre,ubicacion,cantidad,codigo,unid_medida)

          VALUES (@Descripcion,@Ubicacion,@cantidad,@codigo,@medida)"  -- supongo que por aqui iria el consecutivo
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