我将以下内容保存在数据库中。
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'?
我做错了什么?
答案 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