2014-01-30 2 views
0

Я новичок в QTP и VBScript, может кто-нибудь посоветует мне ошибку об этом скрипте в строке «Если myEmails = Nothing», которая говорит «требуется объект»? Также будут оценены любые общие отзывы или советы по улучшению, я потратил слишком много времени, пытаясь заставить этот скрипт работать сейчас LOL!Объект, требующий проверки ошибок Outlook

myEmails = "" 
If emailSubjectToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Subject] = "& emailSubjectToSearch & "") 
Else 
If emailBodyToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Body] = "& emailBodyToSearch & "") 
Else 
If emailSenderNameToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[SenderName] = "& emailSenderNameToSearch & "") 
Else 
If emailSentOnToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[SentOn] = "& emailSentOnToSearch & "") 
Else 
If emailAttachmentToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Attachment] = "& emailAttachmentToSearch & "") 
End If 
End If 
End If 
End If 
End If 


If myEmails Is Nothing Then 
MsgBox "Email not found" 
Else 
MsgBox "Email found" 
msgbox myEmails 
End If 

ответ

0

Хотя я не знаю, про весь сценарий, но следующий фрагмент кода должен работать

myEmails = "" 
If emailSubjectToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Subject] = "& emailSubjectToSearch & "") 
ElseIf emailBodyToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Body] = "& emailBodyToSearch & "") 
ElseIf emailSenderNameToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[SenderName] = "& emailSenderNameToSearch & "") 
ElseIf emailSentOnToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[SentOn] = "& emailSentOnToSearch & "") 
ElseIf emailAttachmentToSearch = "[A-Za-z0-9_]" Then 
Set myEmails = emails.Find("[Attachment] = "& emailAttachmentToSearch & "") 
End If 

If IsNull(myEmails) Then 
MsgBox "Email not found" 
Else 
MsgBox "Email found" 
msgbox myEmails 
End If 
+0

'IsNull' используется только соединений с базами данных и полями. Он не может использоваться на объектах, которые не имеют ссылки. Использование 'IsNull' с объектами может привести к неожиданному поведению. – AutomatedChaos

+0

Я пробовал метод IsNull, который да получил msgbox, чтобы всплывать по электронной почте, но не был заполнен, по какой-то причине он не устанавливается по внешнему виду, но я не могу понять, почему он не является SET ЕСЛИ ELSE. Моя цель - получить myEmails SET в инструкциях IF ELSE. Должен ли я УСТАНОВИТЬ его к чему-то, прежде чем он войдет в EL ELSE, чтобы изменить его на что-то еще внутри? – user3254086

+0

Я также попытался сделать ниже, вместо инструкции ELSE IF, но я получил объектную переменную, которая не установила ошибку в строке SET. Dim myEmails Set myEmails = emails.Find ("[Subject] =" & emailSubjectToSearch & "SearchText") & ("[Body] =" & emailBodyToSearch & "SearchText") & ("[SenderName] =" & emailSenderNameToSearch & "SearchText") & ("[SentOn] =" & emailSentOnToSearch & "SearchText") & ("[Attachment] =" & emailAttachmentToSearch & "SearchText") – user3254086

0

Тестирование на null ссылки VBScript осуществляется Is Nothing. Оператор Is сопоставим с === на других языках в качестве Javascript.

Dim myObject ' uninitialized primitive with value empty (do not confuse with "" or 0) 
Set myObject = new Regexp ' Now it has an object 

Dim yourObject 
Set yourObject = Nothing 

If myObject Is Nothing then 
    MsgBox "MyObject is Nothing" ' won't be displayed 
End if 
If yourObject Is Nothing then 
    MsgBox "YourObject is Nothing" ' this is displayed 
End if 

Set yourObject = New RegExp 
MsgBox (myObject Is yourObject) ' displays False 

Set yourObject = myObject 
MsgBox (myObject Is yourObject) ' displays True 

Set myObject = Nothing 
MsgBox "myObject: " & (myObject Is Nothing) & _ 
    & ", yourObject: " & (yourObject Is Nothing) 
' Displays myObject: True, yourObject: False 

Используйте конструкцию

If Not (myObject Is Nothing) Then ... 

, чтобы проверить, если переменная содержит ненулевой объект.

И использовать конструкцию

If IsObject(myObject) Then ... 

, чтобы проверить, если переменная содержит примитивный или объект

Смежные вопросы