Estoy trabajando con VB6 y sql server 2000. ¿Es posible modificar registros de una consulta utilizando el control o el objeto Data de visual basic? Se que desde una control adodc si que se puede pero desde un control data, no me deja. ¿Existe alguna forma o esto es una limitación del control y el objeto?
1 respuesta
Respuesta de kieleze
1
1
kieleze, Estudio ingenieria en sistemas, estoy en 3º año
Y la única forma que encontré de solicionarlo fijándome el estado de la conexión, y si estaba abierta, la cierro y vuelvo a realizar la conexión
Hola : Probé lo que me dijiste pero no funciona a parte que no le encontré mucho sentido. ¿Puedes mandarme un ejemplo para ver si entiendo mejor lo que me quieres decir? Gracias.
Mi ejemplo es con ado. Tengo 2 procedimientos uno que crea la abre la base de datos y otro que crea la conexión con las tablas que yo necesito. Esto lo usaba en una búsqueda de pacientes. Pero cuando por ejemplo hacia una búsqueda fallida y no se encontraba nadie. Al probar con otro nombre me daba el error de que no se puede realizar esta operación si el objeto esta abierto. Para solucionarlo me fije donde necesitaba cerrarlo para que me permita volver a realizar la consulta. Public Sub AbrirAdo() If BDado.State = adStateclose Then With BDado .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "miBaseDedatos.mdb" .CursorLocation = adUseClient End With Else MsgBox "ya esta abierto" End If End Sub Public Sub ConectarAdo(mSQL As String, adoType As CursorTypeEnum) MsgBox "rsADO.State = adStateClosed - " & adStateClosed rsADO.CursorLocation = adUseClient rsADO.Open mSQL, BDado, adoType, adLockOptimistic 'para ver los adotype reescribe la coma adelante del adotype en la sentencia open End Sub Así cada vez que yo volvía a hacer la consulta si la base de datos estaba abierta me aparecía este mensaje, entonces yo ya sabia que debía cerrarla. Por ejemplo yo también podía salir de esta pantalla para ver los datos de uno de los resultados del datagrid de forma más completa, al volver se me producía el mismo error, porque no había cerrado la base, al abrir el otro formulario. No se si me explico, fíjate cual es el error que te aparece, cópialo a mano si es necesario y mándamelo. Yo se que me apareció millones de veces pero no recuerdo como. Te repito, supongo que debe ser un problema con la base de datos, porque si no la cerras permanece abierta y no se puede volver a realizar la consulta sin antes cerrarla. Un saludo desde Rosario, Argentina... Ezequiel No dudes en preguntar todas las veces que sea necesario.
Buenas : Ante todo, gracias por responderme pero yo quería una solución con Dao y no con ADO. Con ADO ya sabia se como iba. Si sabes como va con Dao, t agradecería que me mandaras yu opinión. Un saludo.
¿Cuándo decís modificar registros de una consulta estas hablando de editar los registros o de hacer una nueva consulta? Para editar registros.. Do While Not Agenda.EOF Agenda.Edit Agenda!Zona = 1 Agenda!OTRO = 'lo que vos quieras / codigo' Agenda.Update Agenda.MoveNext Loop sino tambien usando sentencias de sql UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN WHERE Criterio;
Buenas : Me refiero a editar los registros de la consulta y realizar modificaciones sobre ella. No funciona lo que me mandast porque ya lo probé en su día y no iba. Probé ahora, y tampoco va. Da el siguiente error : La operación debe usar una consulta actualizable
Cuando la consulta esta guardada Yo hago las actualizaciones tabla por tabla porque siempre me queda algún campo sin valor sino... ¿Qué tipo de recordset usaste? Tendrías que usar dynaset Lamento no poder darte la respuesta precisa.
Buenas : Uso Dynaset. (Uso las mismas propiedades de si me fuera a conectar a una tabla para editar sus datos pero en vez de una tabla, pues una consulta)
OK entonces hace la actualización tabla por tabla así podes mantener mejor control de lo que estas haciendo... Abrí recordset de las tablas que tienes en la consulta y modifica las que cambiaron.