Guardar en ado

Aquí dando molestias de nuevo, mira lo que pasa es que cuando hago modificaciones a un registro y quiero guardarlos no me los guardo la consulta la hago con esto
With rg_clave
.MoveFirst
.Find "CAMION = '" & Text1 & "'"
If .EOF = False Then
MsgBox "CLAVE DUPLICADA"
Else
Data1.Recordset.Update
Data1.Refresh
Data1.Recordset.MoveFirst
Text1.Locked = True
Text2.Locked = True
Text3.Locked = True
Text4.Locked = True
Combo1.Locked = True
End If
End With
Y si me hace la consulta ya después con otro botón deshabilito las cajas de texto para modificarlas y el botón de guardar hago esto
.Update "MARCA = '" & Text2 & "'"
.Update "MOTOR = '" & Text6 & "'"
.Update "CAMION = '" & Text1 & "'"
.Update "PLACA = '" & Text3 & "'"
.Update "KMACUMU = '" & Text19 & "'"
No se si esta bien o como es que se guarda estoy utilizando ado y no me sale error si deja la modificación hecha cuando guardo pero cuando me voy a otro registro y vuelo a consultar el que modifique solo no me aparece el campo modificado, si no me aparfece como estaba antes de modificarlo, ¿no hace los camios o no los guarda como vez cual crees que se a el problema?

3 respuestas

Respuesta
1
¿Estas usando recordset por ado?
Si esa así así se guarda
rs!marca = '" & text2 & "'
rs!motor = '" & text6 & "'
rs.update
El rs! Que es, es recordset porque me pone en rojo las instrucciones o seria rg_clave! en vez de rs?
rs = recordset
Cuando vos seteas el recordset podes asignarle un nombre
Yo abrevio con recordset vos tienes que poner el nombre que vos usas
me marca error en el apostrofe  rs!marca = '" & text2 & "'= '" (') despues del igual
Porque el igual no tiene que ir ahí ¿? ¿? ¿?
Mira lo tengo así:
rg_clave!MARCA = '" & Text1 & "
Me marca error en el apostrofe, la otra linea me equivoque je je
rg_clave!MARCA = ' " & text1 & " '
Si abrís con apostrofe tienes que cerrarlo con el mismo
El error que me sale es que se esperaba expresión después del igual y luego el apostrofe ahí me marca ese error
Las comillas y todo eso van cuando la variable esta dentó de una consulta disculpa
solo rg = text1.text
Respuesta
1
Supongo que Data1 es un control ADODB, esto no es posible realixarlo con el control pues estos controles tienen muchas cosas por debajo que son imposibles de controlar por los programadores, yo se que se van por estos controles porque no les toca escribir el código, pero después vienen los problemas que no se pueden controlar errores como el que explicas.
Mi consejo es que hagas el acceso a los datos a través de código utilizando ADO, en la página www.elguille.info hay un curso de VB6 en el cual explica muy bien como hacer le manejo de datos con esta tecnología en VB6.
Respuesta
1
Lo siguiente:
Update
Guarda los cambios realizados en el registro actual de un objeto Recordset.
Sintaxis
recordset.Update Fields, Values
Parámetros
Fields Opcional. Variant que representa un nombre individual o matriz de elementos Variant que representa nombres o posiciones ordinales del campo o campos que desea modificar.
Values Opcional. Variant que representa un valor individual o matriz de elementos Variant que representa valores del campo o campos del nuevo registro.
Prueba tu código con lo siguiente:
.Update "MARCA", Me.Text2
Y así con los demás 'update' que tengas en el mismo.
Si a pesar de ello no te sigue funcionando, utiliza la clase DoCmd con el método RunCommand en el evento click del botón que tiene tu código, más o menos así:
DoCmd. RunCommand acCmdRefresh
Me avisas como te fue.
Update "MARCA", Me.Text2 el .Me es el nombre del formulario?
Si, se refiere al objeto Formulario que estás utilizando.
Pues ya puse como dijiste pero nada, no me sale error ni nada pero no guarda la modificación, se me hace que es cuando hago la consulta, porque primero hago la consulta, pero en la misma consulta modifico te agradecería tu ayuda por favor
Prueba con el método RunCommand acCmdRefresh.
Ya también pero no me actualiza, en verdad ya me estoy volviendo loco jejej ya tengo varios días con este problema, por favor ayudame!
Si no te han funcionado los procedimientos que te mencioné, prueba con código estableciendo la conexión y luego el recordset también. Y ejecuta una consulta de actualización o simplemente crea una consulta de actualización de datos y ejecuta desde el código con DoCmd.
A modo de ejemplo:
'-----------------
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset
dim sql$
'luego crea la consulta debiendo crear el criterio 'where'
if edit then
     sql = "UPDATE campo SET tabla.campo = 'nuevo_valor' WHERE campo = 'valor_anterior'"
else
     sql = "Insert into Tabla(Campo) " & _
            "values('" & CampoTxt & "')"
end if
rs.Open "sql",cnn,adOpenKeyset,adLockOptimistic
'luego de que se ejecute puedes hacer un requery sobre el recordset y ver los cambios solicitados
rs.requery
'---------------
El código anterior puedes hacerlo en un evento click de un botón definiendo lo siguiente también en tu formulario:
Option Explicit
Private WithEvents rs As ADODB.Recordset
Private Edit As Boolean
Y cuando hagas click en un botón llamado 'Modificar' y te habilita todos tus campos, establece tu propiedad Edit a True para ejecutar el update al momento de guardar. Por defecto define tu Edit como False para realizar Insert de registros en nuevos.
También puedes hacer creando una consulta de actualización sobre la tabla que quieres poniendo como criterio 'Forms! MiFormulario! MiCampoTxt' y utilizando DoCmd, como el siguiente.
'-------------------
docmd.OpenQuery "consulta",acViewNormal,acReadOnly
'------------------
Si no funciona nuevamente, puede que ya sea algún problema en tu definición de consulta, dentro de las propiedades prueba con 'Actualizaciones incoherentes' en el Tipo de Recordset aunque lo recomendable es que sea de tipo Dynaset.
También verifica las conexiones, si están bien direccionadas, y si la consulta base es la correcta en tu código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas