不想用DTS,也不想用链接服务器,客户端用VB编程
7 个解决方案
#1
可以,ADO 可以使用 内存数据集
不需要任何数据源
参考
当然可使用记录集
因为记录集可以直接创建在内存中
Dim Rs As New ADODB.Recordset
Dim II As Long
Rs.CursorLocation = adUseClient
Rs.Fields.Append "Col1", adVarChar, 20
Rs.Fields.Append "Col2", adVarChar, 20
Rs.Fields.Append "Col3", adVarChar, 20
Rs.Fields.Append "Col4", adVarChar, 20
Rs.Open "me"
'把表格中的数据搬到数据集,再借助 .Find 即可查找,速度超快
For II = 1 To 1000
'插入1000行
Rs.AddNew
Rs(0).Value = "a" & II & 1
Rs(1).Value = "b" & II & 2
Rs(2).Value = "c" & II & 3
Rs(3).Value = "d" & II & 4
Rs.Update
Next
Rs.MoveFirst
Rs.Find "Col1='a11'"
If Rs.EOF = False Then
MsgBox Rs(0)
End If
Rs.Close
不需要任何数据源
参考
当然可使用记录集
因为记录集可以直接创建在内存中
Dim Rs As New ADODB.Recordset
Dim II As Long
Rs.CursorLocation = adUseClient
Rs.Fields.Append "Col1", adVarChar, 20
Rs.Fields.Append "Col2", adVarChar, 20
Rs.Fields.Append "Col3", adVarChar, 20
Rs.Fields.Append "Col4", adVarChar, 20
Rs.Open "me"
'把表格中的数据搬到数据集,再借助 .Find 即可查找,速度超快
For II = 1 To 1000
'插入1000行
Rs.AddNew
Rs(0).Value = "a" & II & 1
Rs(1).Value = "b" & II & 2
Rs(2).Value = "c" & II & 3
Rs(3).Value = "d" & II & 4
Rs.Update
Next
Rs.MoveFirst
Rs.Find "Col1='a11'"
If Rs.EOF = False Then
MsgBox Rs(0)
End If
Rs.Close
#2
感谢zlt982001(乐天)
那么,怎么把这个Recordset的内容更新另到一个SQL Server数据源里呢?
那么,怎么把这个Recordset的内容更新另到一个SQL Server数据源里呢?
#3
可能有些朋友不明白为什么要这样,那时因为客户端需要采集很多数据,但是和服务器又不是24小时随时连接,并且网络情况又不太好,不能容许一条一条记录插入,那将花费大量时间,Bulk Insert是不错的,但是很麻烦,要把数据文件通过其它方式传到服务器上。
我想,如果有一种机制把内存Recordset直接更新到服务器数据源上岂不是更方便。
也许想法天真了。但是请知道的朋友帮帮我。不胜感激。
我想,如果有一种机制把内存Recordset直接更新到服务器数据源上岂不是更方便。
也许想法天真了。但是请知道的朋友帮帮我。不胜感激。
#4
我们用asp来处理
客户端,生成xml后,提交到远程asp文件
Private Sub CustomerManager_PostCustomerTable(ByVal rs As ADODB.Recordset)
Dim RequestDoc As MSXML.DOMDocument
Set RequestDoc = New MSXML.DOMDocument
rs.Save RequestDoc, adPersistXML
Dim httpRequest As New MSXML.XMLHTTPRequest
httpRequest.Open "POST", sURL & "PostCustomerTable.asp", False
httpRequest.send RequestDoc
' throw assert on any return status other than 200
If httpRequest.Status <> 200 Then
MsgBox httpRequest.statusText, , httpRequest.Status
End If
End Sub
服务端
<%@ Language=VBScript %>
<%
dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Request
rs.UpdateBatch
%>
客户端,生成xml后,提交到远程asp文件
Private Sub CustomerManager_PostCustomerTable(ByVal rs As ADODB.Recordset)
Dim RequestDoc As MSXML.DOMDocument
Set RequestDoc = New MSXML.DOMDocument
rs.Save RequestDoc, adPersistXML
Dim httpRequest As New MSXML.XMLHTTPRequest
httpRequest.Open "POST", sURL & "PostCustomerTable.asp", False
httpRequest.send RequestDoc
' throw assert on any return status other than 200
If httpRequest.Status <> 200 Then
MsgBox httpRequest.statusText, , httpRequest.Status
End If
End Sub
服务端
<%@ Language=VBScript %>
<%
dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Request
rs.UpdateBatch
%>
#5
无论何种方式,最终都是要一条条更新的,只不过是一次性的一条条更新而已
你可以选择,
1。将内存记录集保存为文件,将文件传送给服务器端,服务器端读取,更新
2。连接服务器端,用记录集更新
你可以选择,
1。将内存记录集保存为文件,将文件传送给服务器端,服务器端读取,更新
2。连接服务器端,用记录集更新
#6
谢谢online(龙卷风V3.0--笑傲江湖) & zlt982001(乐天)
结贴了。
通过两位的方法,我想能够解决我提出的问题了。非常感谢。
结贴了。
通过两位的方法,我想能够解决我提出的问题了。非常感谢。
#7
很久没上CSDN了,不知道怎么给分了,看了帮助也没找到
不好意思
不好意思
#1
可以,ADO 可以使用 内存数据集
不需要任何数据源
参考
当然可使用记录集
因为记录集可以直接创建在内存中
Dim Rs As New ADODB.Recordset
Dim II As Long
Rs.CursorLocation = adUseClient
Rs.Fields.Append "Col1", adVarChar, 20
Rs.Fields.Append "Col2", adVarChar, 20
Rs.Fields.Append "Col3", adVarChar, 20
Rs.Fields.Append "Col4", adVarChar, 20
Rs.Open "me"
'把表格中的数据搬到数据集,再借助 .Find 即可查找,速度超快
For II = 1 To 1000
'插入1000行
Rs.AddNew
Rs(0).Value = "a" & II & 1
Rs(1).Value = "b" & II & 2
Rs(2).Value = "c" & II & 3
Rs(3).Value = "d" & II & 4
Rs.Update
Next
Rs.MoveFirst
Rs.Find "Col1='a11'"
If Rs.EOF = False Then
MsgBox Rs(0)
End If
Rs.Close
不需要任何数据源
参考
当然可使用记录集
因为记录集可以直接创建在内存中
Dim Rs As New ADODB.Recordset
Dim II As Long
Rs.CursorLocation = adUseClient
Rs.Fields.Append "Col1", adVarChar, 20
Rs.Fields.Append "Col2", adVarChar, 20
Rs.Fields.Append "Col3", adVarChar, 20
Rs.Fields.Append "Col4", adVarChar, 20
Rs.Open "me"
'把表格中的数据搬到数据集,再借助 .Find 即可查找,速度超快
For II = 1 To 1000
'插入1000行
Rs.AddNew
Rs(0).Value = "a" & II & 1
Rs(1).Value = "b" & II & 2
Rs(2).Value = "c" & II & 3
Rs(3).Value = "d" & II & 4
Rs.Update
Next
Rs.MoveFirst
Rs.Find "Col1='a11'"
If Rs.EOF = False Then
MsgBox Rs(0)
End If
Rs.Close
#2
感谢zlt982001(乐天)
那么,怎么把这个Recordset的内容更新另到一个SQL Server数据源里呢?
那么,怎么把这个Recordset的内容更新另到一个SQL Server数据源里呢?
#3
可能有些朋友不明白为什么要这样,那时因为客户端需要采集很多数据,但是和服务器又不是24小时随时连接,并且网络情况又不太好,不能容许一条一条记录插入,那将花费大量时间,Bulk Insert是不错的,但是很麻烦,要把数据文件通过其它方式传到服务器上。
我想,如果有一种机制把内存Recordset直接更新到服务器数据源上岂不是更方便。
也许想法天真了。但是请知道的朋友帮帮我。不胜感激。
我想,如果有一种机制把内存Recordset直接更新到服务器数据源上岂不是更方便。
也许想法天真了。但是请知道的朋友帮帮我。不胜感激。
#4
我们用asp来处理
客户端,生成xml后,提交到远程asp文件
Private Sub CustomerManager_PostCustomerTable(ByVal rs As ADODB.Recordset)
Dim RequestDoc As MSXML.DOMDocument
Set RequestDoc = New MSXML.DOMDocument
rs.Save RequestDoc, adPersistXML
Dim httpRequest As New MSXML.XMLHTTPRequest
httpRequest.Open "POST", sURL & "PostCustomerTable.asp", False
httpRequest.send RequestDoc
' throw assert on any return status other than 200
If httpRequest.Status <> 200 Then
MsgBox httpRequest.statusText, , httpRequest.Status
End If
End Sub
服务端
<%@ Language=VBScript %>
<%
dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Request
rs.UpdateBatch
%>
客户端,生成xml后,提交到远程asp文件
Private Sub CustomerManager_PostCustomerTable(ByVal rs As ADODB.Recordset)
Dim RequestDoc As MSXML.DOMDocument
Set RequestDoc = New MSXML.DOMDocument
rs.Save RequestDoc, adPersistXML
Dim httpRequest As New MSXML.XMLHTTPRequest
httpRequest.Open "POST", sURL & "PostCustomerTable.asp", False
httpRequest.send RequestDoc
' throw assert on any return status other than 200
If httpRequest.Status <> 200 Then
MsgBox httpRequest.statusText, , httpRequest.Status
End If
End Sub
服务端
<%@ Language=VBScript %>
<%
dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Request
rs.UpdateBatch
%>
#5
无论何种方式,最终都是要一条条更新的,只不过是一次性的一条条更新而已
你可以选择,
1。将内存记录集保存为文件,将文件传送给服务器端,服务器端读取,更新
2。连接服务器端,用记录集更新
你可以选择,
1。将内存记录集保存为文件,将文件传送给服务器端,服务器端读取,更新
2。连接服务器端,用记录集更新
#6
谢谢online(龙卷风V3.0--笑傲江湖) & zlt982001(乐天)
结贴了。
通过两位的方法,我想能够解决我提出的问题了。非常感谢。
结贴了。
通过两位的方法,我想能够解决我提出的问题了。非常感谢。
#7
很久没上CSDN了,不知道怎么给分了,看了帮助也没找到
不好意思
不好意思