Hola chicos de SoloCodigo, como estan? hace rato no me paso por que hay mucho camello; tengo una duda: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: TextPrivate 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 VisibleFalseEnd Sub Gracias Chao.
Salu2, Sin ánimos de ofender el código de otra persona , Hay algo que me tiene intrigado en tu Cod.Te dispones a guardar los datos.AddNew !NUM_MES = txtMes !FECHA = dtpDate !TIPO = txtTipo !AUDITOR = txtAuditor !COD_ZONA = txtMostrador & " " & txtZonaAKI 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 Ifsigue grabando tanto si es true como si es false !PDV = txtPDV !ENCARGADO = txtPDV !COMPROMISO = txtCompro .Update .Bookmark = .LastModifiedal 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.
Hola RadicalEdCó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