Valnurat Posted March 20, 2017 Posted March 20, 2017 I have a Global $aResult[0][2] For $i = 0 to UBound($aNames) -1 Local $aUserInfo = _AD_GetObjectsInOU($aNames[$i],"","","displayName,distinguishedName") _ArrayDisplay($aUserInfo) _ArrayConcatenate($aResult, $aUserInfo, 1) _ArrayDisplay($aResult, 'AD ' & UBound($aResult)) Next I do receive empty info that's added to my array. How can I delete empty records? Yours sincerely Kenneth.
water Posted March 20, 2017 Posted March 20, 2017 Loop through the array from the end to the start und use _ArrayDelete to get rid of empty cells. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
kylomas Posted March 20, 2017 Posted March 20, 2017 Valnurat, Just for grins... #include <array.au3> Local $aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']] _ArrayDisplay($aArray) For $i = UBound($aArray) - 1 To 0 Step -1 For $j = 0 To UBound($aArray, 2) - 1 If $aArray[$i][$j] <> '' Then ExitLoop Next If $j - 1 = UBound($aArray, 2) - 1 And $aArray[$i][$j - 1] = '' Then _ArrayDelete($aArray, $i) Next _ArrayDisplay($aArray) kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
water Posted March 20, 2017 Posted March 20, 2017 Exactly what I suggested above My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
kylomas Posted March 20, 2017 Posted March 20, 2017 @water - Yes, just #@$%# around...nice sunny day here in central US... Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
water Posted March 20, 2017 Posted March 20, 2017 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
iamtheky Posted March 20, 2017 Posted March 20, 2017 (edited) #include <array.au3> Local $aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']] msgbox(0 , '' , stringstripWS(StringRegExpReplace(_ArrayToString($aArray) , "\|\|+" , " ") , 4)) yall don't #@$$$%# around nearly enough Edited March 20, 2017 by iamtheky kylomas and Jfish 2 ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__)
Valnurat Posted March 21, 2017 Author Posted March 21, 2017 10 hours ago, iamtheky said: #include <array.au3> Local $aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']] msgbox(0 , '' , stringstripWS(StringRegExpReplace(_ArrayToString($aArray) , "\|\|+" , " ") , 4)) yall don't #@$$$%# around nearly enough How do I use this? How do I put this back to an array? Yours sincerely Kenneth.
Jfish Posted March 21, 2017 Posted March 21, 2017 (edited) EDIT: just answering the last question without regard to whether or not the output should be a 1D or 2D array. If you liked the output that @iamtheky created and just want it in an array then this should work it assigns the string to a variable that splits the string back into an array using carriage returns with line feeds as the delimiter. #include <array.au3> Local $aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']] $newArray=StringSplit(stringstripWS(StringRegExpReplace(_ArrayToString($aArray) , "\|\|+" , " ") , 4),@CRLF) _ArrayDisplay($newArray) Edited March 21, 2017 by Jfish iamtheky 1 Build your own poker game with AutoIt: pokerlogic.au3 | Learn To Program Using FREE Tools with AutoIt
Valnurat Posted March 21, 2017 Author Posted March 21, 2017 Ok, but this just end up in 1D array. It has to be in a 2D array. Yours sincerely Kenneth.
czardas Posted March 21, 2017 Posted March 21, 2017 (edited) I don't understand this request. Are you trying to delete empty rows in a 2D array? Deleting empty cells is impossible without also deleting rows or columns. Edited March 21, 2017 by czardas operator64 ArrayWorkshop
Gianni Posted March 21, 2017 Posted March 21, 2017 also, why don't you check for empty records before the _ArrayConcatenate() ? Chimp small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....
MilesAhead Posted March 21, 2017 Posted March 21, 2017 46 minutes ago, Chimp said: also, why don't you check for empty records before the _ArrayConcatenate() ? That would be cheating. Too easy. Gianni 1 My Freeware Page
Valnurat Posted March 22, 2017 Author Posted March 22, 2017 17 hours ago, czardas said: I don't understand this request. Are you trying to delete empty rows in a 2D array? Deleting empty cells is impossible without also deleting rows or columns. My mistake. I will ofcourse delete rows. Just my bad words of choice. 17 hours ago, Chimp said: also, why don't you check for empty records before the _ArrayConcatenate() ? And if I want to do that. How should I do that? Is there a UDF for this? Yours sincerely Kenneth.
water Posted March 22, 2017 Posted March 22, 2017 Do not use _ArrayConcatenate but loop through $aUserInfo and only write non blank rows to $aResult. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Valnurat Posted March 23, 2017 Author Posted March 23, 2017 Ok. I will do that. Thank you for all your answers. Yours sincerely Kenneth.
Gianni Posted March 23, 2017 Posted March 23, 2017 On 22/3/2017 at 8:12 AM, Valnurat said: .... And if I want to do that. How should I do that? Is there a UDF for this? .... I don't know what exactly is returned by the _AD_GetObjectsInOU() function , (emmm... sorry @water ) , expecially when there is not data returned, anyway if you have only to scan all records to see if are all empty then something like this should do (not tested): Global $aResult[0][2] Local $aUserInfo For $i = 0 To UBound($aNames) - 1 $aUserInfo = _AD_GetObjectsInOU($aNames[$i], "", "", "displayName,distinguishedName") If _IsNotEmpty($aUserInfo) Then ; there is data in the record? ; _ArrayDisplay($aUserInfo) _ArrayConcatenate($aResult, $aUserInfo, 1) EndIf Next _ArrayDisplay($aResult, 'AD ' & UBound($aResult)) Func _IsNotEmpty(ByRef $aData) ; returns True if record contains data otherwise returns False Local $iSum = 0 For $x = 1 To UBound($aData) - 1 $iSum += $aData[$x] <> "" ; count not empty fields Next Return $iSum > 0 ; returns true if record is not empty EndFunc ;==>_IsNotEmpty Chimp small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....
water Posted March 23, 2017 Posted March 23, 2017 Or you could modify the LDAP query so it only returns records where displayname<>"" kylomas and Gianni 2 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
AdamUL Posted March 23, 2017 Posted March 23, 2017 Here is the _AD_GetObjectsInOU with the proper LDAP query that should get you what you need. As mentioned by water. This query only finds user accounts, and not computer accounts. $aUserInfo = _AD_GetObjectsInOU($aNames[$i], "(&(objectCategory=Person)(objectclass=user)(displayName=*))", "", "displayName,distinguishedName") Here is some info on using LDAP Queries. Adam Gianni 1
Valnurat Posted March 24, 2017 Author Posted March 24, 2017 Ok. I will try a different approach. $aUserInfo = _AD_GetObjectsInOU("OU=company,DC=ad,DC=company,DC=org", "(&(objectCategory=Person)(objectclass=user)(sAMAccountName=" & $aNames[$i] & "*))", "", "displayName,distinguishedName") But the result of this ends up with users that I'm not interested in. I would like to avoid where "TransferZone" is exists in distinguishedName. Is it possble to add an extra filter? Yours sincerely Kenneth.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now