Sql server SQL Server通过存储过程将表返回给MS Access
我试图将一个表返回给MS Access,该表有50多列,行数可以从0到5000不等。对于每种情况,可以有多个记录和车辆类型 我可以执行存储过程,它工作得很好。我无法将数据返回MS Access 存储过程代码: 更改过程[dbo].[pJDB_导出] @dtefromint, @dteTo int, @Veh nvarchar80 像 开始 不计数; 声明@stWhere VARCHAR200 选择不同的[大小写] 进入tmp 从数据 其中[车辆类型]=@Veh 以及@dteFrom和@dteTo之间的CY 选择不同的* 从dbo.vdata_导出_V3_3_2 v v.[CASE]=t.[CASE]上的内部联接tmp t MS访问代码: 函数Exec_pJDB_exportsqlConn作为字符串 Dim conn作为ADODB连接 Dim cmd作为ADODB.Command Dim iFrom,iTo为整数 将stv设置为字符串 iFrom=1999 伊藤=2002年 stv=1至2吨商用卡车 Set conn=新的ADODB.连接 连接开放式DSN=车辆 conn.ConnectionString=sqlConn Set cmd=New ADODB.Command cmd.ActiveConnection=conn cmd.CommandType=adCmdStoredProc cmd.CommandText=pJDB_导出 cmd.Parameters.Append cmd。CreateParameter@dteFrom,adInteger,adParamInput,iFrom cmd.Parameters.Append cmd。CreateParameter@dteTo,adInteger,adParamInput,iTo cmd.Parameters.Append cmd。CreateParameter@vehicle,adVarChar,adParamInput,80,stv cmd.Execute 关闭连接 端函数 返回一个。正是这个对象包含了您的记录。下面是一个例子:Sql server SQL Server通过存储过程将表返回给MS Access,sql-server,vba,ms-access,stored-procedures,ms-access-2010,Sql Server,Vba,Ms Access,Stored Procedures,Ms Access 2010,我试图将一个表返回给MS Access,该表有50多列,行数可以从0到5000不等。对于每种情况,可以有多个记录和车辆类型 我可以执行存储过程,它工作得很好。我无法将数据返回MS Access 存储过程代码: 更改过程[dbo].[pJDB_导出] @dtefromint, @dteTo int, @Veh nvarchar80 像 开始 不计数; 声明@stWhere VARCHAR200 选择不同的[大小写] 进入tmp 从数据 其中[车辆类型]=@Veh 以及@dteFrom和@dteTo
Function Exec_pJDB_export(sqlConn As String)
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset ' ADO recordset object, for accessing records.
Dim iFrom, iTo As Integer
Dim stv As String
iFrom = 1999
iTo = 2002
stv = "1 TO 2 TON TRUCKS (COMMERCIAL)"
Set conn = New ADODB.Connection
conn.Open "DSN=Cars"
conn.ConnectionString = sqlConn
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "pJDB_export"
cmd.Parameters.Append cmd.CreateParameter("@dteFrom", adInteger, adParamInput, , iFrom)
cmd.Parameters.Append cmd.CreateParameter("@dteTo", adInteger, adParamInput, , iTo)
cmd.Parameters.Append cmd.CreateParameter("@vehicle", adVarChar, adParamInput, 80, stv)
' This line has changed.
Set rs = cmd.Execute()
' Loops over the records.
Do Until rs.EOF
' Display the contents of column one to the user.
MsgBox rs.Fields(0).Value
rs.MoveNext
Loop
rs.Close
conn.Close
End Function
快速概述:
表示文件的结尾。当您查看所有记录时,这是正确的。
不要忘记调用,否则do循环将永远继续!
如果愿意,可以将行rs.Fields0.Value更改为rs.FieldsYourFieldName.Value。我发现按名称引用字段比按职位引用字段更容易。您遇到了什么问题?代码是否返回错误消息,或者您不确定如何访问记录?如果是后者,您将需要一个。没有返回任何内容,也没有错误消息。不知道如何通过ADO访问记录Check out ExecuteReader抱歉@pmbAustin,这是ADO.Net。这是经典的ADO,它不支持。这是可行的。最后一个问题。将其导出到excel或access表。一列的长度小于500,另一列的长度超过10000个字符。这很有效。最后一个问题。如果必须,我更喜欢将数据导出到表中,我可以将其转储到excel。一列的长度小于500个字符,另一列的长度大于10000个字符。导出数据的最佳方式是什么?我宁愿不必按列和行滚动记录集。感谢尽管VBA/ADO可以做到这一点,但有更简单的方法。可以将SP显示为表。作为额外的奖励,它们是免费的。