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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  "El recordset actual no admite actualizaciones"!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: "El recordset actual no admite actualizaciones"!!  (Leído 6,541 veces)
cobreti09

Desconectado Desconectado

Mensajes: 4


Ver Perfil
"El recordset actual no admite actualizaciones"!!
« en: 23 Abril 2006, 18:16 pm »

Hola estoy haciendo un programa en vb, y tengo un problema al intentar agregar registros a la bsd.

El programa tiene la opcion de crear una lista de peliculas o abrir una ya creada, y las visualiza en un datagrid.

Hasta aqui bien, en un principio use DAO para crear la bsd mas que nada por que es  mas sencillo pero tuve que cambiar a ADOX por que con DAO no podia usar el datagrid.

Y ahora con ADO tengo el problema de que no me deja añadir registros, me da el error :

"el recordset actual no admite actualizaciones"

da el error en cuanto lee la linea de

Código:
rs.addnew


os voy a poner la funcion que uso para crear una nueva lista de peliculas:

Código:
Private Function nuevo()
    If cn.State = 1 Then 'si existe ya una conexion con alguna lista la cierro
        cn.Close
    End If

    CommonDialog1.ShowOpen
    On Error GoTo etiqueta 'antes de conectar uso un control de errores por si ya existe una lista con ese nombre
'creo un catalogo
cat.Create "provider =microsoft.jet.oledb.4.0;data source=" & CommonDialog1.FileName & ";"

'asocio td (la tabla) con el catalogo
Set td.ParentCatalog = cat
td.Name = "peliculas"
'creo los campos y los anexo
fd1.Name = "COD"
td.Columns.Append fd1, adInteger
fd2.Name = "TITULO"
td.Columns.Append fd2, adVarChar
fd3.Name = "DIRECTOR"
td.Columns.Append fd3, adVarChar
fd4.Name = "PROTAGONISTA"
td.Columns.Append fd4, adVarChar
fd5.Name = "GENERO"
td.Columns.Append fd5, adVarChar
fd6.Name = "AÑO"
td.Columns.Append fd6, adInteger
fd7.Name = "SUBIDO POR"
td.Columns.Append fd7, adVarChar


cat.Tables.Append td 'pego la tabla
' Quitamos las referencias a las instancias de los objetos creados, para que no de problemas al volver a crear otra lista
Set cat = Nothing
Set td = Nothing
Set fd = Nothing

        a = MsgBox("Nueva lista " & CommonDialog1.FileName & " creada", vbOKOnly, "Videoteca DVD")



'conecto con la base de datos creada
cn.Open "provider =MSdatashape;data provider=microsoft.jet.oledb.4.0;data source=" & CommonDialog1.FileName & ";"

Set rs = New ADODB.Recordset 'defino un recordset

'me traigo todos los campos, estaran vacios ya que acabamos de crear la bsd
        rs.ActiveConnection = cn
        rs.Source = "select * from peliculas"
        rs.LockType = adLockOptimistic
        rs.CursorLocation = adUseClient
        rs.CursorType = adOpenKeyset
        rs.Open
       
        Set DataGrid1.DataSource = rs 'conecto el datagrid con el recordset
   
        'habilito los botones de añadir y eliminar
        mnuconsultar.Enabled = True
        mnueliminar.Enabled = True
    Exit Function
etiqueta:
    If Err.Number = -2147217897 Then 'controlo el error de sobrescritura
     a = MsgBox("Ya existe una base de datos con ese nombre", vbCritical, "Videoteca DVD")
    End If
   
End Function


ahi se ve como defino el recordset con bloqueo optimista y demas

luego con el boton de añadir registro tengo este codigo:

Código:
Private Sub Command4_Click()
    rs.AddNew
    For i = 0 To 5
        rs.Fields(i + 1).Value = Text1(i).Text
    Next
   
    rs.Update
    a = MsgBox("Añadido " & Text1(0).Text & "va tu lista", vbInformation, "Videoteca DVD")
   
    For i = 0 To 5
        Text1(i).Text = ""
    Next
    main.DataGrid1.Refresh
End Sub

Por si os sirve de algo tengo un modulo en el que declaro todo de forma publica

Código:
Public cn As New ADODB.Connection
Public rs As ADODB.Recordset
Public fd1 As New adox.Column
Public fd2 As New adox.Column
Public fd3 As New adox.Column
Public fd4 As New adox.Column
Public fd5 As New adox.Column
Public fd6 As New adox.Column
Public fd7 As New adox.Column
Public td As New Table
Public cat As New adox.Catalog

llevo todo el dia de ayer buscando una solucion y no la encuentro, ademas tengo otros programas que hice con adodb en los que si me funciona perfectamente el añadido de registros asi que estoy realmente jodio.

si me pudieran ayudar se lo agradeceria mucho

un saludo!



« Última modificación: 23 Abril 2006, 18:21 pm por cobreti09 » En línea

cobreti09

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: "El recordset actual no admite actualizaciones"!!
« Respuesta #1 en: 23 Abril 2006, 23:25 pm »

Bueno el error estaba en el proveedor, quitando el msdatashape y dejando el jet.ole.db ya funciona.

Yo pensaba que sin el msdatashape no funcionaba el datagrid ?¿?¿?


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Su tarjeta no admite..."Generar paquetes"
Hacking Wireless
Alberyliam 1 2,008 Último mensaje 19 Noviembre 2011, 15:06 pm
por pianista
Actualizaciones " Problema"
Windows
Zorronde 2 1,940 Último mensaje 30 Abril 2013, 16:28 pm
por TrashAmbishion
Adblock Plus sólo admite el 9,5% de los "anuncios aceptables" que solicitan ...
Noticias
wolfbcn 0 1,679 Último mensaje 8 Octubre 2013, 17:46 pm
por wolfbcn
Actualizaciones "raro"
Windows
Zorronde 8 6,473 Último mensaje 24 Octubre 2014, 16:47 pm
por Zorronde
Juan Roig admite que la web de Mercadona "es una *****", y confirma cambios ...
Noticias
wolfbcn 0 2,062 Último mensaje 2 Marzo 2017, 21:48 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines