Один из способов сделать это - использовать ADO Recordset.Save , чтобы сохранить постоянный набор записей на стороне клиента (не в сети), а затем отправить этот набор записей на веб-сервер (POST). может быть сделано с использованием объекта MSXML2.XMLHTTP на стороне клиента)
Как только веб-сервер получает POST, вы можете использовать сценарий ASP с ADO Recordset.Open , чтобы открыть его и заполнить базу данных.
РЕДАКТИРОВАТЬ - Прикрепить пример кода. Я проверил это, и, кажется, работает довольно хорошо. Самым сложным может быть настройка вашего веб-сервера для возможности чтения базы данных Access; тем не менее, я думаю, что, если он находится в той же папке, что и сценарий ASP, все будет в порядке.
Обратите внимание, что структура таблицы с обеих сторон должна быть одинаковой.
Я просто перечитал ваш пост и понял, что вы хотите использовать FTP. Это веб-решение (http, только для ASP). Если у вас есть для использования FTP, вы можете загрузить всю базу данных, обновить ее и отправить обратно. Вы также можете отправить в FTP постоянный набор записей в текстовом файле и периодически проверять наличие обновлений в этой папке, импортируя их при обнаружении новых файлов.
Код MS-Access для клиента (без веб-интерфейса):
Sub ClientSide()
'Used CreateObject in lieu of the lines below,
'so you can run this code without references.
' Dim oRS As ADODB.Recordset
' Dim oStream As ADODB.Stream
' Dim oXMLHTTP As MSXML2.XMLHTTP
Dim oRS, oStream, oXMLHTTP
Set oRS = CurrentProject.Connection.Execute("SELECT * FROM [MyClientTable]")
Set oStream = CreateObject("ADODB.Stream")
oRS.Save oStream, 1
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "POST", "http://myserver:80/path/to/asp/server.asp", False, "username", "password"
oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXMLHTTP.setRequestHeader "Connection", "keep-alive"
oXMLHTTP.setRequestHeader "Accept", "text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
sXML = oStream.ReadText
oXMLHTTP.send sXML
'The web server's response is in oXMLHTTP.responseText. You may need it for debugging.
If oXMLHTTP.status <> 200 Then
'This should pop up some useful information if the POST request fails.
Set app = CreateObject("InternetExplorer.Application")
app.Visible = True
app.Navigate "about:blank"
app.Document.Write oXMLHTTP.responseText
End If
oRS.Close
End Sub
Страница ASP сервера (веб-сайта) "server.asp":
<%
sXML = Request.Form
'Database is in the same folder as the asp page
sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\path\to\script\serverdb.mdb;User Id=admin;Password=;"
Set oStream = Server.CreateObject("ADODB.Stream")
oStream.Open
oStream.WriteText sXML
oStream.Position = 0
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open oStream
sSQL = "SELECT * FROM [MyServerTable]"
Set oDB = Server.CreateObject("ADODB.Recordset")
oDB.Open sSQL, sConn, 1, 3
'There's probably a more elegant/quick way of inserting the records,
'but this should be a good start.
Do While Not oRS.Eof
oDB.AddNew
For Each f in oRS.fields
oDB.Fields(f.Name).Value = f.Value
Next
oRS.MoveNext
oDB.Update
Loop
oDB.Close
oRS.Close
Response.write "Done"
%>
@ iDevlop прав, утверждая, что база данных Access не является отличной веб-СУБД, но она должна быть в порядке, если у вас мало пользователей.