Visual Basic - INGRESAR Y ACTUALIZAR EN BD(ADO)

Life is soft - evento anual de software empresarial
 
Vista:

INGRESAR Y ACTUALIZAR EN BD(ADO)

Publicado por CATITA ZARATE (1 intervención) el 25/02/2006 21:02:25
Hola el problema es el siguiente: estoy ingresando datos desde un MSHFlexGrid1 a las tablas venta, detalle_factura1 y bodega(en este caso al ingresar el producto si ya existe en stock actualizo la cantidad de lo contrario queda ingresado como nuevo ). el codigo me marca el siguiente error “los cambios solicitados en la tabla no se realizaron correctamente porque crearian valores duplicados en el indice, clave principal o relacion ” por si acaso soy casi nueva en programacion en ADO. al compilar la sombra amarilla me indica el error en la parte del cnn.execute “insert into bodega….. (no me permite copiar de una tabla a otra)

NOTA: el codigo del cmd_ing(command button) me trabaja bien en DAO .obiamente remplazando los siguiente:
cnn.execute por base.execute
Public cnn As Connection por Public base As Database
Public rstabla As Recordset por lo mismo
Set cnn = New Connection por Set base = OpenDatabase("lacteos.mdb")
Set rstabla = New Recordset por Set rstabla = base.OpenRecordset("bodega")
REFERENCIAS:
Microsoft activex data objects 2.5 library Por Microsoft DAO 3.51 object library

volviendo al problema principal espero su ayuda por favor
graciaaas……chaooo…..
CATITA ZARATE

TABLAS DE LA BD (lacteos.mdb)

VENTA:
Nro_factura(clave)(numerico)
Fecha_venta(fecha/hora)
Fecha_vencimiento(fecha/hora)
Codigo_cliente(numerico)
Monto_venta(numerico)
Forma_pago(texto)

DETALLE_FACTURA1:
Nro_factura(clave compuesta)(numerico)
Codigo_producto(clave compuesta)(texto)
Cantidad_producto(numerico)
Nombre(texto)
Precio(numerico)
unidad_caja(texto)
monto_total(numerico)

BODEGA:
Codigo(clave)(texto)
Descripción(texto)
Seccion(texto)
Valor(numerico)
Stock(numerico)
Unidad_caja(texto)

‘CODIGO DEL PROGRAMA CON PROBLEMAS :
Private Sub cmd_ing_Click()
Dim A As String, B As String, C As String, Z As Integer
Dim D As String, E As String, F As String
If MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1) = "" Then
MSHFlexGrid1.Rows = MSHFlexGrid1.Rows - 1
End If

'ingresar nro factura y datos del cliente
cnn.Execute " insert into venta(nro_factura, codigo_cliente, fecha_venta, fecha_vencimiento,forma_pago) values ( ' " _
& Trim(txt_fac) & " ',' " & Trim(txt_cod) & " ',' " & Trim(txt_fech) & " ',' " & Trim(txt_fecha) & " ',' " & Trim(txt_pag) & " ' )"
For Z = 1 To MSHFlexGrid1.Rows - 1
MSHFlexGrid1.Row = Z
A = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)
B = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 2)
C = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 3)
D = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4)
E = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 5)
F = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 6)

'registrar factura
cnn.Execute "insert into detalle_factura1(nro_factura,codigo_producto, nombre, precio, unidad_caja, cantidad_producto, monto_total) values(' " & Trim(txt_fac) & " ',' " & A & " ',' " _
& B & " ',' " & C & " ',' " _
& D & " ',' " & E & " ',' " _
& F & " ') "

‘ingresar o actualizar el stock en bodega
cnn.Execute " update bodega set stock = stock + " & E & " where codigo = ' " & A & " ' "
cnn.Execute "insert into bodega(codigo, descripcion, valor, stock, unidad_caja)" _
& " select codigo_producto, nombre, precio,cantidad_producto, unidad_caja from detalle_factura1 " _
& " where detalle_factura1.nro_factura = " & Trim(txt_fac) & " "
Next Z
limpiar
MSHFlexGrid1.Rows = 1
cmd_ing.Enabled = False
End Sub

Private Sub Form_Load()
Set cnn = New Connection
Set rstabla = New Recordset
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.ConnectionString = "c:\lacteos.mdb"
.Open
End with
End Sub

GENERAL DECLARACIONES
Public cnn As Connection
Public rstabla As Recordset

Microsoft activex data objects 2.5 library
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