【问题标题】:How to skip or ignore the column without using Select NULL?如何在不使用 Select NULL 的情况下跳过或忽略该列?
【发布时间】:2016-07-06 16:33:54
【问题描述】:

我必须声明我之前问过这个问题,但我发现一些措辞错误会导致误导。因此,我决定删除旧问题并再次提问。

这是我的 sql:

Select officer , NULL ,NULL, salary from table 

由于我使用ADO在excel中运行sql,所以在运行sql查询之前需要第二列和第三列输入数据。

但我使用 NULL 跳过 2 列。sql 查询将清除并重置存储在第 2 列和第 3 列中的数据或 excel 公式,因为我选择将这 2 列设为 NULL。

因此,如何跳过这两列而不影响这两列数据或公式?

可视化:

  • 官员,第 2 栏,第 3 栏,薪水

  • _, 2,=sum(B2*C2), _

SQL 查询运行:Select officer , NULL ,NULL, salary from table

  • 官员,第 2 列(NULL),第 3 列(NULL),薪水

  • 988, ___ ,___ , $4789//SQL查询清空2,3列中存储的原始数据

(___ 表示空白)

如何解决这个问题?

【问题讨论】:

  • 为什么不运行两个查询,例如 Select officer from table ORDER BY xxxSelect salary from table ORDER BY xxx,其中似乎需要 ORDER 以确保您获得匹配的数据集
  • 另一种方法是通过循环记录集而不是.CopyFromRecordset 将数据加载到excel。然后循环将只针对第一、第四和第五个字段...
  • @KazimierzJawor 现在我已经建立了一个 sql 语句 mrs.Open sSQLSting, Conn sheet6.Range("A5").CopyFromRecordset mrs 但是这个 sql 语句跨越了不需要放置的单元格
  • @KazimierzJawor 你的意思是把数据放到每个字段的单元格中?语法怎么样,而不是 .CopyFromRecordset?
  • 我建议使用两个 SQL 而不是一个...!请参阅下面的示例@daZza

标签: sql vba excel ado


【解决方案1】:

如果我理解正确,您目前正在将查询的数据直接插入到您的工作表中?

如果是这样,我建议使用记录集来保存查询结果。然后循环遍历它。这样您就可以决定要将数据放在哪些单元格中。

起点可能是这样(根据您的需要修改):

Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "YOUR.PROVIDER"
  .ConnectionString = "YOUR_CONNECTION_STRING"
.Open
End With
strQuery = "SELECT officer, salary FROM table"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  For i = 0 To rs.Fields.Count

    ' Insert data to your worksheet here
    ' rs.Fields(0).Value holds the value for officer
    ' rs.Fields(1).Value holds the value for salary

  Next
  rs.MoveNext
Loop
rs.Close

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2010-10-13
    • 2021-09-13
    相关资源
    最近更新 更多