ADOを介してデータベーステーブルに対してかなりの量の呼び出しを行っています。物事をDRYに保つという精神で、レコードセットから値の配列を返す次の関数を作成しました。これはうさぎの頭脳ですか?私は主にコンボボックスの値などのセットを取得するために使用しますが、巨大な値には使用しません。使用例(簡潔にするためにエラー処理を削除):
Function getEmployeeList()
getEmployeeList= Array()
strSQL = "SELECT emp_id, emp_name from employees"
getEmployeeList = getSQLArray( strSQL, "|" )
End Function
次に、返された配列を使ってやりたいことを何でもします。
Function getSQLArray( SQL, delimiter )
'*************************************************************************************
' Input a SQL statement and an optional delimiter, and this function
' will return an array of strings delimited by whatever (pipe defaults)
' You can perform a Split to extract the appropriate values.
' Additionally, this function will return error messages as well; check for
' a return of error & delimiter & errNum & delimiter & errDescription
'*************************************************************************************
getSQLArray = Array()
Err.Number = 0
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open oracleDSN
Set objRS = objCon.Execute(SQL)
if objRS.BOF = false and objRS.EOF = false then
Do While Not objRS.EOF
for fieldIndex=0 to (objRS.Fields.Count - 1)
If ( fieldIndex <> 0 ) Then
fieldValue = testEmpty(objRS.Fields.Item(fieldIndex))
recordString = recordString & delimiter & fieldValue
Else
recordString = CStr(objRS.Fields.Item(fieldIndex))
End If
Next
Call myPush( recordString, getSQLArray )
objRS.MoveNext
Loop
End If
Set objRS = Nothing
objCon.Close
Set objCon = Nothing
End Function
Sub myPush(newElement, inputArray)
Dim i
i = UBound(inputArray) + 1
ReDim Preserve inputArray(i)
inputArray(i) = newElement
End Sub
Function testEmpty( inputValue )
If (trim( inputValue ) = "") OR (IsNull( inputValue )) Then
testEmpty = ""
Else
testEmpty = inputValue
End If
End Function
私が持っている質問は次のとおりです。すべてのレコードセットオブジェクトの作成/開く/エラー処理をこのような独自の関数呼び出しに抽象化することは意味がありますか?私はRubeGoldbergマシンを構築していますか?このコードを管理している人は誰でも私の名前を呪うでしょう?
関数で実行するのではなく、それを吸い上げていくつかのマクロを記述し、ADO接続コードを吐き出す必要がありますか?
私はaspに非常に慣れていないので、その機能/ベストプラクティスに穴が開いているので、どんな入力でもいただければ幸いです。