Programación General > Visual Basic 6.0 e inferiores

 Addnew En Dao

<< < (2/3) > >>

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(&#34;VISITA&#34;, dbOpenDynaset)' If txtMes.Text &#60;&#62; &#34;&#34; Or txtTipo.Text &#60;&#62; &#34;&#34; Or txtAuditor.Text &#60;&#62; &#34;&#34; Or txtMostrador.Text &#60;&#62; &#34;&#34; Or _'    txtZona.Text &#60;&#62; &#34;&#34; Or txtPDV.Text &#60;&#62; &#34;&#34; Or txtExcep.Text &#60;&#62; &#34;&#34; Or txtCompro.Text &#60;&#62; &#34;&#34; Then'    Set rsVisitas = dbOpenDB.OpenRecordset(&#34;VISITA&#34;, 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 & &#34;&#092;bd1.mdb&#34;)    Set rsVisitas = dbVisitas.OpenRecordset(&#34;VISITA&#34;, dbOpenDynaset)    With rsVisitas           Debug.Print &#34;Registro nuevo: &#34; & !NUM_MES & &#34; &#34; & !Fecha & &#34; &#34; & !AUDITOR _            & &#34; &#34; & !PDV & &#34; &#34; & !COD_ZONA & &#34; &#34; & !ENCARGADO & &#34; &#34; & !COD_EXEPCION _             & &#34; &#34; & !VLR_AJUSTE & &#34; &#34; & !EXCEPCIONES & &#34; &#34; & !ENCARGADO & &#34; &#34; & !TIPO    End With       With rsVisitas        .AddNew        !NUM_MES = txtMes        !Fecha = dtpDate        !TIPO = txtTipo        !AUDITOR = txtAuditor        !COD_ZONA = txtMostrador & &#34; &#34; & txtZona        If chkExep.Value = 0 Then            Call MsgBox(&#34;NO HAY EXCEPCIONES&#34;, vbCritical, &#34;Advertencia&#34;)        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(&#34;VISITA&#34;, dbOpenDynaset)' If txtMes.Text &#60;&#62; &#34;&#34; Or txtTipo.Text &#60;&#62; &#34;&#34; Or txtAuditor.Text &#60;&#62; &#34;&#34; Or txtMostrador.Text &#60;&#62; &#34;&#34; Or _'    txtZona.Text &#60;&#62; &#34;&#34; Or txtPDV.Text &#60;&#62; &#34;&#34; Or txtExcep.Text &#60;&#62; &#34;&#34; Or txtCompro.Text &#60;&#62; &#34;&#34; Then'    Set rsVisitas = dbOpenDB.OpenRecordset(&#34;VISITA&#34;, 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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa