VBA SQL文ログ出力を解析するツール

本文介绍了一个使用VB.NET实现的SQL语句转换功能,包括字符串替换和格式调整,以及将转换后的SQL语句复制到剪贴板的操作。通过实例演示了如何将用户输入的SQL组织和参数进行格式化,并提供了SQL转换函数,使得SQL语句更具可读性和易于维护。
Option Explicit
Dim MyDataObject As DataObject

Private Sub CommandButton1_Click()
Dim sqlOrg, sqlWithParams, PARAMSYMPOL, QUOTER As String
Dim params() As String
Dim i As Integer
PARAMSYMPOL = "?"
QUOTER = "'"
sqlOrg = TextBox1.Text

params = Split(TextBox2.Text, ",")
For i = 0 To UBound(params)
Dim tempParam As String
tempParam = QUOTER + LTrim(params(i)) + QUOTER
sqlOrg = Replace(sqlOrg, PARAMSYMPOL, tempParam, 1, 1)
Next i
TextBox3.Text = SQLConvert(sqlOrg) 'sqlOrg
CommandButton2_Click
End Sub

Private Sub CommandButton2_Click()
If TextBox3.Text <> "" Then
'クリップボードにコピーする
Set MyDataObject = New DataObject
MyDataObject.SetText TextBox3.Text
MyDataObject.PutInClipboard
End If
End Sub

Private Sub CommandButton3_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub

Private Sub CommandButton4_Click()

End Sub


Function SQLConvert(StrOrg)
Dim tempStrSQL As String
Dim index As Integer
Dim vbSpace As String
vbSpace = Chr(32)

' index = InStr(1, StrOrg, Chr(10), 0)
' index = InStr(1, StrOrg, Chr(13), 0)
' index = InStr(1, StrOrg, "SELECT" + vbSpace, 0)
While InStr(1, StrOrg, vbSpace + vbSpace, 0) > 0
StrOrg = Replace(StrOrg, vbSpace + vbSpace, vbSpace)
Wend

StrOrg = Replace(StrOrg, vbNewLine, "")
StrOrg = Replace(StrOrg, vbCr, "")
StrOrg = Replace(StrOrg, "SELECT" + vbSpace, vbLf + "SELECT" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "FROM" + vbSpace, vbLf + "FROM" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "WHERE" + vbSpace, vbLf + "WHERE" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "ORDER" + vbSpace + "BY" + vbSpace, vbLf + "ORDER" + vbSpace + "BY" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "UNION" + vbSpace + "ALL" + vbSpace, vbLf + "UNION" + vbSpace + "ALL")
StrOrg = Replace(StrOrg, vbSpace + "UNION" + vbSpace, vbLf + "UNION")
StrOrg = Replace(StrOrg, vbSpace + "LEFT" + vbSpace + "JOIN" + vbSpace, vbLf + "LEFT JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "LEFT" + vbSpace + "OUTER" + vbSpace + "JOIN" + vbSpace, vbLf + "LEFT OUTER JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "LEFT" + vbSpace + "JOIN" + vbSpace, vbLf + "LEFT JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "RIGHT" + vbSpace + "OUTER" + vbSpace + "JOIN" + vbSpace, vbLf + "RIGHT OUTER JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "RIGHT" + vbSpace + "JOIN" + vbSpace, vbLf + "RIGHT JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "INNER" + vbSpace + "JOIN" + vbSpace, vbLf + "INNER JOIN" + vbLf + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "ON" + vbSpace, vbLf + "ON" + vbTab)

StrOrg = Replace(StrOrg, vbSpace + "AND" + vbSpace, vbLf + "AND" + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "OR" + vbSpace, vbLf + "OR" + vbTab)
StrOrg = Replace(StrOrg, vbSpace + "AS" + vbSpace, vbTab + vbTab + "AS" + vbTab)
'StrOrg = Replace(StrOrg, vbSpace + "WHERE" + vbSpace, vbLf + "WHERE" + vbLf + vbTab)


'StrOrg = Replace(StrOrg, "\\s*RIGHT\\s*OUTER\\s*JOIN\\s*", "\\n\\tRIGHT OUTER JOIN\\t\\t")
'StrOrg = Replace(StrOrg, "\\s*RIGHT\\s*JOIN\\s*", "\\n\\tRIGHT JOIN\\t\\t")
'StrOrg = Replace(StrOrg, "\\sAND\\s", "\\nAND\\t")
'StrOrg = Replace(StrOrg, "\\sOR\\s", "\\nOR\\t")
'StrOrg = Replace(StrOrg, "\\sAS\\s", "\\tAS\\t\\t")
StrOrg = Replace(StrOrg, vbSpace + ",", vbLf + vbTab + ",")

SQLConvert = StrOrg
End Function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值