Autor
|
Tema: Error 3251 - Recordset en Red (Leído 9,291 veces)
|
MandingoPC
Desconectado
Mensajes: 24
|
Error 3251
El recorset actual no admite actualizaciones, puede ser una limtiacion del proveedor o del tipo de bloqueo seleccionado.
Resulta que quiero usar el mismo programa con la misma base de datos bajo una red, y modificar la base de datos desde 2 pcs bajo la misma red, entonces me tira ese error. Tiene solución? o ya habría que usar algo mas sofisticado que el ADO?
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Buenas.
O estás abriendo el recordset en modo de sólo lectura, o bien la consulta que cargas en el recordset no permite actualizar la bd.
Saludos.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
MandingoPC
Desconectado
Mensajes: 24
|
Hola gracias por responder. Mira con esto abro la base de datos en el modulo: Public cn As ADODB.Connection Public Function Conectar() As Boolean Conectar = False Dim strcon As String strcon = "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "Data source =" & App.Path & "\Base.mdb" ' Mi dirección personal de mi base de datos On Error GoTo xd Set cn = New ADODB.Connection cn.Open strcon Conectar = True Exit Function xd: MsgBox "Conexión fallida.", vbCritical, "CRITICAL ERROR FATAL" End End Function
Y con esto escribo cada vez que quiero actualizarla: ---------------------------------------------- Dim rs As ADODB.Recordset If Not Conectar() Then Exit Sub Set rs = New ADODB.Recordset
rs.AddNew rs!codigo = txtCod rs.Close Set rs = Nothing Desconectar Si en una PC esta abierta la base de datos, y simultaneamente en la otar quiero escribir en la misma base, me tira el error arriba mencionado.
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Buenas.
¿Podrías poner la parte de código que omites? Es decir, lo que te comenté en un principio: la apertura del recordset y la consulta a la bd con la que montas el recordset. Además de ese code que veo que falta, no estás haciendo un update, cierras el rs directamente.
Un saludo.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
MandingoPC
Desconectado
Mensajes: 24
|
Modulo:Public CNN As New ADODB.Connection Public RST As New ADODB.Recordset Public PRV As String, SQL1 As Variant
Function asg() PRV = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\Base.mdb" & ";Persist Security Info=False" End Function Function opDB()
If CNN.State = 0 Then CNN.Open PRV End If End Function
Function openRS()
If CNN.State = 1 Then RST.Open SQL1, CNN, adOpenStatic End If End Function Function cerrar() If CNN.State = 1 Then CNN.Close End If End Function
Otro modulo:Public cn As ADODB.Connection
Public Function Conectar() As Boolean Conectar = False Dim strcon As String strcon = "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "Data source =" & App.Path & "\Base.mdb" ' Mi dirección personal de mi base de datos On Error GoTo xd Set cn = New ADODB.Connection cn.Open strcon Conectar = True Exit Function xd: MsgBox "Conexión fallida.", vbCritical, "CRITICAL ERROR FATAL" End End Function
Public Sub Desconectar() On Error Resume Next cn.Close End Sub
Formulario: Dim rs As ADODB.Recordset If Not Conectar() Then Exit Sub Set rs = New ADODB.Recordset rs.Open ("Articulos"), cn, adOpenKeyset, adLockOptimistic rs.AddNew 'Base de datos / programa rs!Codigo = txtcod rs.Update rs.Close Set rs = Nothing
|
|
|
En línea
|
|
|
|
s00rk
Desconectado
Mensajes: 195
|
Pues es que no es posible es como desear abrir 2 veces el mismo archivo y modificar uno y el otro y que se guarden los cambios.
Para lograr esto ocupas que para cada cosa que desees hacer abra la conexion, hacer lo que deseas y al final cerrar la conexion, para asi este libre para luego si la otra PC quiere acceder a la DB lo logre y no obtenga ese error.
Bueno creo que esto podria ser no estoy 100% seguro ya que nunca he trabajado con un BD de ese tipo.
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Buenas.
@s00rk, las BBDD deben permitir accesos concurrentes a los datos, y las ediciones de los mismos se controlan mediante bloqueos a nivel de registro o bien a nivel de bloque de registros (depende del SGBD) y eso se puede interceptar y controlar en el código de la app, para que ésta no pete.
@MandingoPC, en el otro equipo donde abres la bd, no lo estarás haciendo en modo exclusivo, ¿no?
Prueba a abrir el rs, en vez de con "adOpenKeyset", con "adOpenDynamic".
Saludos.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Para acceder a una BDD por red tendrás que migrar a otro sistema tu BDD, access no es viable para estos casos... para modificar tu BDD solo necesitas una conexión via ODBC.
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Buenas. Para acceder a una BDD por red tendrás que migrar a otro sistema tu BDD, access no es viable para estos casos... para modificar tu BDD solo necesitas una conexión via ODBC.
Permíteme que discrepe con eso que dices. Una bd en Access no es la mejor elección ni mucho menos para utilizar en un entorno de red, eso está claro. Pero de ahí a que no se pueda utilizar en red, va un mundo. Saludos.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
access no es viable para estos casos...
Jamas dije que NO se puede, hay que aprender a leer!¡. Dulces Lunas!¡.
|
|
« Última modificación: 8 Mayo 2012, 05:24 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Recordset y DataGrid?
Programación Visual Basic
|
ferlucas
|
5
|
4,080
|
11 Julio 2005, 14:39 pm
por soplo
|
|
|
recordset en php
PHP
|
almita
|
2
|
7,833
|
16 Enero 2007, 18:33 pm
por Hans el Topo
|
|
|
busco tuto recordset
Programación Visual Basic
|
CrÄsH
|
2
|
1,552
|
1 Abril 2009, 16:30 pm
por CrÄsH
|
|
|
Capturar / evitar error en caso de recordset vacio
Programación Visual Basic
|
raul338
|
3
|
4,926
|
12 Junio 2010, 00:44 am
por raul338
|
|
|
datos de un XLSX a RECORDSET
Programación Visual Basic
|
agmen
|
2
|
4,306
|
21 Octubre 2010, 17:03 pm
por agmen
|
|