Programación General > Visual Basic 6.0 e inferiores
Addnew En Dao
RadicalEd:
--- Cita de: "Sagutxo" --- 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 & " " & 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:
--- Fin de la cita ---
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.
Me dices que se estan grabando sea o no sea, pero yo he visto en el debug que no los graba, osea, no los guarda en el registro.
Sigo igual :( :( :( :(
Gracias Chao.
Sagutxo:
Salu2. pos ahora si que no veo ningún campo que te pudiera dar un error mas que el de fecha, y eso suponiendo que sea un campo de fecha en la DB. aunkeque como bien te dijeron antes los campos de texto si no compruebas que están vacios es recomendable grabarlos como = "" & CampoTxt, para evitar el posible campo NoNull. Si te parece y tienes un registro en el que sabes que falla siempre estaría encantado de ponerlo en mi PC e intentar buscar la curiosidad entre los 2.
venga agur. :smartass: :whistling: :comp:
9tnix:
Hola RadicalEd
--- 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
cpmario:
Revisé y modifiqué el código, te lo expongo para que lo revises
--- Código: Text --- Private Sub cmdSave_Click() On Error GoTo ErrorcmdSave Dim dbVisitas As Database Dim rsVisitas As Recordset Set dbVisitas = OpenDatabase(App.Path & "\bd1.mdb") Set rsVisitas = dbVisitas.OpenRecordset("VISITA", dbOpenDynaset) With rsVisitas Debug.Print "Registro nuevo: " & !NUM_MES & " " & !Fecha & " " & !AUDITOR _ & " " & !PDV & " " & !COD_ZONA & " " & !ENCARGADO & " " & !COD_EXEPCION _ & " " & !VLR_AJUSTE & " " & !EXCEPCIONES & " " & !ENCARGADO & " " & !TIPO End With 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 Call CleanText rsVisitas.Close dbVisitas.Close Call VisibleFalseExit SubErrorcmdSave: MsgBox Err.Description, vbCritical, App.TitleEnd Sub
Como ya te indicaban en comentarios anteriores, no coloques 'On error resume next' ya que esta es la causa que no se grabe un registro con errores, y tampoco te darás cuenta cual es el error.
Por otro lado debes tomar en cuenta que un CheckBox no sirve para manejar campos de Falso/Verdadero, ya que los valores que maneja son 0,1 y 2 y el campo de base de datos dbBoolean maneja 0 y -1
Espero esta información te sea útil.
:comp:
RadicalEd:
--- Cita de: "zeekel" --- Hola RadicalEd
--- 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
--- Fin de la cita ---
Como puedes ver esa parte del código no se esta usando:
'Set rsVisitas = dbOpenDB.OpenRecordset("VISITA", dbOpenTable)
Gracias por la información cpmario, realmente no sabia lo del Checkbox, ahora modifico el código y miro a ver,
Gracias a todos.
Chao
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa