Jump to content
Valnurat

Return of error code to my exe file.

Recommended Posts

Valnurat

Is there any change that I can return a code for success or not success in my script?

I have a script that look in a SQL db and write to the registry.

I want to return some kind of a control, because I will call my script *.exe from VBScript.

_Main()

Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
EndFunc

 


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
benners

If you want to return a code from your AutoIt exe to the VB script you can set the exit value to what you want by using the exit function and setting the return code parameter

Exit (1)

 

Share this post


Link to post
Share on other sites
Valnurat

So I just do this:

_Main()

Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
    Exit(1)
EndFunc

 


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water
1 hour ago, Valnurat said:

Is there any change that I can return a code for success or not success in my script?

To achieve this you would first need to decide if the function worked or didn't. Best way is to check every _ADO* function for an error code.
You now only check once (after _ADO_Connection_OpenConString). Do it after every call.

I would drop "Exit(1)" as this always ends your script. End the script in the main function.

_Main()
If @error Then Exit MsgBox(0, "Error", "Script ended with @error = " & @error)
; More code to execute
Exit

Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    If @error Then Return SetError(@error, @extended, $ADO_RET_FAILURE)
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
EndFunc

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

Ok, but how can I receive the status code if I call the exe file from VBScript?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water

Then you need Exit.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

Like this:

_Main()
Exit(1)

Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
EndFunc

 

Edited by Valnurat

Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water

Would the calling VBS need to know if there was an error in your AutoIt script?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

Yes, because I would like to create a txtfile with controlinfo if it fails.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water

Then you need to use something like this and return different values.
On success the return value is set to 0, else it holds the error code returned by any of the _ADO* functions.

_Main()
Exit(0)

Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then Exit(@error)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    If @error Then Exit(@error)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    If @error Then Exit(@error)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    If @error Then Exit(@error)
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
EndFunc

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

It does return 0 as  you said, even thogh if $aRecordset_inner[0][0] is empty. :)

I would like to return a exitcode if $aRecordset_inner[0][0] is empty.

How can I do that?

EDIT: In my VBScript I check the registry and if it's empty I will run my exefile. Right now my exefile just return 0 no matter if $aRecordset_inner[0][0] is empty or not. I don't want to check the registry 2 times in my VBScript before creating a txtfile with controlinfo.

Edited by Valnurat

Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water
31 minutes ago, Valnurat said:

I would like to return a exitcode if $aRecordset_inner[0][0] is empty.

You already did half of the coding ;)

If $aRecordset_inner[0][0] = "" Then Exit(99) ; Or whatever return value you like

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

Aha. Very simpel. :>

Thank you.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water

:)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Valnurat

Sorry, for returning to this ticket, but I don't understand why my VBScript is returning errrorcode 0, when I can see my AutoIT errorcode is 99.

; SetUP internal ADO.au3 UDF COMError Handler
_ADO_ComErrorHandler_UserFunction(_ADO_COMErrorHandler)

_Main()
Exit(0)


Func _Main()
    Local $sConnectionString = 'DRIVER={' & $sDriver & '};SERVER=' & $sServer & ';DATABASE=' & $sDatabase & ';UID=' & $sUser & ';PWD=' & $sPassword & ';', $sQUERY, $oRecordset, $aRecordsetArray, $aRecordset_inner
    Local $oConnection = _ADO_Connection_Create()
    _ADO_Connection_OpenConString($oConnection, $sConnectionString)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $sQUERY = "Select Shipdate from " & $sTableName & " where ComputerName = '" & @ComputerName & "'"
    $oRecordset = _ADO_Execute($oConnection, $sQUERY)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordsetArray = _ADO_Recordset_ToArray($oRecordset, False)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    $aRecordset_inner = _ADO_RecordsetArray_GetContent($aRecordsetArray)
    If @error Then SetError(@error, @extended, $ADO_RET_FAILURE)
    if IsArray($aRecordset_inner) Then
        If $aRecordset_inner[0][0] = '' or $aRecordset_inner[0][0] = Null Then Exit(99)
        RegWrite("HKEY_CURRENT_USER\SOFTWARE\ComputerInfo", "Shipdate", "REG_SZ", $aRecordset_inner[0][0])
    Else
        Exit(99)
    EndIf
EndFunc

Capture.JPG

My VBScript is this:

Sub RegComputerInfo
 	Const HKEY_CURRENT_USER = &H80000001
	Dim lstrKeyPath, lstrValueName, lstrValue, outFile, objFile, oExec
	lstrKeyPath = "SOFTWARE\ComputerInfo\"
	lstrValueName = "Shipdate"
	if ADHelper.IsCurrentUserMember("AllUsers") and (ADHelper.strComputerType <> "Server") then
		objReg.GetStringValue HKEY_CURRENT_USER,lstrKeyPath,lstrValueName,lstrValue
		if IsNull(lstrValue) then
			set oExec = WSHShell.exec(strScriptPath & "\Support\Script\ComInventory\GetShipdate.exe") ' Read a SQL DB
			msgbox "Test1 " & oExec.ExitCode		
			if oExec.ExitCode <> 0 then
				outFile = "\\servername\install\Log\ComputerInfo\" & WSHNetwork.ComputerName & ".txt"
				Set objFile = objFSO.CreateTextFile(outFile,True)
				objFile.Write strUsername & "|" & strModel & "|" & ServiceTag
				objFile.Close
			else
				msgbox "Test " & oExec.ExitCode		
			End if	
		End If	
	End if
End Sub 'FindShipDate

 


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
Valnurat

If I put this in my VBScript I do get my errorcode = 99

My VBScript is this:

Sub RegComputerInfo
 	Const HKEY_CURRENT_USER = &H80000001
	Dim lstrKeyPath, lstrValueName, lstrValue, outFile, objFile, oExec
	lstrKeyPath = "SOFTWARE\ComputerInfo\"
	lstrValueName = "Shipdate"
	if ADHelper.IsCurrentUserMember("AllUsers") and (ADHelper.strComputerType <> "Server") then
		objReg.GetStringValue HKEY_CURRENT_USER,lstrKeyPath,lstrValueName,lstrValue
		if IsNull(lstrValue) then
			set oExec = WSHShell.exec(strScriptPath & "\Support\Script\ComInventory\GetShipdate.exe") ' Read a SQL DB
			Do While oExec.Status = 0			<-----
     			WScript.Sleep 100				<-----
			Loop						<-----
			WScript.Echo oExec.Statusmsgbox "Test1 " & oExec.ExitCode		
			if oExec.ExitCode <> 0 then
				outFile = "\\servername\install\Log\ComputerInfo\" & WSHNetwork.ComputerName & ".txt"
				Set objFile = objFSO.CreateTextFile(outFile,True)
				objFile.Write strUsername & "|" & strModel & "|" & ServiceTag
				objFile.Close
			else
				msgbox "Test " & oExec.ExitCode		
			End if	
		End If	
	End if
End Sub 'FindShipDate

But should I really do that?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
Valnurat

Sorry, if I step on some toes here, but is there someone who could help me?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
Juvigy

Why do you need a VBS? Do everything with Autoit. It will be simpler and the problem with return codes will be gone!

Share this post


Link to post
Share on other sites
Valnurat

True, but as you can see in my VBS I create a txtfile on a server, if the exitcode is not 0.

In the future that server might not exists anymore and then I have to modify my autoit to the new server.

I would like to avoid to modify my autoit code.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites
water

Store the variable information (server address etc.) in an INI-file. So you can easily move to another server and only need to modify the config INI file.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • 2Toes
      By 2Toes
      Hi all..
      I'm having slight issue that has be a bit puzzled.
      I have an Input control.. After a certain function runs, it Disables that Input control, and sets it to ReadOnly.
      When running another certain function, it re-Enables that Input control, and sets the style back to Default.
      Which does work, however, when typing into the Input control after re-Enabling it, the text appears as a light gray color, rather than its original black color.
      I'm sure there's a simple solution here.. But what that is, appears to be beyond me.
      Here is a simplified example code:
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 245, 215, 192, 124) Global $disableBTN = GUICtrlCreateButton("Disable", 32, 64, 75, 25) Global $enableBTN = GUICtrlCreateButton("Enable", 128, 64, 75, 25) Global $Input1 = GUICtrlCreateInput("", 32, 120, 169, 21) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $disableBTN disable() Case $enableBTN enable() EndSwitch WEnd Func disable() GUICtrlSetState($Input1, $GUI_DISABLE) GUICtrlSetStyle($Input1, $ES_READONLY) EndFunc Func enable() GUICtrlSetState($Input1, $GUI_ENABLE) GUICtrlSetStyle($Input1, $GUI_SS_DEFAULT_INPUT) EndFunc  
      Any help would be greatly appreciated
      Thank you in advance!
    • jantograaf
      By jantograaf
      Hi all,
      I'm trying to create a script that runs a JSON-query and then can retrieve some variables out of the returned, decoded object using JSON.au3. I have tried some other examples on this forum, but I'm stuck at one point. My query works perfectly and gets loaded into the variable $data. Then, decoding $data to $object seems to work as well. But then I can't get the date-field out of this JSON-structure with my script.
      The JSON-structure returned looks like this:
      { "content": [ { "id": "451ec583-8f27-4926-82a3-a2d85e57a110", "createdDate": "2018-08-08T08:40:57.449004Z", "updatedDate": "2018-08-08T08:40:57.449004Z", "lastOpenedDate": "2018-08-08T08:40:57.449004Z", "date": "2018-04-26T00:00:00", "description": "X-Ray Exam", "patient": { "id": "f857238a-c75d-4760-b8d1-8f50f8f9bbfa", "createdDate": "2018-08-08T08:40:37.623976Z", "updatedDate": "2018-08-08T08:40:37.623976Z", "lastOpenedDate": "2018-08-08T08:40:37.623976Z", "name": "Fuerstonia", "birthDate": "2014-06-08", "breed": "", "chip": "", "color": "", "damsire": "", "sire": "", "neutered": false, "orthancUuid": "", "sex": "U", "species": "Paard", "ueln": "De 431310762114", "pmsReference": "", "origin": "" }, "type": "study", "accessionNumber": "KME201806960467", "instanceUid": null, "orthancUuid": "", "sent": false, "seriesCount": 0, "modalityType": "RX", "typeAndModality": "study RX", "client": { "id": "be627195-8458-4927-8446-f1ef37b917a4", "createdDate": "2018-08-08T08:40:31.433968Z", "updatedDate": "2018-08-08T08:40:31.433968Z", "lastOpenedDate": "2018-08-08T09:26:49.512298Z", "via": "", "extraInfo": "", "pmsReference": "", "contact": { "id": "406cc555-c491-4c29-b6bb-8d903f0e35a9", "createdDate": "2018-08-08T08:40:31.428968Z", "updatedDate": "2018-08-08T08:40:31.428968Z", "lastName": "Client 1", "firstName": "", "company": "", "email": "", "language": "nl", "phone": "", "address": { "id": "6fc7703c-137a-4e0a-ba96-8c7f38f2044b", "city": "", "country": "", "line": "", "postalCode": "" } } } }, My script looks like this:
      #RequireAdmin #include <json.au3> #include <inet.au3> #include <File.au3> ;Create a handle to a logfile (will be created if it doesnt exist) Global $logfile = FileOpen("C:\VSOL\VSTK\Logs\MigrationFix\MigrationFix.log",9) FileWriteLine($logfile,"Start script") ;Create the URL with the JSON-query $URL = "http://localhost:8080/v0/studies/?seriesCount=1" ;Catch the query output into a variable $data = _INetGetSource($URL) ;Check if there is any data at all in this variable, if not, exit If Not $data Then MsgBox(1,"Error","No answer. Server is probably not running.") Exit EndIf ;For debugging purposes FileWriteLine($logfile,$data) ;Decode the JSON_string into a useable object $object = Json_Decode($data,1000) If @error Then FileWriteLine($logfile,"Error decoding JSON") Exit EndIf Local $i = 0 ;Start a loop to retrieve the study date of each study... While 1 $study_date = json_get($object,'[' & $i & '].date') If @error Then FileWriteLine($logfile,"Study-Date retrieval error") ExitLoop EndIf $i = $i + 1 WEnd ;Close the logfile FileWriteLine($logfile,"Stop script") FileClose($logfile) ;Open the logfile for quick reference ShellExecute("C:\VSOL\VSTK\Logs\MigrationFix\MigrationFix.log") If believe it has something to do with my json_get($object...)-command. Anyone who can point me in the right direction?
      Thanks in advance!
      Kind regards
    • gahhon
      By gahhon
      Hi Guys,
      I was trying to read some data from the excel file and without opening the file. But I tried a lot of methods, it still open the file.
      And also, I am able to capture the ColumnA value but not Column B.
      Thanks for advance information.
      Global $oDataA, $oDataB Call ("ExcelRead", "B2", "C2") Func ExcelRead($oColumnA, $oColumnB) Local $oPath = @ScriptDir & "\MyFile.xlsx" Local $oExcel = _Excel_Open() Local $oWorkbook = _Excel_BookOpen($oExcel, $oPath, 1, 0) $oDataA = _Excel_RangeRead($oWorkbook, "Sheet 1", $oColumnA) $oDataB = _Excel_RangeRead($oWorkbook, "Sheet 1", $oColumnB) MsgBox(0, "Test Value", $oDataA & ", " & $oDataB) EndFunc  
    • SharpDressedMan
      By SharpDressedMan
      I have an array of subarrays, eg:
      local $a[3] = [ 1, 2, 3 ] local $b[3] = [ 4, 5, 6 ] local $c[2] = [ $a, $b ] I can read read a subarray element of the array, as follows:
      local $c12 = ($c[1])[2] ; result: $c12 = 6 However, when I try to set a subarray element as follows, it fails:
      ($c[1])[2] = 12 ; this fails to set subarray element local $c12 = ($c[1])[2] ; result: $c12 = 6 How to set a subarray element ?
      Thanks
    • nooneclose
      By nooneclose
      Good morning everyone, I thought I had already solved this issue but it turns out I did not. 
      My code finds unread emails with this specific subject line of "request" but when I change the subject to SKIPPED + "request" = ("SKIPPED request") the program still finds the email and tries to process it. I only want to process emails with the exact match subject of "request".
      Here is my code that "finds" the unread emails with the subject of "request" or so I thought. 
      Func ListUnreadEmails() ;******************************************************************************* ; Lists all unread E-mails from the folder Outlook-UDF-Test ;******************************************************************************* ; Stores all the unRead emails into an array Global $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, _ "[UnRead]=True", "Subject", "request", "EntryID,Subject", "", 1) ; Displays the array of unRead emails If IsArray($aItems) Then ;_ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", _ "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf ; Gets the number of unread emails Global $numberOfUnRead = UBound($aItems, $UBOUND_ROWS) - 1 ;MsgBox("", "Number of Unread emails", $numberOfUnRead) EndFunc It acts as if any part of the subject containing the word "request" and the email is unread that it will try to process it. (I think)
×