如何评估存储的功能?

时间:2014-08-08 23:03:20

标签: sql vbscript

我将以下内容保存在数据库中。

    Function SearchFileForName()
        SearchFileForName = False
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set csvFile = fso.OpenTextFile("ListOfUsers.csv", 1)
        Do Until csvFile.AtEndOfStream
            if app.userID = csvFile.ReadLine then
                SearchFileForName = true
            end if
        loop
    end Function        

    Function WriteNameToFile()
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set csvFile = fso.OpenTextFile("ListOfUsers.csv", 8)
        csvFile.WriteLine app.userID
    end function        

    Function theMessage()
        if weekday(Now()) = vbfriday then
            response = msgbox ("Great Job "& split(app.userid, ".")(0) & "!" & _
                     vbnewline & vbnewline & _
                     "Keep up the good work and keep that morale high." & _ 
                      vbnewline & vbnewline & _
                     "Would you like a cookie for your efforts?", vbyesno)

            if response = vbyes then
                msgbox "Enjoy =)" & _
                             vbnewline & _
                             vbnewline & _
                       vbnewline & _
        "             _ . : : : : : . _" & vbnewline & _
        "         . : : : ` _ | _ ` : : : ." & vbnewline & _
        "     /  : : `   - - | - -   ` : : \" & vbnewline & _
        "   | : `   . - - - ` - - - .  `  : |" & vbnewline & _
        "   | :  (   O   R   E   O   )  : |" & vbnewline & _
        "   | : :   ` - - - - - - - `   : : |" & vbnewline & _
        "     \   : : : . . .  . . . . : : :  /" & vbnewline & _
        "         ` : : : : : : : : : : : `" & vbnewline & _
         "               ` ` ` ` ` ` `" & vbnewline

            elseif response = vbno then
                msgbox "That is too bad." & vbnewline & _
                             "Here is a cookie anyways." & vbnewline & _
                       "Enjoy =)" & _
                             vbnewline & _
                             vbnewline & _
                       vbnewline & _
        "             _ . : : : : : . _" & vbnewline & _
        "         . : : : ` _ | _ ` : : : ." & vbnewline & _
        "     /  : : `   - - | - -   ` : : \" & vbnewline & _
        "   | : `   . - - - ` - - - .  `  : |" & vbnewline & _
        "   | :  (   O   R   E   O   )  : |" & vbnewline & _
        "   | : :   ` - - - - - - - `   : : |" & vbnewline & _
        "     \   : : : . . .  . . . . : : :  /" & vbnewline & _
        "         ` : : : : : : : : : : : `" & vbnewline & _
         "               ` ` ` ` ` ` `" & vbnewline
            end if
        end if
    End Function        

    Function easterEgg()
        if not SearchFileForName() then
            WriteNameToFile
            theMessage
        end if
    end Function

所以我用以下的sql查询来调用它

    Function easterEgg0()
        Set rseasterEgg =  CreateObject("ADODB.RecordSet")
            rseasterEgg.Open _
                "   SELECT  dyCode " & _
                "   FROM        DDCode " & _
                "   WHERE       dyName = 'EasterEggScript'", _
                 Connection, adOpenStatic, adLockBatchOptimistic, adCmdText
            Execute rseasterEgg.fields("dyCode").value
            Call easterEgg
    End Function

当我打印出来时,它看起来与预期完全一样。但是当我尝试运行它时,我收到一个错误,说明Typemismatch:'SearchFileForName'?

我做错了什么?

1 个答案:

答案 0 :(得分:1)

来自MSDN - Execute Statement

  

调用执行语句的上下文决定了什么   对象和变量可用于正在运行的代码。在适用范围   对象和变量可用于在执行中运行的代码   声明。但是,重要的是要理解,如果你执行   创建过程的代码,该过程不会继承   发生程序的范围。

     

与任何程序一样,新程序的范围是全球性的   继承全局范围内的所有内容。与任何其他程序不同,   它的上下文不是全局范围,所以它只能在中执行   发生执行语句的过程的上下文。   但是,如果在a之外调用相同的 Execute 语句   过程(即在全局范围内),它不仅继承了一切   在全球范围内,但它也可以从任何地方调用,因为它   背景是全球性的。

要改为使用ExecuteGlobal,而是

Function easterEgg0()
    Set rseasterEgg =  CreateObject("ADODB.RecordSet")
        rseasterEgg.Open _
            "   SELECT  dyCode " & _
            "   FROM        DDCode " & _
            "   WHERE       dyName = 'EasterEggScript'", _
             Connection, adOpenStatic, adLockBatchOptimistic, adCmdText
        ExecuteGlobal rseasterEgg.fields("dyCode").value
        Call easterEgg
End Function