Input delay by using Smart Strings

I have noticed a slight time input delay by using the "Smart Strings". The finger inputs are not in sync with what I hear. I haven't noticed a similar behavior by using "Grand Piano" for example. Is there a reason for doing so?

I have noticed a slight time input delay by using the "Smart Strings". The finger inputs are not in sync with what I hear. I haven't noticed a similar behavior by using "Grand Piano" for example. Is there a reason for doing so?

Similar Messages

  • Garageband Smart Strings Export

    Hi,
    I am trying to export a song from garageband, I am using "Smart Strings" on a track with a certain modulation (screen keyboard setting 6) on one track. Unfortunately when I export it, it changes the modulation back to "Off". How do I keep the modulation and export the song?
    Thanks

    I just wrote a column on the Logic-Pro-Expert website about the Smart Strings. Check it out:
    http://logic-pro-expert.com/logic-pro-blog/2014/05/05/smart-strings-who-needs-a- stradivarius-when-you-have-an-ipad.html
    Hope that helps
    Edgar Rothermich
    http://DingDingMusic.com/Manuals/
    'I may receive some form of compensation, financial or otherwise, from my recommendation or link.'

  • Setting input fields to an empty string BIG PROBLEM

    Hi Rob, thanks for your rerply, It makes sense alright, but I am using 2 seperate input fields. I have discovered what is causing the problem .
    After the user types into the inputfield and moves on to a different frame, I have set the input field to an empty string and this is what is causing the problem.
    I have tried setting the input field to an empty string in a movie script and on individual sprites and the first right answer is not excepted.I have to type in the right answer twice to get get a right response. I am actually using three seperate input fields in total, each with a different name and behavior. Even If I use one input field I still have the same problem. Its driving me crazey. Any Ideas.
    Anne

    I believe that the FIM Service always does trims on string, so you may be out of luck.
    What is your scenario / what are you trying to accomplish by setting a space in an attribute? A space is not an empty string in my definition.
    Regards, Soren Granfeldt
    blog is at http://blog.goverco.com | facebook https://www.facebook.com/TheIdentityManagementExplorer | twitter at https://twitter.com/#!/MrGranfeldt

  • Reading & writing to file using ArrayList String incorrectly (2)

    I have been able to store two strings (M44110|T33010, M92603|T10350) using ArrayList<String>, which represent the result of some patient tests. Nevertheless, the order of these results have been stored correctly.
    E.g. currently stored in file Snomed-Codes as -
    [M44110|T33010, M92603|T10350][M44110|T33010, M92603|T10350]
    Should be stored and printed out as -
    M44110|T33010
    M92603|T10350
    Below is the detail of the source code of this program:
    import java.io.*;
    import java.io.IOException;
    import java.lang.String;
    import java.util.regex.*;
    import java.util.ArrayList;
    public class FindSnomedCode {
        static ArrayList<String> allRecords = new ArrayList<String>();
        static public ArrayList<String> getContents(File existingFile) {
            StringBuffer contents = new StringBuffer();
            BufferedReader input = null;
            int line_number = 0;
            int number_of_records = 0;
            String snomedCodes = null;
            ArrayList<String> complete_records = new ArrayList<String>();
            try {
                input = new BufferedReader( new FileReader(existingFile) );
                String current_line = null;
                while (( current_line = input.readLine()) != null) {
                    // Create a pattern to match for the "\"
                    Pattern p = Pattern.compile("\\\\");
                    // Create a matcher with an input string
                    Matcher m = p.matcher(current_line);
                    boolean beginning_of_record = m.find();
                    if (beginning_of_record) {
                        line_number = 0;
                        number_of_records++;
                    } else {
                        line_number++;
                    if ( (line_number == 2) && (current_line.length() != 0) ) {
                        snomedCodes = current_line;
                        System.out.println(snomedCodes);
                        complete_records.add(current_line);
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            catch (IOException ex){
                ex.printStackTrace();
            finally {
                try {
                    if (input!= null) {
                        input.close();
                catch (IOException ex) {
                    ex.printStackTrace();
            return complete_records;
        static public void setContents(File reformatFile, ArrayList<String> snomedCodes)
                                     throws FileNotFoundException, IOException {
           Writer output = null;
            try {
                output = new BufferedWriter( new FileWriter(reformatFile) );
                  for (String index : snomedCodes) {
                      output.write( snomedCodes.toString() );
            finally {
                if (output != null) output.close();
        static public void printContents(File existingFile) {
            StringBuffer contents = new StringBuffer();
            BufferedReader input = null;
            int line_number = 0;
            int number_of_records = 0;
            String snomedCodes = null;
            try {
                input = new BufferedReader( new FileReader(existingFile) );
                String current_line = null;
                while (( current_line = input.readLine()) != null)
                    System.out.println(current_line);
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            catch (IOException ex){
                ex.printStackTrace();
            finally {
                try {
                    if (input!= null) {
                        input.close();
                catch (IOException ex) {
                    ex.printStackTrace();
        public static void main (String args[]) throws IOException {
            File currentFile = new File("D:\\dummy_patient.txt");
            allRecords = getContents(currentFile);
            File snomedFile = new File( "D:\\Snomed-Codes.txt");
            setContents(snomedFile, allRecords);
            printContents(snomedFile);
    }There are 4 patient records in the dummy_patient.txt file but only the 1st (M44110|T33010) & 3rd (M92603|T10350) records have results in them. The 2nd & 4th records have blank results.
    Lastly, could someone explain to me the difference between java.util.List & java.util.ArrayList?
    I am running Netbeans 5.0, jdk1.5.0_09 on Windows XP, SP2.
    Many thanks,
    Netbeans Fan.

    while (snomedCodes.iterator().hasNext())
      output.write( snomedCodes.toString() );
    }Here you have some kind of a list or something (I couldn't stand to read all that unformatted code but I suppose you can find out). It has an iterator which gives you the entries of the list one at a time. You keep asking if it has more entries -- which it does -- but you never get those entries by calling the next() method, so it always has all the entries still available.
    And your code inside the loop is independent of the iterator, so it's rather pointless to iterate over the entries and output exactly the same data for each entry. Even if you were iterating correctly.

  • How to print different  header & item data in new pages using smart forms.

    Hi,
    In smart forms I am trying to print header data & their item data. But there are more than one header data for a given input.
    I want to print all the different header data with their item data in new pages using smart forms. Can any one please help to solve the issue.. Its very urgent for me..
    Regards,
    Brajesh

    Hi
    U need to use control break statements to acheive ur requirement.
    Regards,
    Priya

  • Smart Strings "More..." menu not working for me

    iPhone 4
    iOS 6
    Newest GarageBand
    I manually type in a Smart Strings part. Wanting to change a note to pizzicato, I tap it and then tap "More..." as I have in previous versions. Instead of giving options for pizzicato, instrument change, etc. like it used to, the whole menu just disappears and I'm left looking at the MIDI roll again. I've played old songs that I made in previous versions of GarageBand and they play the notes pizzicato but the same thing occurs with the "More..." menu when I tap a note.
    I've submitted a bug report, does anybody here have any ideas what's causing this or how I might fix it? If you can't tell, I like to use pizzicato a lot.
    Thanks for any help.

    you can download the help files here:  http://helpx.adobe.com/pdf/flash_reference.pdf
    the context sensitive help on windows that works, works with the online help.
    i don't have my mac flash cc activated this weekend so i can't test there.

  • HFR Reports imported into ppt using smart view

    Hi All,
    Hyperion financial reporting version:11.1.2.334
    ORACLE smart view version for office :11.1.2.5.210(Build 042)
    Microsoft power point version 2007
    Hyperion financial reporting  reports imported into Microsoft power point presentation  using smart view, total 55 HFR reports are imported into power point presentation.
    The  entire ppt file with 60 slides ,55 reports+5 textual commentary slides ,total size of the pptx file is 21 mb,
    We have tried using the compress picture option available in power point, reducing the file size to 3.5 MB after compression(96 ppi ,see attached image),but image quality is lost, numbers in some images not readable at all.
    Also tried the compression options with 220ppi,150ppi,but not seen any change in the file size reduction.
    We are looking at reducing the size of ppt file as 20 mb file is difficult to transfer by email or to download, is there any workaround or other best solutions to reduce the size of an image ,we are ok to lose the quality of an image if the numbers and labels are readable.
    Thanks in advance for your valuable suggestion.
    Regards,
    Ashok

    Hi Joshi,
    Thanks a lot for your valuable time and inputs,i have tried with winzip and as well 7 zip,but not reduced the size.
    if i see my users existing ppt file size is 4 mb (60 slides),but these reports designed in excel sheet (not in HFR) and then copied to  PPT.
    Tabular reports copied from excel to ppt as windows metafile and graphs and charts are as image file.
    is there any possibility to change the image format before or after importing the HFR report into ppt using any SDK in smart view?
    thanks in advance for your valuable inputs,it will be a great help.
    Regards,
    Ashok

  • Use query string between two custom New Form

    Hi guys,
    i have a New Form . In this  form i have  a button that open(onClick) another list form (it is a  different list). I have to pass a field value from the first form to the other . How can i do this using query string?Help please!
    Thank you!

    To pass some value with query string, you just need to open the form url with the querystring parameters (jquery needed):
    var url = '<yourlist>/newform.aspx?parameter1=' + $('input[Title="Title"]').val()
    SP.UI.ModalDialog.ShowPopupDialog(url)
    on the second newform.aspx, you can grab the querystring parameters with the Sharepoint native function "_spGetQueryParam('<lower case query key>')"
    var x = _spGetQueryParam("parameter1")
    Note: make sure you use the key as lowercase, even you if pass it with chars in uppercase.

  • Keyboard input delay Flex/AIR

    I've build an AIR desktop app that uses an USB barcode scanner. To capture the token provided by the barcode scanner an input field is used.
    When testing the barcode input was only partially captured by the scanner. This was caused by the barcode scanner's input coming in the fast. Increasing the key stroke delay of the barcode scanner (config tool from motorola) solved the problem however this is not ideal.
    Does anyone has experience with this type of problems? What is an approach to solve this? Maybe by writing an Java compagnion app that captures the keyboard input?

    I just ran into this same problem. Our users are scanning barcodes from various labels using various types of scanners (changing the delay using scanner software wasn't an option). We also have to allow them to scan to a TextInput within a DataGrid, which created even more problems. There were 2 very interesting things I learned in coming up with a solution for this one:
    1. As mentioned previously, the scanner inputs the data so quickly that the enter key event is often processed before the change event for the text. I tried several solutions (like trying to force the change event before the enter key is processed), but learned that the best solution was just to add the delay as mentioned in previous posts.
    2. When adding to a DataGrid control, I learned that both the DataGrid's & the TextInput's key down events are fired by the same SystemManager event. Though you can override the TextInput's keyDownHandler, you can't override the DataGrid's because it's a private method. So, even though my delay was being processed in the TextInput, the DataGrid was forcing control away from it and moving to the next item in the grid. To get around this one, I had to stop propagation of the event from the TextInput, then re-start the DataGrid's event once the delay was complete. I also had to process a focus-out event to get it to move to the next item in the DataGrid.
    Here's the code I used inside a custom TextInput control to handle processing both stand-alone and inside a DataGrid:
    override protected function keyDownHandler(event:KeyboardEvent):void
          // If the enter key was pressed, then we need to add a delay.
          // Barcode scanners quite often process the enter key before the TextInput
          // control has time to finish processing all the text. (e.g., Instead of
          // getting 12345 as a text entry, you could get 123 or 1234.)
          if (event.charCode == Keyboard.ENTER)
               // If this is the first time we've processed the enter key, we need to
               // add the delay.
               if (_keyboardEvent == null)
               _keyboardEvent = new KeyboardEvent(event.type, event.bubbles,
               event.cancelable, event.charCode, event.keyCode, event.keyLocation,
               event.ctrlKey, event.altKey, event.shiftKey);
               event.stopImmediatePropagation();
               barcodeTimer(_keyboardEvent);
                          return;
               // If the enter key is pressed while we are still in the delay, ignore
               // it.
               else if (_keyboardEvent != null && _keyboardEvent != event)
                         return;
               // If the delay is complete, then we need to restart events related to
               // the enter key so the control is handled properly.
               else
                    super.keyDownHandler(event);
                    // If the TextInput is inside a DataGrid, then we need to dispatch the
                    // DataGrid's key down event. We also need to make sure the proper
                    // focus change happens (since this was stopped in the original event
                    // propagation).
                    if (parent != null && parent.parent != null &&
               parent.parent is mx.controls.DataGrid)
               parent.parent.dispatchEvent(event);
               dispatchEvent(new FocusEvent(FocusEvent.KEY_FOCUS_CHANGE, true,
                              false, null, event.shiftKey, Keyboard.TAB));
            _keyboardEvent = null;
                    return;
          super.keyDownHandler(event);
    * This is a copy of the keyboard event to be processed once the barcode
    * delay is complete.
    private var _keyboardEvent:KeyboardEvent = null;
    * This method launches a timer of sufficient length to allow barcode
    * scanner text to be processed before it re-launches the keyboard event.
    * @param event This is the key-down event to be restarted once the timer is
    * complete.
    private function barcodeTimer(event:KeyboardEvent):void
          var t:Timer = new Timer(30, 1); // 30 ms
       t.addEventListener(TimerEvent.TIMER,
               function():void
               keyDownHandler(event);
       t.start();

  • How too use the string tokeniser class to format date strings

    Using the code below I want to write a method which takes a string as a parameter and process it as follows:
    Input: 21/07/62
    Output: 21st July 62
    I wish to do this using the string tokenizer class. Can anyone help??
    import java.io.*;
    public class Input
    public static void main(String args[]) throws IOException
    String theString;
    BufferedReader stdin = new BufferedReader(
    new InputStreamReader(System.in));
    System.out.println("Enter your string now please");
    theString = stdin.readLine(); // throws IOException
    System.out.println("You entered ***" + theString + "***");
    }

    You can certainly use a StringTokenizer to parse your date into three numbers but I think you should use SimpleDateFormat, which will even help you generate your desired format: http://java.sun.com/j2se/1.4/docs/api/java/text/SimpleDateFormat.html

  • Pass text input to Shell using automator.

    Hello again Apple Community!
    What I am trying to do is use automator to promt the user for information like a username and password and then pass that information through a shell command to create a generic keychain item.
    What I have so far is an Automator "Ask for text" getting the username and the script I have so far is:
    on run {input, parameters}
      do shell script "security add-generic-password -a" & input & "-s servicename -w IAMZPASSWURD"
    end run
    But it will not take the input and include it in the shell script. Any ideas?

    I found the solution! It is a very very sublte mistake. Now Ive got it broken up into 4 chunks to build the command, though I'm sure it could be combined if needed.
    Get username:
    on run {input, parameters}
              tell me to activate
              display dialog "What is your username?" default answer ""
              set input to text returned of result
              return input
    end run
    Add username to shell command(I initially missed the space between the -a and the quote and the -w and the quote):
    on run {input, parameters}
              set thevariable to input
              set theScript to "security add-generic-password -a " & thevariable & " -s keychainitemname -w "
              return theScript
    end run
    Get password and add to end of command:
    on run {input, parameters}
              set theScript to input
              tell me to activate
              display dialog "What is your password?" default answer ""
              set ACP to text returned of result
              set keychaincan to input & ACP
              return keychaincan as string
    end run
    Finally, send the Shell Command:
    on run {input, parameters}
      do shell script (input)
              return input
    end run
    Hope this helps anyone trying to accomplish this same thing!

  • How to set input delay and output delay when source Synchronous

    ClkIN is the board clock which is connected to the FPGA. Clkif is the generated clock from ClkIN. The Device's clk come from Clkif. So, how to set input delay and output delay in this scene(within my understand, this is Source Synchronous)?
    The example in many document, the input delay and output delay setting all refer to board clock(within my understand, this is System Synchronous). In that scene, the input delay max = TDelay_max + Tco_max; input delay min = Tdelay_min + Tco_min; the output delay max = Tdelay_max + Tsu; output delay min = Tdelay_min - Th.
    So, I want to know how to set input/output delay in the Source Synchronous.
    In system synchronous, I set input/output delay such as:
    create_clock -period 20.000 -name ClkIN -waveform {0.000 10.000} [get_ports ClkIN]
    create_generated_clock -name Clkif -source [get_pins cfg_if/clk_tmp_reg/C] -divide_by 2 [get_pins cfg_if/clk_tmp_reg/Q]
    create_clock -period 40.000 -name VIRTUAL_clkif //make virtual clock
    set_input_delay -clock [get_clocks VIRTUAL_clkif] -min 0.530 [get_ports DIN]
    set_input_delay -clock [get_clocks VIRTUAL_clkif] -max 7.700 [get_ports DIN]
    set_output_delay -clock [get_clocks VIRTUAL_clkif] -min -0.030 [get_ports DOUT]
    set_output_delay -clock [get_clocks VIRTUAL_clkif] -max 1.800 [get_ports DOUT]
    *******************************************************************************************

    So, first. Architecturally, the clock that you forward to your external device should not come directly from the clock tree, but should be output via an ODDR with its D1 input tied to logic 1 and the D2 tied to logic 0. This guarantees minimal skew between the output data and the forwarded clock.
    ODDR #(
    .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
    .INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1
    .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
    ) ODDR_inst (
    .Q (Clkif_ff), // 1-bit DDR output
    .C (ClkIN_BUFG), // 1-bit clock input
    .CE (1'b1), // 1-bit clock enable input
    .D1 (1'b1), // 1-bit data input (positive edge)
    .D2 (1'b0), // 1-bit data input (negative edge)
    .R (rst), // 1-bit reset
    .S (1'b0) // 1-bit set
    OBUF OBUF_inst (.I (Clkif_ff), .O (Clkif_out));
    This generates an output clock that is the same frequency as your input clock. This is consistent with your drawing, but inconsistent with your constraints - is the forwarded clock a 50MHz clock or a 25MHz clock?
    I will assume your ClkIN goes to a BUFG and generates ClkIN_BUFG.  Your first constraint generates a 50MHz clock on the ClkIN port which will propagate through the BUFG to (among other places) this ODDR.
    create_clock -period 20.000 -name ClkIN -waveform {0.000 10.000} [get_ports ClkIN]
    Assuming your forwarded clock is supposed to be 50MHz, then your 2nd command is close to correct
    create_generated_clock -name Clkif -source [get_pins cfg_if/ODDR_inst/C] -combinational  [get_pins cfg_if/ODDR_inst/Q]
    With this done, you have successfully described the forwarded clock from your design. This is the clock that goes to your device, and hence should be the clock which is used to specify your input and output constraints.
    set_input_delay -clock [get_clocks Clkif] -min 0.530 [get_ports DIN]
    set_input_delay -clock [get_clocks Clkif] -max 7.700 [get_ports DIN]
    set_output_delay -clock [get_clocks Clkif] -min -0.030 [get_ports DOUT]
    set_output_delay -clock [get_clocks Clkif] -max 1.800 [get_ports DOUT]
    If you want to get fancier, you could try adding a set_clock_latency to the forwarded clock to account for the board propagation of the clock
    set_clock_latency -source TDtrace2 [get_clocks Clkif]
    (But I haven't experimented with clock latency on a generated clock and I don't know for a fact that it works).
    Avrum

  • Use special string as key of DES

    I want to use a special string as key of DES.
    I f I want to use a string which length is more than 8 as key,what should I do?
    Thanks

    Although DES has been designed for using keys composed of eight 7-bit ASCII characters with parity (i.e., plain-text passwords), you do not need to use such "weak" keys. Common passwords have almost no "entropy" (i.e., random information); so you must not use passwords directly in any algorithm (DES, AES, RC4 etc.).
    Remember - keys are not passwords; keys can be derived from passwords. Cryptographic algorithms usually use keys, not passwords.
    The PBE algorithm (Password-Based Encryption) use passwords for encrypting, but do not use the passwords directly. It calculates a special function than derives a key from a password.
    Study the PBE algorithm instead of trying to use the password as a key directly.
    I will give an example to make you understand the problem better.
    There is a class of functions called "cryptographic hashes" that works "digesting" the bytes you pass to it.
    They receive any quantity of bytes as input, and return a fixed-size result (160 bits = 20 bytes for SHA-1, 128 bits = 16 bytes for MD5).
    Examples of cryptographic hash are the MD5 and SHA-1 functions.
    I will give several words that are very near in spelling, but their hashes are completely different.
    The SHA-1 of "password" is 5BAA61E4 C9B93F3F 0682250B 6CF8331B 7EE68FD8
    The SHA-1 of "passwords" is A267F7DB A707256B 0B664DEE 86AB9AE8 B4941218
    The SHA-1 of "passwort" is 2E2B6533 A81BC154 30CF65DE 46DC097E EB5BA70C
    The SHA-1 of "Password" is 8BE3C943 B1609FFF BFC51AAD 666D0A04 ADF83C9D
    If you modify a byte in the content, the value is completely altered. You can see that the SHA-1 of "password" and "Password" are completely different.
    The "naive" way of deriving a key from a password is simply to calculate the SHA-1 of the password, throwing out the unneeded bits (for instance, if you use DES, you can use only the first 8 bytes - 64 bits of the SHA-1 value.)
    The PBE algorithm uses a more sofisticated and secure scheme but the inspiration is that you can derive a key from a password, and use the key to encrypt your data.

  • Using smart previews on iMac to control two sets of identical original files on two external drives --- render previews setting when using smart previews

    I’m just getting started with Lightroom and if someone can help me I’ll be very appreciative.
    I’m using an iMac with a 1TB drive and two external 2.5 TB drives for backup.  My active files are on all three drives and I’m running out of room on the iMac drive.
    With the smart previews capability of Lightroom 5, I’m hoping to remove all the active files from the iMac drive.  I hope to import existing images into the LR catalog from two identical drives with identical folders and have both sets of images reflect the changes I make using smart previews on my iMac.
    I just created two identical test folders of junk images on the external drives and was following a beginners tutorial on importing. However, I see nothing about using smart previews on my iMac that, when connected, will update more than one external drive at the same time.
    I’m also wondering if, when using smart previews, it matters how I set the render previews during the import process.
    Many thanks for any help,
    Karl Hentz

    I don't see any way to use smart previews to update both external drives at the same time. The smart previews are linked to a specific set of images. But it seems to me that if both drives are in fact identical, once the catalog is updated when one of those drives is connected those changes should also apply to the files on the other drive. It's actually the catalog that gets updated, not the images.  Smart previews and regular import previews are completely unrelated. How you have your import previews configured will have no effect on your smart previews.
    Incidentally, in order for my suggestion to work it would be necessary to only have one of those external drives connected. And when the other EHD is connected it would have to have the same drive letter or name. In other words it would have to appear to the iMac that it is precisely the same drive.

  • Powershell use Connection String to query Database and write to Excel

    Right now I have a powershell script that uses ODBC to query SQL Server 2008 / 2012 database and write to EXCEL
    $excel = New-Object -Com Excel.Application
    $excel.Visible = $True
    $wb = $Excel.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    $ws.name = "GUP Download Activity"
    $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL_Statement)
    if ($qt.Refresh()){
    $ws.Activate()
    $ws.Select()
    $excel.Rows.Item(1).HorizontalAlignment = $xlCenter
    $excel.Rows.Item(1).VerticalAlignment = $xlTop
    $excel.Rows.Item("1:1").Font.Name = "Calibri"
    $excel.Rows.Item("1:1").Font.Size = 11
    $excel.Rows.Item("1:1").Font.Bold = $true
    $filename = "D:\Script\Reports\Status_$a.xlsx"
    if (test-path $filename ) { rm $filename }
    $wb.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx)
    $wb.Saved = $True #flag it as being saved
    $wb.Close() #close the document
    $Excel.Quit() #and the instance of Excel
    $wb = $Null #set all variables that point to Excel objects to null
    $ws = $Null #makes sure Excel deflates
    $Excel=$Null #let the air out
    I would like to use connection string to query the database and write results to EXCEL, i.e.
    $SQL_Statement = "SELECT ..."
    $conn = New-Object System.Data.SqlClient.SqlConnection
    $conn.ConnectionString = "Server=10.10.10.10;Initial Catalog=mydatabase;User Id=$username;Password=$password;"
    $conn.Open()
    $cmd = New-Object System.Data.SqlClient.SqlCommand($SQL_Statement,$conn)
    do{
    try{
    $rdr = $cmd.ExecuteReader()
    while ($rdr.read()){
    $sql_output += ,@($rdr.GetValue(0), $rdr.GetValue(1))
    $transactionComplete = $true
    catch{
    $transactionComplete = $false
    }until ($transactionComplete)
    $conn.Close()
    How would I read the columns and data for $sql_output into an EXCEL worksheet. Where do I find these tutorials?

    Hi Q.P.Waverly,
    If you mean to export the data in $sql_output to excel document, please try to format the output with psobject:
    $sql_output=@()
    do{
    try{
    $rdr = $cmd.ExecuteReader()
    while ($rdr.read()){
    $sql_output+=New-Object PSObject -Property @{data1 = $rdr.GetValue(0);data2 =$rdr.GetValue(1)}
    $transactionComplete = $true
    catch{
    $transactionComplete = $false
    }until ($transactionComplete)
    $conn.Close()
    Then please try to use the cmdlet "Export-Csv" to export the data to excel like:
    $sql_output | Export-Csv d:\data.csv
    Or you can export to worksheet like:
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $true
    $workbook = $excel.Workbooks.Add()
    $sheet = $workbook.ActiveSheet
    $counter = 0
    $sql_output | ForEach-Object {
    $counter++
    $sheet.cells.Item($counter,1) = $_.data1$sheet.cells.Item($counter,2) = $_.data2}
    Refer to:
    PowerShell and Excel: Fast, Safe, and Reliable
    If there is anything else regarding this issue, please feel free to post back.
    Best Regards,
    Anna Wang

Maybe you are looking for