如何“排序”列和“包含列名与查询”?

时间:2009-07-27 15:21:23

标签: sql excel vba excel-vba

我正在尝试在excel中运行SQL查询,我想:

1。通过我的列“Stationname”订购查询结果 2.包含带有查询的列名

现在它返回没有列名的所有列,最终用户不知道它是什么。

有人可以帮忙吗?我卡住了!以下是我目前的代码:

    strQuery = "select pipelineflow.lciid lciid, ldate, volume, capacity, status, " & _
        "pipeline, station, stationname, drn, state, county, owneroperator, companycode, " & _
        "pointcode, pointtypeind, flowdirection, pointname, facilitytype, pointlocator, " & _
        "pidgridcode from pipelineflow, pipelineproperties " & _
        "where pipelineflow.lciid = pipelineproperties.lciid " & _
        "and pipelineflow.audit_active = 1 " & _
        "and pipelineproperties.audit_active =1 " &
_
        "and pipelineflow.ldate " & dtInDate & _
        "and pipelineproperties.stationname = '" & Stationname & "' "

3 个答案:

答案 0 :(得分:1)

对于问题的第1部分,请在查询中添加ORDER BY子句。在这种情况下:按站名排序

第2部分:不确定为什么列名不包含在您的查询中。您可以使用以下内容(纯粹是示例)显式命名列:

select mycolumn as "MyCustomizedColumnName" from mytable

这允许您提供您选择的列名称。话虽如此,你不应该要求每一栏都这样做,所以我怀疑你的情况还有其他事情发生。


我应该补充一点,存储过程(而不是动态SQL)将产生更好的运行时性能。

答案 1 :(得分:0)

如需订购

Order By stationname

在查询结束时。

您可以使用以下方法遍历列名称:

rst(1).Name

其中rst是你的记录集,而数字是列的索引。

答案 2 :(得分:0)

要对查询结果进行排序,请在查询结尾处使用'ORDER BY'。查询的最后几行看起来像这样

"and pipelineproperties.stationname = '" & Stationname & "' " & _
"ORDER BY pipelineproperties.stationname"

列标题在查询数据中返回,但不会自动写入Excel工作表。下面的代码片段显示了如何遍历记录集的列标题并将它们写入活动单元格的行。

'first'指的是你的记录集,根据需要更新名称。

If Not rst.EOF Then
    For x = 0 To rst.Fields.Count - 1
     With ActiveCell.Offset(0, lcount)
        .Value = rst.Fields(x).Name
     End With
    Next
End If

确保在将查询结果写入工作表时从活动单元格向下偏移,否则您的标题将被数据覆盖。

Activecell.Offset(1,0).CopyFromRecordset rst