vbscript|語句|vbscript <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<% Option Explicit %>
<% Response.Buffer = True %>
<%
' /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
' ///
' /// 檔案名稱: SQLBuilderForVbs
' /// 作用: 構建一些簡單的SQL語句,結合在提交表單時使用,可以較方便
' /// 程式編寫者: 曾思源
' /// 說明: 簡單SQL語句構建“類”,VBS版,只要保留本注釋段,無論是否涉及商業,您可以任意使用,轉載或引用
' /// 日期: 2005-1-8
' ///_________________________________________________________________________________________________
' /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%>
<%
On Error Resume Next
Class QuestStringBuilder
Private objFields
Private strTableName
Private strPKey
Private strPKeySort
Private strCondition
Private aContition()
Private strOperator
Private strLogic
Private blnState
'/-----初始化-----/
Private Sub Class_Initialize()
Set objFields = Server.CreateObject("Scripting.Dictionary")
strTableName = Null
strPKey = Null
strPKeySort = Null
strCondition = Null
ReDim aContition(1)
strOperator = "="
strLogic = " AND "
blnState = False
End Sub
Private Sub Class_Terminate()
Set objFields = Nothing
strTableName = Null
strPKey = Null
strPKeySort = Null
strCondition = Null
Erase aContition
strOperator = Null
strLogic = Null
blnState = False
End Sub
' /----欄位名處理----/
Private Function ProcessField(ByVal sField)
ProcessField = "[" & sField & "]"
End Function
' /-----欄位值處理-----/
Private Function ProcessValue(ByVal sValue)
Dim tmpType : tmpType = VarType(sValue)
Select Case tmpType
Case 2,3,4,5,11 ' 數字類型,布爾類型
ProcessValue = sValue
Case 8 ' 字元類型
ProcessValue = "'" & Safe(sValue) & "'"
Case Else ' 其它類型
ProcessValue = "'" & Safe(sValue) & "'"
End Select
End Function
' /-----綜合處理-----/
Private Function Process(ByRef obj, ByVal strType)
Dim Keys : Keys = obj.Keys
Dim Items : Items = obj.Items
Dim intCount : intCount = obj.Count
Dim tmp()
ReDim tmp(1)
If intCount > 0 Then
Dim tmpArray(), I
ReDim tmpArray(intCount-1)
For I=0 To intCount - 1
tmpArray(I) = Keys(I) & "=" & Items(I)
Next
Select Case UCase(Trim(strType))
Case "UPDATE"
Process = Join(tmpArray, ", ")
Case "SELECT"
Process = Join(Keys, " ,")
Case "INSERT"
tmp(0) = Join(Keys, " ,")
tmp(1) = Join(Items, " ,")
Process = tmp
Erase tmp
End Select
Erase tmpArray
Else
Select Case UCase(Trim(strType))
Case "UPDATE"
Process = False
Case "SELECT"
Process = "*"
Case "INSERT"
Process = tmp
End Select
End If
End Function
' /-----小小的安全處理-----/
Private Function Safe(s)
Safe = Replace(s,"'","''")
End Function
' /-----清空上一次輸入的參數,但保留TableName-----/
Public Sub Clear()
objFields.RemoveAll
'strTableName = Null
strPKey = Null
strPKeySort = Null
strCondition = Null
Erase aContition
strOperator = "="
strLogic = " AND "
blnState = False
End Sub
' /----產生查詢語句----/
Public Function getSelect()
Dim strSQLTemplate : strSQLTemplate = "SELECT {fields} FROM {table} {conditions} {orderby} {sort}"
strSQLTemplate = Replace(strSQLTemplate, "{fields}", Process(objFields, "SELECT"))
If VarType(strTableName) = 1 Then Exit Function
strSQLTemplate = Replace(strSQLTemplate, "{table}", strTableName)
If VarType(strCondition) <> 1 And strCondition <> "" Then
strSQLTemplate = Replace(strSQLTem