** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - añadir registro con ADO
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoañadir registro con ADO

 Responder Responder Página  12>
Autor
Mensaje
alikant Ver desplegable
Nuevo
Nuevo


Unido: 23/Septiembre/2014
Localización: Mi casa
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Tema: añadir registro con ADO
    Enviado: 23/Septiembre/2014 a las 01:37
Hola a todos, soy nuevo y tengo una duda, tengo en una base de datos una tabla vinculada a un servidor AZURE, y mediante un boton de un formulario necesito añadir un registro mediante ADO a dicha tabla, lo hago asi :


Const Proveedor = "Provider=Microsoft.Jet.OLEDB.4.0;"
        Const OrigenDeDatos = "Data Source=C:\Users\Chus\Documents\Database8.accdb"
        Const CadenaDeConexion = Proveedor & OrigenDeDatos
        
        Dim ConjuntoDeRegistros As New ADODB.Recordset
        Dim Conexion As New ADODB.Connection
        
        
        
        Call Conexion.Open(CadenaDeConexion)
        Call ConjuntoDeRegistros.Open("T_Clientes", Conexion, adOpenKeyset, adLockOptimistic)
        
        ConjuntoDeRegistros.AddNew
        
        ConjuntoDeRegistros("CodigoCliente").Value = Me.IDtemp
        ConjuntoDeRegistros("Nombre").Value = Me.NombreClienteTEMP
                
                ConjuntoDeRegistros.Update
                ConjuntoDeRegistros.Close
                Conexion.Close
                
                
        Set ConjuntoDeRegistros = Nothing
        Set Conexion = Nothing


Pero me da el siguiente error :

No se pudo usar "; el archivo ya esta en uso

en la linea : Call Conexion.Open(CadenaDeConexion)

Para trabajar con ADO debo tener alguna referencia especifica ?

Si lo hago asi funciona perfectamente , pero con ADO sería lo mejor para este tipo de conexion:


Dim dbs As Database
Dim RstDestino As Recordset

Set dbs = CurrentDb  
Set RstDestino = dbs.OpenRecordset("T_Clientes")

RstDestino.AddNew 

RstDestino!CodigoCliente = Me.IDtemp
RstDestino!Nombre = Me.NombreClienteTEMP
RstDestino!Tlf1 = Me.TelefonoTEMP

RstDestino.Update 

RstDestino.Close
Set RstDestino = Nothing



Agradezco me puedan ayudar cuanto antes.


Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 09:15
¿Tiene que ser con ADO? ... una sentencia SQL haría lo mismo sobre esa tabla que parece estar vinculada.

Además, creo que el problema esta en que 'actualmente' debe de estar abierta en modo exclusivo (o se pretende abrir en modo exclusivo) y por ello no lo permite.
Arriba
carlosbelmonte Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 439
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 10:00
Es una tabla sql vinculada en un servidor AZURE, creo haber leido en el foro que es aconsejable trabajar con ADO, pero no se exactamente cual es el codigo para añadir un registro a esa tabla.
Arriba
alikant Ver desplegable
Nuevo
Nuevo


Unido: 23/Septiembre/2014
Localización: Mi casa
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 10:24
A mi también me recomendaron usar ADO porque me comentaron que era un código mas estable y conectaba más rapido con la base de datos de AZURE.

He probado lo que Feijoo comenta de hacer una llamada a una consulta que ejecute el SQL y funciona bien también, pero quería probarlo con ADO.


Si alguien me puede ayudar, le doy las gracias de antemano.


Saludos
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 10:46
prueba con una instrucción sql insert:
conexion.execute ("insert into t_clientes(codigocliente, nombre,tlf1) select  " & Me.IDtemp & ".'" & NombreClienteTEMP& "','" & me.TelefonoTEMP & "'")


Editado por guarracuco - 23/Septiembre/2014 a las 10:46
https://tucondominioaldia.net
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 10:53
Releyendo tu problema está en la conexión.
Falta la ruta (que creo cambias por una local por razones obvias, pero falta indicar cursor)

with conexion
    .ConnectionString = CadenaDeConexion
            .CursorLocation = adUseServer 
            .Open
end with
https://tucondominioaldia.net
Arriba
carlosbelmonte Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 439
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 11:11
a que te refieres con indicar cursor ? que es el cursor ?
gracias
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 11:35
http://www.telecable.es/personales/jrubi/index.htm?resumen/res00790.htm
https://tucondominioaldia.net
Arriba
carlosbelmonte Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 439
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 11:43
y entonces para tablas sql vinculadas que se recomienda usar para trabajar con los registros ADO o DAO ? y porque ?
Saludos
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 11:51
Si están vinculadas puedes insertar, editar, eliminar directamente con dao, como si fuesen locales.
Para insertar o modificar una cantidad importante es preferible hacerlo contra una conexión directa al servidor de datos.
Lo que pasa con las tablas vinculadas es que estas solicitando del servidor todos los registros de las tablas vinculadas cuando en realidad no las necesitas.
En cambio si no las vinculas y solicitas al servidor solo los registros necesarios, el tráfico por red disminuye y el rendimiento del servidor es mayor.

Pasar de un modelo al otro requiere de investigar, leer releer y paciencia; nada del otro mundo realmente.
Con ADO puedes crear recordset 'desconectados' que no es mas que almacenarlos en memoria, como un arreglo o matríz, solo que con mas funcionalidades que éstos. Una vez creado el recordset, te desconectas del servidor.
https://tucondominioaldia.net
Arriba
alikant Ver desplegable
Nuevo
Nuevo


Unido: 23/Septiembre/2014
Localización: Mi casa
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 11:58
Alguien podría poner un pequeño ejemplo para insertar datos mediante ADO sin tabla vinculada?
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 12:15
Ya está en este hilo.
1) Tienes que crear una conexión al servidor de datos
2) Ejecuta una consulta de datos anexados contra esa conexión y listo

conexion.execute cadenasql
https://tucondominioaldia.net
Arriba
alikant Ver desplegable
Nuevo
Nuevo


Unido: 23/Septiembre/2014
Localización: Mi casa
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 23/Septiembre/2014 a las 23:17
La ruta para realizar la conexión es la ruta de la base de datos en la que estoy trabajando en este momento ??
Const OrigenDeDatos = "Data Source=C:\Users\Chus\Documents\Database8.accdb"

Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3123
Enlace directo a este mensaje Enviado: 24/Septiembre/2014 a las 00:33
Acabo de crear una conexion a una base de datos para probar y no encuentro problema alguno.
Const Proveedor = "Provider=Microsoft.Jet.OLEDB.4.0;"
Const OrigenDeDatos = "Data Source=C:\Users\Administrador\Documents\ControlUsuarios\usuarios_data.mdb"
Const CadenaDeConexion = Proveedor & OrigenDeDatos
Dim ConjuntoDeRegistros As New ADODB.Recordset
Dim Conexion As New ADODB.Connection
Sub conecta()
     Dim conn As New ADODB.Connection
     conn.Open CadenaDeConexion
     Set rst = conn.Execute("select top 1 [1er NOMB] from [t alumnos] order by [id alumno]")
     If Not rst.EOF Then
        Debug.Print rst(0)
     End If
     rst.Close
     conn.Close
End Sub

?Cual problema tienes?
?Activaste referencia a ADO?
https://tucondominioaldia.net
Arriba
oceluy Ver desplegable
Habitual
Habitual


Unido: 19/Enero/2012
Localización: españa
Estado: Sin conexión
Puntos: 199
Enlace directo a este mensaje Enviado: 24/Septiembre/2014 a las 11:09
Pregunta tonta,
La conexión la estás haciendo desde tu misma base de datos que contiene las tablas vinculadas, o desde otra bd que intenta acceder a la que tiene las tablas vinculadas?



Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable