Visual Basic - ayuda

Life is soft - evento anual de software empresarial
 
Vista:

ayuda

Publicado por ayuda!!!!!!!!!!!! (8 intervenciones) el 08/07/2006 00:46:31
le agredeceria de antemano que me ayuden, con este problema please:

Public DB As Database
Public Rs As Recordset
Public rst As Recordset

Private Sub Form_Load()
If Right(App.Path, 1) = "\" Then
Set DB = OpenDatabase(App.Path + "DBMaster97.mdb")
Else
Set DB = OpenDatabase(App.Path + "\DBMaster97.mdb")
End If
Set Rs = DB.OpenRecordset("Encabezado_Salida")
Set rst = DB.OpenRecordset("Encabezado_Salida_Detallado")

End Sub

Private Sub cmdGuardar_Click()
Dim cont As Long
With Rs
.AddNew
.Fields("folio_salida") = txtFolio.Text
.Fields("fecha_sa") = mskFecha.Text
.Fields("factura_sa") = txtFactura.Text
.Fields("proveedor_sa") = UCase(txtProveedor.Text)
.Fields("bodega_sa") = UCase(cboBodega.Text)
.Fields("responsable_sa") = UCase(txtResponsable.Text)
.Update

End With

For cont = 0 To FlexArticulos.Rows - 1
With rst
.AddNew
!sal_fol = txtFolio.Text
!sal_fact = txtFactura.Text
!codigo_sa = FlexArticulos.TextMatrix(cont, 1)
!descrip_sa = FlexArticulos.TextMatrix(cont, 2)
!cantidad_sa = FlexArticulos.TextMatrix(cont, 3)
!unidad_sa = FlexArticulos.TextMatrix(cont, 4)

.Update
MsgBox "guardado!!!!"
End With
Next

End Sub

>>>el problema es el siguinte me sale este tipo de error cuando quiero guardar los datos:

run-time error '3022': the changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. change the data in the field or fields that contain duplicate data,remove the index, or redefine the index to permit duplicate entries and try again.....ufff me costo..

y ya revise este tipo de error en la red, pero aun asi no le encuentro y la mera verdad me esta desesperando,para saber mas lo que estoy haciendo...
es cuando yo teclee los siguiente datos
folio,fecha,factura,proveedor,bodega y responsale me pase al siguiente textbox para ingresar
codigo,descripcion,cantidad y unidad , al dar enter en unidad hago los siguiente que esta debajo

Private Sub rellenar_grid_dato()
With FlexArticulos
.Rows = .Rows + 1
.Row = .Rows - 1
.TextMatrix(.Row, 0) = Str(.Row)
.TextMatrix(.Row, 1) = txtCodigo.Text
.TextMatrix(.Row, 2) = txtDescripcion.Text
.TextMatrix(.Row, 3) = txtCantidad.Text
.TextMatrix(.Row, 4) = cboUnidad.Text


End With

End Sub

y posteriormente regreso al codigo para poder ingresar otros articulos en el msflexgrid, ya que pueden ser mas de 1 hasta como max 30 articulos, y lo que quiero hacer es que cuando guarde el cada articulo que contenga el msflexgrid, contenga los datos de folio y factura como referencia, espero que me entiendan lo que quiero hacer, si tienen dudas contactenme please por que si necesito que me hechen la mano... gracias

o si hay algun metodo diferente bienvenido....
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

RE:ayuda

Publicado por ivan (1039 intervenciones) el 08/07/2006 02:58:10
No se mucho de inglés pero esto que pones

run-time error '3022': the changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. change the data in the field or fields that contain duplicate data,remove the index, or redefine the index to permit duplicate entries and try again....

Dice algo relacionado a que estás duplicando valores de la llave primaria, o sea que tu tabla la tienes configurada para que NO ACEPTE REGISTROS REPETIDOS.

Después te da la posibles soluciones:

1. Cambia el valor del o los campos que contienen datos duplicados.
2. Quita el índice o llave primaria
3. Redefine el índice para que acepte valores duplicados.

Intente de nuevo.....

Si acaso la configuración de tu tabla es que NO ACEPTE REGISTROS DUPLICADOS puedes

1. Antes de agregar un nuevo registro ".AddNew" busca el registro que vayas a buscar, usa el método FIND, en la ayuda del MSDN encontrárás información sobre eso.

2. O también usa el tratamiento de errores "ON ERROR RESUME NEXT", ponlo antes de ".Update", creo que ahí es donde te marca el error, y pones

.Update
If Err.Number = 3022 Then
'Ese registro está duplicado
Else
' no pasa nada, se grabó bien
End If

Espero esto te sirva, si acaso no le entiendes vuelve a preguntar, saludos
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

gracias ivan

Publicado por Abraham (8 intervenciones) el 11/07/2006 23:57:56
gracias eso era quitar la llave primaria .....muchas ,muchas gracias......
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