0

我有一个表单,它在表单加载时运行一些 sql,表单上的三个排序按钮都在它们自己的私有函数中重复 sql。唯一的区别是排序顺序。当我需要更新 where 子句时,我必须更新 4 次。我想创建一个参数化函数,例如

function getFormRecs(arg){
    sql...
    . 
    .
    .
    order by 'arg'
{

其中 arg 是从表单控件或事件传入的参数。

然后我希望表单加载和表单上的 3 个排序按钮调用函数 getFormRecs(),同时传入 arg,比如

getFormRecs('formload')
getformRecs('sorta')
getformRecs('sortb')
getformRecs('sortc')

我会根据传入的 arg 在函数顶部定义正确的排序字段。

最终结果只是重用包含几乎相同的冗长 sql 的函数或子例程。

4

2 回答 2

2

这似乎与您的要求有关:

Function getFormRecs(ByVal arg As String)
    getFormRecs = "sql ... " & _
                  "." & _
                  "." & _
                  "." & _
                  "order by " & arg
End Function
Private Sub Form_Load()
    Dim sql As String
    sql = getFormRecs("formload")
    '... Logic that uses sql
End Sub
于 2013-10-03T20:15:55.087 回答
2

我不确定你为什么需要一个函数。您可以从不包含ORDER BY.

SELECT id, fld2, fld3
FROM YourTable;

然后在其他地方重新使用相同的查询,方法是将其作为数据源包含在一个新SELECT语句中,在该语句中添加ORDER BY您需要的特定内容。

SELECT q.id, q.fld2, q.fld3
FROM qryBase AS q
ORDER BY q.fld3;
于 2013-10-03T20:16:58.217 回答