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,
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


0