在VBA中格式化SQL
我正在使用VBA打开ODBC连接并检索数据。我有一些SQL查询,用于填充我需要的内容:在VBA中格式化SQL,vba,excel,Vba,Excel,我正在使用VBA打开ODBC连接并检索数据。我有一些SQL查询,用于填充我需要的内容: SELECT tbl.a AS test1 tbl.b AS test2 tbl.c AS test3 FROM db.tbl AS tbl INNER JOIN db.more AS more ON more.a = tbl.a 是否有一种方法可以在VBA中输入此查询,使其保留其结构并看起来可读?我这样做: Dim sql AS string sql = "" sql = sql &a
SELECT
tbl.a AS test1
tbl.b AS test2
tbl.c AS test3
FROM
db.tbl AS tbl
INNER JOIN db.more AS more
ON more.a = tbl.a
是否有一种方法可以在VBA中输入此查询,使其保留其结构并看起来可读?我这样做:
Dim sql AS string
sql = ""
sql = sql & "SELECT"
sql = sql & " tbl.a AS test1"
sql = sql & " tbl.b AS test2"
sql = sql & " tbl.c AS test3"
sql = sql & "FROM"
sql = sql & " db.tbl AS tbl"
sql = sql & "INNER JOIN db.more AS more"
sql = sql & " ON more.a = tbl.a"
这对我来说真的不太好,但是如果这是我能做的最好的,那么我会处理的。我只是想看看是否有更好的方法。这有帮助吗
Sub test()
Dim sql As String
sql = "SELECT " & _
"tbl.a AS test1 " & _
"tbl.b AS test2 " & _
"tbl.c AS test3 " & _
"FROM " & _
"db.tbl AS tbl" & _
"INNER JOIN db.more AS more" & _
"ON more.a = tbl.a"
End Sub
这有帮助吗
Sub test()
Dim sql As String
sql = "SELECT " & _
"tbl.a AS test1 " & _
"tbl.b AS test2 " & _
"tbl.c AS test3 " & _
"FROM " & _
"db.tbl AS tbl" & _
"INNER JOIN db.more AS more" & _
"ON more.a = tbl.a"
End Sub
这只是偏好,但可能是这个
sql = "SELECT" + _
" tbl.a AS test1" + _
" tbl.b AS test2" + _
" tbl.c AS test3" + _
"FROM" + _
" db.tbl AS tbl" + _
"INNER JOIN db.more AS more" + _
" ON more.a = tbl.a"
另一个选项是将SQL输入工作表中的单元格,然后隐藏该工作表,然后在VBA中使用:
sql = Worksheet("NameOfHiddenWorkSheet").Range("A1").Value
在我的需要中,我通常将图纸命名为设置并命名范围(范围名称)
然后你可以这样称呼它:
sql = Sheets("Settings").Range("Sql").Value
这只是偏好,但可能是这个
sql = "SELECT" + _
" tbl.a AS test1" + _
" tbl.b AS test2" + _
" tbl.c AS test3" + _
"FROM" + _
" db.tbl AS tbl" + _
"INNER JOIN db.more AS more" + _
" ON more.a = tbl.a"
另一个选项是将SQL输入工作表中的单元格,然后隐藏该工作表,然后在VBA中使用:
sql = Worksheet("NameOfHiddenWorkSheet").Range("A1").Value
在我的需要中,我通常将图纸命名为设置并命名范围(范围名称)
然后你可以这样称呼它:
sql = Sheets("Settings").Range("Sql").Value
谢谢,这很有帮助。我曾考虑过像您所说的那样将sql放在一个工作表上,但是有些字段实际上是基于一些范围值的动态字段,因此它在多行中的波动性相同,因此基本方法可能更简单。如果是静态SQL代码的话,我很喜欢这个想法!使用行延续来分配SQL字符串的一个问题是,您可以很容易地遇到25行的限制。我可能最终不得不存储它,或者只使用原始方法。真烦人@JeffreyKramer还始终可以选择将命令存储在文件中,在线或安全位置,或在注册表中。这些选项还允许您修改连接和SQL语句,而无需打开excel和VBA编辑器。有几十种方法可以改善你的处境,这完全取决于你拥有什么和想要做什么。谢谢你,这很有帮助。我曾考虑过像您所说的那样将sql放在一个工作表上,但是有些字段实际上是基于一些范围值的动态字段,因此它在多行中的波动性相同,因此基本方法可能更简单。如果是静态SQL代码的话,我很喜欢这个想法!使用行延续来分配SQL字符串的一个问题是,您可以很容易地遇到25行的限制。我可能最终不得不存储它,或者只使用原始方法。真烦人@JeffreyKramer还始终可以选择将命令存储在文件中,在线或安全位置,或在注册表中。这些选项还允许您修改连接和SQL语句,而无需打开excel和VBA编辑器。有几十种方法可以改善你的处境,这实际上完全取决于你拥有什么和想要做什么