elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Error 3251 - Recordset en Red
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Error 3251 - Recordset en Red  (Leído 8,814 veces)
MandingoPC

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Error 3251 - Recordset en Red
« en: 27 Abril 2012, 16:38 pm »

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #1 en: 27 Abril 2012, 16:53 pm »

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 Desconectado

Mensajes: 24


Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #2 en: 28 Abril 2012, 04:22 am »

Hola gracias por responder. Mira con esto abro la base de datos en el modulo:

Public cn As ADODB.Connection


Código:
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:

----------------------------------------------

Código:
    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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #3 en: 28 Abril 2012, 10:15 am »

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 Desconectado

Mensajes: 24


Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #4 en: 2 Mayo 2012, 00:04 am »

Modulo:

Código:
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:

Código:
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:

Código:
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 Desconectado

Mensajes: 195



Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #5 en: 4 Mayo 2012, 01:14 am »

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #6 en: 5 Mayo 2012, 15:00 pm »

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 Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Error 3251 - Recordset en Red
« Respuesta #7 en: 7 Mayo 2012, 18:49 pm »

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Error 3251 - Recordset en Red
« Respuesta #8 en: 7 Mayo 2012, 19:04 pm »

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 Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Error 3251 - Recordset en Red
« Respuesta #9 en: 8 Mayo 2012, 05:22 am »

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.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recordset y DataGrid?
Programación Visual Basic
ferlucas 5 3,850 Último mensaje 11 Julio 2005, 14:39 pm
por soplo
recordset en php
PHP
almita 2 7,657 Último mensaje 16 Enero 2007, 18:33 pm
por Hans el Topo
busco tuto recordset
Programación Visual Basic
CrÄsH 2 1,405 Último mensaje 1 Abril 2009, 16:30 pm
por CrÄsH
Capturar / evitar error en caso de recordset vacio
Programación Visual Basic
raul338 3 4,726 Último mensaje 12 Junio 2010, 00:44 am
por raul338
datos de un XLSX a RECORDSET
Programación Visual Basic
agmen 2 4,159 Último mensaje 21 Octubre 2010, 17:03 pm
por agmen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines