Visual Basic.NET - UPDATE en SQL, BD access genera conflicto con el indice

 
Vista:
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

UPDATE en SQL, BD access genera conflicto con el indice

Publicado por adolfo (55 intervenciones) el 07/10/2017 02:51:19
Buenas amigos,

tengo el siguiente codigo para agregar un registro a la Tabla, y para Actualizar el un registro existente.
Pero cuando paso por el UPDATE me trata de agreger un registro nuevo y me dice que no puede porte genera conflicto con el indice, lo que quiero es que me actualize el registro no que me agrege uno nuevo.
No puedo determinar que cause que el UPDATE trate de agregar un nuevo registro.

Agradeceria cualquier sugerencia.

Gracias,

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Dim sql As String
 
If FRMFacturacion.VarFacturaEncTemp = 0 Then
    sql = "SELECT * FROM TBFacturasEncTemp"
Else
    sql = "SELECT * FROM TBFacturasEncTemp WHERE NumPreFactura = @NumPreFactura"
End If
 
Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & VarPath & "\BDFacturacion.accdb;")
    Dim CMD As New OleDbCommand(sql, conn)
 
    conn.Open()
    Dim TR As OleDbTransaction = conn.BeginTransaction
    CMD.Transaction = TR
 
    Try
        CMD.Parameters.Clear()
 
        If FRMFacturacion.VarFacturaEncTemp = 0 Then        ' Salva el encabezado 1 ves "INSER"
            CMD.CommandText = "INSERT INTO [TBFacturasEncTemp] (FechaFac, NombreEmp, NombreCli, NumPreFactura, TotalDescuento, TotalImpuestoV, TotalFacCredito, TotalFac) VALUES (@FechaFac, @NombreEmp, @NombreCli, @NumPreFactura, @TotalDescuento, @TotalImpuestoV, @TotalFacCredito, @TotalFac)"
            CMD.Parameters.AddWithValue("@FechaFac", Today)
            CMD.Parameters.AddWithValue("@NombreEmp", nuevaFactura.NombreEmp)
            CMD.Parameters.AddWithValue("@NombreCli", nuevaFactura.NombreCli)
            CMD.Parameters.AddWithValue("@NumPreFactura", nuevaFactura.NumPreFactura)
            CMD.Parameters.AddWithValue("@TotalDescuento", nuevaFactura.TotalDescuento)
            CMD.Parameters.AddWithValue("@TotalImpuestoV", nuevaFactura.TotalImpuestoV)
            CMD.Parameters.AddWithValue("@TotalFacCredito", nuevaFactura.TotalFacCredito)
            CMD.Parameters.AddWithValue("@TotalFac", nuevaFactura.TotalFac)
        Else                                                ' Actualiza el encabezado "UPDATE"
 
            CMD.CommandText = "UPDATE [TBFacturasEncTemp] SET FechaFac = @FechaFac, NombreEmp = @NombreEmp, NombreCli = @NombreCli, NumPreFactura =  @NumPreFactura, TotalDescuento =  @TotalDescuento, TotalImpuestoV = @TotalImpuestoV, TotalFacCredito = @TotalFacCredito, TotalFac = @TotalFac"
 
            CMD.Parameters.AddWithValue("@FechaFac", Today)
            CMD.Parameters.AddWithValue("@NombreEmp", nuevaFactura.NombreEmp)
            CMD.Parameters.AddWithValue("@NombreCli", nuevaFactura.NombreCli)
            CMD.Parameters.AddWithValue("@NumPreFactura", nuevaFactura.NumPreFactura)
            CMD.Parameters.AddWithValue("@TotalDescuento", nuevaFactura.TotalDescuento)
            CMD.Parameters.AddWithValue("@TotalImpuestoV", nuevaFactura.TotalImpuestoV)
            CMD.Parameters.AddWithValue("@TotalFacCredito", nuevaFactura.TotalFacCredito)
            CMD.Parameters.AddWithValue("@TotalFac", nuevaFactura.TotalFac)
 
        End If
 
 
        CMD.Connection = conn
        CMD.ExecuteNonQuery()
        TR.Commit()
    Catch ex As Exception
        TR.Rollback()
        conn.Close()
        Throw ex
    Finally
        If conn IsNot Nothing AndAlso conn.State <> ConnectionState.Closed Then
            conn.Close()
            conn.Dispose()
            CMD.Dispose()
            FRMFacturacion.VarFacturaEncTemp = 1    'Permite actualizar el encabezado UPDATE en vez de agregarlo INSERT
        End If
    End Try
End Using
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 Leonardo Daniel A.
Val: 62
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

UPDATE en SQL, BD access genera conflicto con el indice

Publicado por Leonardo Daniel A. (36 intervenciones) el 07/10/2017 09:18:14
ya hiciste el debug a esta linea

If FRMFacturacion.VarFacturaEncTemp = 0 Then ' Salva el encabezado 1 ves "INSER"

a ver que te trae VarFacturaEncTemp ????

y revisa si no tienes un TRIGGER asociado a la tabla TBFacturasEncTemp
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 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

UPDATE en SQL, BD access genera conflicto con el indice

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 07/10/2017 22:21:30
Tienes un error garrafal en tu update.
Que pasaría si hicieras eso sobre una base de datos en producción?.

Estás tratando de actualizar toda la tabla con esos datos.
Te falta un where, para saber que registro vas a actualizar.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 62
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

UPDATE en SQL, BD access genera conflicto con el indice

Publicado por Leonardo Daniel A. (36 intervenciones) el 07/10/2017 23:27:00
Jaja tienes razon, como lo vi aqui en el celular, no vi toda la sentencia... Le falto el where
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
Val: 28
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

UPDATE en SQL, BD access genera conflicto con el indice

Publicado por Adolfo (55 intervenciones) el 08/10/2017 03:00:45
Si muchas gracias era ese el error, me faltaba el WHERE
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