Hola chicos de SoloCodigo, como estan? hace rato no me paso por que hay mucho camello; tengo una duda:saludos:
Estoy trabajando sobre una DB de Access con DAO (no con ADO por que no lo manejo todavia), y al usar el método AddNew, no todas las veces me guarda el registro, por que sera, aqui les muestro el códigoCódigo: TextGracias Chao.
Private Sub cmdSave_Click() On Error Resume Next Dim dbVisitas As Database Dim rsVisitas As Recordset Set dbVisitas = OpenDatabase(App.Path & "\bd1.mdb") Set rsVisitas = dbVisitas.OpenRecordset("VISITA", dbOpenDynaset) ' If txtMes.Text <> "" Or txtTipo.Text <> "" Or txtAuditor.Text <> "" Or txtMostrador.Text <> "" Or _ ' txtZona.Text <> "" Or txtPDV.Text <> "" Or txtExcep.Text <> "" Or txtCompro.Text <> "" Then ' Set rsVisitas = dbOpenDB.OpenRecordset("VISITA", dbOpenTable) With rsVisitas .AddNew !NUM_MES = txtMes !FECHA = dtpDate !TIPO = txtTipo !AUDITOR = txtAuditor !COD_ZONA = txtMostrador & " " & txtZona If chkExep.Value = 0 Then Call MsgBox("NO HAY EXCEPCIONES", vbCritical, "Advertencia") Else !EXCEPCIONES = chkExep.Value !COD_EXEPCION = txtExcep !VLR_AJUSTE = txtVrAjuste End If !PDV = txtPDV !ENCARGADO = txtPDV !COMPROMISO = txtCompro .Update .Bookmark = .LastModified End With With rsVisitas Debug.Print "Registro nuevo: " & !NUM_MES & " " & !FECHA & " " & !AUDITOR _ & " " & !PDV & " " & !COD_ZONA & " " & !ENCARGADO & " " & !COD_EXEPCION _ & " " & !VLR_AJUSTE & " " & !EXCEPCIONES & " " & !ENCARGADO & " " & !TIPO End With Call CleanText ' Else ' Call MsgBox("Favor Introducir Datos", vbCritical, "Advertencia") ' cmbMeses.SetFocus ' End If rsVisitas.Close dbVisitas.Close Call VisibleFalse End Sub
Salu2, Sin ánimos de ofender el código de otra persona :(, Hay algo que me tiene intrigado en tu Cod.Hola sagutxo, gracias por responder, la vaina con la comprobación de ese campo es que solamente se guardan esos datos si el check esta a 1, de lo contrario los datos no se guardan, pero el resto si.
Te dispones a guardar los datos
.AddNew
!NUM_MES = txtMes
!FECHA = dtpDate
!TIPO = txtTipo
!AUDITOR = txtAuditor
!COD_ZONA = txtMostrador & " " & txtZona
AKI COMPRUEBAS UN CAMPO y existe la posibilidad de error crítico según tu mensaje, pienso que estaría mejor arriba el checkeo de ese campo.
If chkExep.Value = 0 Then
Call MsgBox("NO HAY EXCEPCIONES", vbCritical, "Advertencia")
Else
!EXCEPCIONES = chkExep.Value
!COD_EXEPCION = txtExcep
!VLR_AJUSTE = txtVrAjuste
End If
sigue grabando tanto si es true como si es false
!PDV = txtPDV
!ENCARGADO = txtPDV
!COMPROMISO = txtCompro
.Update
.Bookmark = .LastModified
al principio haces = abres la DB y la tabla y despues compruebas si los campos tienen datos.
Si te molestan estos comentarios perdóname lo hago con la mejor intención aunke dado tu gran numero de mensajes respondidos me temo que solo estás haciendo pruebas :).
-------------------------------
Me ha ocurrido a la hora de pasar un valor true a una Db de acces97 en la que he tenido que pasarle el valor (-1) directamente ya que si no lo graba mal, aunke dudo que esto haría que no se grabara el registro. Es que no veo nada mas que sea raro.
:smartass: :whistling: :comp:
Hola RadicalEdComo puedes ver esa parte del código no se esta usando:Código: Text
Set rsVisitas = dbVisitas.OpenRecordset("VISITA", dbOpenDynaset) ' If txtMes.Text <> "" Or txtTipo.Text <> "" Or txtAuditor.Text <> "" Or txtMostrador.Text <> "" Or _ ' txtZona.Text <> "" Or txtPDV.Text <> "" Or txtExcep.Text <> "" Or txtCompro.Text <> "" Then ' Set rsVisitas = dbOpenDB.OpenRecordset("VISITA", dbOpenTable)
Me pregunto porque abres dos veces el recordset rsVisitas ?
Bueno tengo entendido que cuando lo abres como dynaset se pueden modificar los datos y hacer otras cosas mas, prueba abriendolo como dynaset y no abras 2 veces la misma tabla solo deja el que abre como dynaset.
Yo estoy fuera de DAO hace mucho desde 1999 ahora uso ADO y ADO.Net pero dejame ver algo de mis programas y recordar que puede estar sucediendo alli.
Att zeekel