Base de datos en internet

Hola.
Tengo una base de datos de access 2000 subida
A un servidor de host gratuito(cliquear.com) para consultarla mediante una página asp.
Necesito crear una aplicación en visual basic para introducir y actualizar los datos de esta base de datos.
La aplicación debe operar desde un ordenador personal conectado a internet.
He probado con el control ado introdiciendole la ruta de la base de datos y pone que la conexión fue satisfactoria pero al cerrar las propiedades me un "error no especificado".
Te agradecería que me explicaras la forma de hacerlo lo más detalladamente posible. Se trata de un proyecto de fin de curso que debería entregar el 31 de marzo.
Gracias

1 Respuesta

Respuesta
1
Me temo que ninguna versión de Access permite conexiones remotas. Permite conexiones a través de redes locales, pero no por Internet. Para eso necesitarías SQL Server o algún servidor de bases de datos semejante. Sin embargo, hay solución.
La manera de solucionar es complicada, pero perfectamente realizable. Consiste en insertar in "Microsoft Internet Transfer Control" (Inet) en el formulario desde el que quieras exportar datos.
Guardas el contenido del Recordset en un ADODB. Stream (disponible a partir de ADO 2.7, creo) de un modo similar a este:
ORecordset. Save oStream, 1
Luego, con el control Inet, haces lo siguiente:
Dim sDatos as String
sDatos=oStream.ReadText
Inet.URL="www.tuweb.com/import.asp"
Inet. Execute,"POST", sDatos
De esta manera le mandas un requerimiento POST con los datos del Recordset a la página con la que importarás los datos.
Luego tienes que esperar, en el evento StateChanged a que el estado sea icResponseCompleted. Entonces los datos ya habrán sido enviados y, si quieres, podrás enviar más cosas. Si intentas enviar más info antes de que esto ocurra, te va a dar un error.
Luego, en la página import.asp, tienes que cargar el POST y procesarlo, lo cual se hace así:
<%
'Convierte un array de bytes en un String
Function CWideString(bsString)
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
Next
End Function
Dim bData,xml
Dim RS_Remoto,RS_Local,ST,Conexion
'Cargo el Post
bData=Request.BinaryRead(Request.TotalBytes)
' Lo convierto a un String UNICODE
xml=CWideString(rq)
set RS_Remoto=server.CreateObject("ADODB.Recordset")
set RS_Local=server.CreateObject("ADODB.Recordset")
set ST=server.CreateObject("ADODB.Stream")
ST.Type=2
ST.Open
' Cargo el XML en el Stream
ST.WriteText xml
ST.Position=0
' Guardo el Strem en el RecordSet
RS_Remoto.Open ST,,,,256
set ST=nothing
Conexion.Open ...'Abro la conexión
on error resume next
RS_Local.Open "Tabla_a_Actualizar",Conexion,1,4,2
do while not RS_Remoto.EOF
For each Campo in RS_Remoto.Fields
' Aquí supongo que los nombres de
' todos los campos coinciden
RS_Local(campo)=RS_Remoto(campo)
Next
RS_Remoto.MoveNext
loop
RS_Local.Close
set RS_Local=nothing
RS_Remoto.Close
set RS_Remoto=nothing
Conexion.Close
set Conexion=nothing
%>
Con esto exportas datos perfectamente. Si quieres, incluso puedes enviar con Response. Write respuestas a la aplicación. El control Inet las lee, y puedes procesarlas para control de errores y otras eventualidades.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas