cdjphoenix

Combining Arrays

10 posts in this topic

I'm hoping someone here can shed some light on a problem I've been having combining some arrays. I've searched the forum and found some posts but I'm still having troubles

My goal is to have an array that I can display with 3 seperate columns, I'd actually be happy with anyway to get 3 arrays on a table. I have a MySQL server that I am pulling 3 different fields from "firstname", "lastname" and "phone" and I can pull the data without any problems, it's just combining them.

Here is what I have currently code wise. It's not very pretty but it works...

#include "mysql.au3"
#include "array.au3"

$sql = _MySQLConnect('username','password','table','TestSystem')
$row = _Query($sql, "SELECT * FROM fax")
Global $aArray
Global $sFill
Global $aArray_Base [1] [3]
$aArray = $aArray_Base

Global $aArray2
Global $sFill2
Global $aArray_Base2 [1] [3]
$aArray2 = $aArray_Base2

Global $aArray3
Global $sFill3
Global $aArray_Base3 [1] [3]
$aArray3 = $aArray_Base3

with $row
While NOT .EOF

   Global $FirstName = .Fields("firstname").value
   Global $LastName = .Fields("lastname").value
   Global $FaxNumber = .Fields("faxnumber").value
   $sFill = $FirstName
   $sFill2 = $LastName
   $sFill3 = $FaxNumber
   _ArrayAdd($aArray, $sFill)
   _ArrayAdd($aArray2, $sFill2)
   _ArrayAdd($aArray3, $sFill3)
   .MoveNext


   ;MsgBox(0,"TEST",$FirstName &" " & $LastName & " " & $FaxNumber)
WEnd

EndWith

_ArrayDisplay($aArray, "Test Array")
_ArrayDisplay($aArray2, "Test Array")
_MySQLEnd($sql)

Thank you for taking the time to look at my code/problem.

Share this post


Link to post
Share on other sites

why not just add them to the same array?  the third parameter of arrayadd is column so something like:

_ArrayAdd($aArray, $sFill)
   _ArrayAdd($aArray, $sFill2, 1)
   _ArrayAdd($aArray, $sFill3 , 2)

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

There were all in the same array at one point but I've been trying everything I can think of in order to get this to show the way i want.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

My goal is to have an array that I can display with 3 seperate columns

 

 

i dont understand how placing this data into a single array with three columns, via arrayadd, does not meet the above requirement.  Is there something else you want of this 3 columned array?

Edited by boththose

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

You need to add some kind of error checking to your script. Every function sets the return value or macro @error when something went wrong. Check for errors before proceeding to the next statement.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Can you not use your "Select" statement to get whatever you want, in whatever order you want?

Select firstname, lastname, faxnumber from fax









edit: spelling / comment deleted

Edited by 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

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

 

Really?

Is your version of AutoIt from the future?

I get all kinds of errors, not least from this...

While NOT .EOF

It must be, I have no doubt there are errors but the reason i say it works is that when i run it I see my data in a table...all in one column, but it's still a table.

Right now in order to update certain user info I have to go to two serperate spots to update it and I find this annoying. What I'm trying to do is get this data into a MySQL database and use autoit to update this database along with Active Directory. Thanks for the input though, I see if i can add in some error checking.

*Edit here is my original code before i went crazy and started trying wierd things to get those coulmns.

#include "mysql.au3"
#include "array.au3"

$sql = _MySQLConnect('user','password','test','TestSystem')
$row = _Query($sql, "SELECT * FROM fax")
Global $aArray,$aArray2
Global $sFill, $sFill2
Global $aArray_Base [1] [3]
$aArray = $aArray_Base
with $row
While NOT .EOF

   Global $FirstName = .Fields("firstname").value
   Global $LastName = .Fields("lastname").value
   Global $FaxNumber = .Fields("faxnumber").value
   $sFill =$FirstName
   $sFill2 =$LastName
   $sFill3 =$FaxNumber
   _ArrayAdd($aArray, $sFill)
   _ArrayAdd($aArray, $sFill2, 1)
   _ArrayAdd($aArray, $sFill3, 2)
   .MoveNext
   ;MsgBox(0,"TEST",$FirstName)
WEnd
EndWith

_ArrayDisplay($aArray, "Test Array")

_MySQLEnd($sql)
Edited by cdjphoenix

Share this post


Link to post
Share on other sites

 

why not just add them to the same array?  the third parameter of arrayadd is column so something like:

_ArrayAdd($aArray, $sFill)
   _ArrayAdd($aArray, $sFill2, 1)
   _ArrayAdd($aArray, $sFill3 , 2)

I knew it would be something simple, this gets the correct data into the correct spots....for the most part. whatever reason each piece of data is in the correct column but it's one piece per row.

Share this post


Link to post
Share on other sites

I Figured out how to do what I was looking to do. Here is the code just in case someone else comes searching for something similar:

#include "mysql.au3"
#include "array.au3"

$sql = _MySQLConnect('user','password','table','SQLSystem')
$row = _Query($sql, "SELECT * FROM fax")
Global $aArray,$aArray2
Global $sFill, $sFill2
Global $aArray_Base [1] [3]
$aArray = $aArray_Base
with $row
While NOT .EOF


   Global $FirstName = .Fields("firstname").value
   Global $LastName = .Fields("lastname").value
   Global $FaxNumber = .Fields("faxnumber").value

   Local $sFill[2] [3] = [[$FirstName, $LastName,$FaxNumber]]
   _ArrayAdd($aArray, $sFill)
   .MoveNext

WEnd
EndWith


_ArrayDisplay($aArray, "Test Array")


_MySQLEnd($sql)

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

    • Ascer
      By Ascer
      1. Description.
      Udf working with MSDN System.Collections.ArrayList. Allow you to make fast operations on huge arrays, speed is even x10 better than basic _ArrayAdd.  Not prefered for small arrays < 600 items. 2. Requirements
      .NET Framework 1.1+ System Windows 3. Possibilities.
      ;=============================================================================================================== ; UDF Name: List.au3 ; ; Date: 2018-02-17, 10:52 ; Description: Simple udf to create System Collections as ArrayList and make multiple actions on them. ; ; Function(s): _ListCreate -> Creates a new list ; _ListCapacity -> Gets a list size in bytes ; _ListCount -> Gets items count in list ; _ListIsFixedSize -> Get bool if list if fixed size ; _ListIsReadOnly -> Get bool if list is read only ; _ListIsSynchronized -> Get bool if list is synchronized ; _ListGetItem -> Get item on index ; _ListSetItem -> Set item on index ; ; _ListAdd -> Add item at end of list ; _ListClear -> Remove all list items ; _ListClone -> Duplicate list in new var ; _ListContains -> Get bool if item is in list ; _ListGetHashCode -> Get hash code for list ; _ListGetRange -> Get list with items between indexs ; _ListIndexOf -> Get index of item ; _ListInsert -> Insert a new item on index ; _ListInsertRange -> Insert list into list on index ; _ListLastIndexOf -> Get index last of item ; _ListRemove -> Remove first found item ; _ListRemoveAt -> Remove item in index ; _ListRemoveRange -> Remove items between indexs ; _ListReverse -> Reverse all items in list ; _ListSetRange -> Set new value for items in range ; _ListSort -> Sort items in list (speed of reading) ; _ListToString -> Get list object name ; _ListTrimToSize -> Remove unused space in list ; ; Author(s): Ascer ;=============================================================================================================== 4. Downloads
      List.au3 5. Examples
      SpeedTest _ArrayAdd vs ListAdd SpeedTest ArraySearch vs ListIndexOf Basic usage - crating guild with members  
    • FMS
      By FMS
      Hello,
      I'm trying to read a binary file to an array but couln't get it to work.
      Also I coul not find any help in the forum around this subject whish was helpfull.
      Is there any way it could be done?
      I tried a lot of ways but maybe somebody know's the right way?
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include <File.au3> #include <Array.au3> #include <AutoItConstants.au3> Local $in=FileOpen("TEST_labels.idx1-ubyte",16) ; 16+0=Read binary Local $data = FileRead($in) Local $FileArray = BinaryToString($data,4) ;~ $FileArray = StringSplit($BinarydData, @CRLF, 1+2) ;~ Local $FileArray = StringRegExp($BinarydData, "[^\r\n]+", 3) FileClose($in) _ArrayDisplay($FileArray,"$FileArray","",32) MsgBox($MB_SYSTEMMODAL, "", "$FileArray = " & $FileArray )  
      TEST_labels.idx1-ubyte
    • TheWizEd
      By TheWizEd
      How do I work with 2D arrays.  I've tried this but get errors.
      Local $aTest[4][4] = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
      ;$aTest[0][] = [10,11,12]  ; Error at []
      Local $sTest = ""
      For $i = 0 To UBound($aTest)-1
        Local $aExtract = _ArrayExtract($aTest,$i,$i)
        $sTest = $sTest & MyTest($aExtract)
      Next
      Func MyTest($aTemp)
        _ArrayDisplay($aTemp)
        ; Error at    v $aTemp
        Return String($aTemp[0]) & " - " & String($aTemp[1]) & " - " & String($aTemp[2]) & @CRLF
      EndFunc
       
       
    • ur
      By ur
      I am reading a CSV file which is tab seperated as below.
      Local $aArray = FileReadToArray($file) And now, I am splitting this main array record wise so that Array contains internally another arrow to represent each row.
      For $i = 0 to (UBound($aArray) - 1) ;MsgBox(0,"",$aArray[$i]) $aArray[$i] = StringSplit(StringStripCR($aArray[$i]), Chr(9),2);Chr(9) for tab ;_ArrayDisplay($aArray[$i]) Next Afther that, _ArrayDIsplay is able to see the individual internal arrays.
      _ArrayDisplay($aArray[1]) But If I try to access the individual element of it as below.It is not showing any result.
      MsgBox(0,"",$aArray[1][1]) Any suggestion, below is the sample csv file.
      New Text Document.csv
    • argumentum
      By argumentum
      ..let's say I store in a mysql column "[1,2,11,12,123]".
      How can I make s query to get all those rows that is 1, or is 12, etc ?
      I'm using  mysqlnd 5.0.11-dev - 20120503 
      Any advise on what technique I should use is welcomed
      Thanks
      PS: ..I'm adding a comma to each end, as in  [,1,2,11,12,123,] and will search with like %,12,% .
      Not pretty but I'm in a hurry and can't come up with a better solution =/