2016-02-27 116 views
0

我对Excel VBA稍微有点新。我正在处理现有的Excel工作表,通过存储过程从SQL Server表中检索数据。它目前只是在电子表格中显示数据。我希望能够通过值(0或1)进行排序,并将结果打印为组,第一组0,然后组1,并在组之间重复标题。谢谢使用VBA对结果进行排序和组合

+0

吉姆,举一些你到目前为止尝试过的例子。这将鼓励人们提供更多帮助。 – pczeus

回答

1

要求SQL为您做这件事:或者更改服务器上的存储过程以允许排序参数。 。

或者,您也可以在存储过程的结果存储在表变量,结果有进行排序(如果你不能改变存储过程这将这样的工作:

declare @t table 
    (
    Column1 int, 
    Column2 bit, 
    Column3 nvarchar(100), 
    Column4 nvarchar(100), 
    Column5 nvarchar(100), 
    Column6 int, 
    Column7 nvarchar(100), 
    Column8 nvarchar(max), 
    Column9 bit 
    ) 

insert into @t 
     exec sys.sp_who 

select * 
from @t as t 
order by Column3 

正如您的评论的要求,我详细一点的回答上面的代码是T-SQL:https://en.wikipedia.org/wiki/Transact-SQL 如果您想了解SQL那么下面的网站可以有很大的帮助: http://www.w3schools.com/sql/default.asp

基本上,T -SQL(上面的代码)就是你所说的d到SQL Server,以告诉服务器您想要检索哪种数据。换句话说,这是Excel发送给服务器并获取数据的回报。有几种不同的方式来实现这一目标:

  1. 第一种可能性是使用Data标签直接在Excel中的以下文章中描述:http://kildrummy.com/how-to-pulling-export-data-into-excel/注意,屏幕截图,在一个名为Connection Properties窗口底部。你可以清楚地看到Command Type被设置为SQL,Command Text是SQL代码(就像我上面给出的例子)。
  2. 从SQL Server获取数据的第二个选项是VBA。以下Q & A是一个示例:如何实现:Accessing SQL Database in Excel-VBA再一次,您可以在VBA中注意VBA代码中的`strSQL'字符串,其中包含发送到SQL Server的SQL命令。
+0

这是什么语言?我的VBA2008/6.5不知道它。 –

+0

@PaulOgilvie为了向您展示如何在Excel工作簿中使用/实现解决方案,我扩展了自己的答案。但是,你应该知道上面的代码仅仅是一个例子。我不知道您的服务器的名称,也不知道您从服务器(或存储过程)获得的数据。因此,您必须修改上面的代码**示例**以匹配您想要检索的实际数据。 – Ralph

+0

谢谢,我不知道如何在这里添加代码,它不适合在评论部分(对不起,完成这个论坛的结论。数据检索和显示没问题,只是在一个部分。我想排序它通过一个字段,并显示在两个组中,首先是值0,然后是值为1的那些,标题重复(并添加了字段描述的标题 – Jim

相关问题