Global Variable as an array

Hi All,
Culd you please tell me where I can declare a global variable as an array in PI 7.1.
In PI 7.O we used to store global variables in java sections and it was recognized across mapping in message mapping
In PI 7.1 I have declared a variable in init function in functions tab in message mapping but its not recognized in my mapping.
Could you please help me with this?
Where I have to declare a global variable so that I can use it anywhere in mapping?
Thanks in advance
Best Regards,
Harleen Kaur Chadha

Please refer to the below link about how to use global variables in PI 7.1.
/people/william.li/blog/2008/02/13/sap-pi-71-mapping-enhancements-series-using-graphical-variable
This link will help you understand how to use graphical valiable as a global variable.
Thanks,
Hetal

Similar Messages

  • Javascript array in global variables

    Hi,
    In my form, I created a global variable called MyArray. Then in my form's initialization script, I've set:
    myform.variables.MyArray = new Array(5);
    and I initialized each value.
    In one of my button's click event, I try to access my global array, without success. I tried:
    myform.variables.MyArray[0], myform.variables.MyArray.value[0]... has anyone managed to create a global variable and use it as an array?
    Thank you!

    Hello.
    I have used the "global." to get global variables. It works fine. I have code like this that works:
    // Initialize global array.
    global.chVArray = new Array(4);
    for (i = 1; i <= 4; i++){
       global.chVArray[i] = false;
    // Somewhere else...
    for (i = 1; i <= 4; i++){
       xfa.host.messageBox (global.chVArray[i].toString());
    BR,
    /Per

  • Control global variable used in sub vi

    Hi,
    I've created a vi to read an instrument and to initiate its calibration with labview. This VI stores data in a global variable containing measurments and status of the instrument.
    Now what I'm trying to do is create a sub vi with this to read&write 2 exactly identical instruments so I can finally create a VI that read all 3 instruments simultaneously.
    How could I create a control on the global variable used by the sub VIs since it is the only thing that will change along with its COM port ?
    I included a screetshot of the current VI.
    Thanks,
    Attachments:
    Read_Calibrate.PNG ‏61 KB

    I would make an array of values and then you just pass in which value to update.  I would actually take it a step further and make an Action Engine that can update the data and return the data.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Loading a text file into a global variable issue - really a global var?

    From all the documentation and examples I can find, it appears that it would be
    correct to create a global array variable [outside of any functions] to load image names into,
    then use these images for a slideshow. I want to make the app dynamic, in that changing the text file gives a new set of images.
    The global variable goes null [no values] after the load event listener. Why is that?
    Isn't global, well global, and alive for the duration of the SWF?
    PARAMS.TXT:
    monthNames=January,February,March,April,May,June,July,August,September,October,November,De cember&dayNames=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
    CODE:
    var dNames:Array = new Array();
    var mNames:Array = new Array();
    var request:URLRequest = new URLRequest("images/params.txt");
    var variables:URLLoader = new URLLoader();
    variables.dataFormat = URLLoaderDataFormat.VARIABLES;
    variables.addEventListener(Event.COMPLETE, completeHandler);
    try
    variables.load(request);
    catch (error:Error)
    trace("Unable to load URL: " + error);
    trace("2 mNames 2: " + mNames[2]);
    trace("2 dNames 3: " + dNames[3]);
    stop();
    function completeHandler(event:Event):void
    var loader:URLLoader = URLLoader(event.target);
    dNames = loader.data.dayNames.split(",");
    mNames = loader.data.monthNames.split(",");
    trace(loader.data.dayNames);
    trace("1 mNames 2: " + mNames[2]);
    trace("1 dNames 3: " + dNames[3]);
    OUTPUT:
    2 mNames 2: undefined
    2 dNames 3: undefined
    Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
    1 mNames 2: March
    1 dNames 3: Wednesday
    How do I access these values after loading from the external file, after the load?
    Thanks in advance.

    The statement you quoted from whatever Adobe documentation is correct.
    If you want to load the data into the arrays before anything else happens, then have anything else that happens execute via the completeHandler function... after the data is loaded and processed into the arrays.
    the command: loadFile() executes before the trace("2:" +images[4]); command.  The loadFile function is processed and the loading process BEGINS... but starting the loading does not delay the main processing from continuing down the line--the loading itself becomes a secondary/background task.  The command was to execute the loadFile function and the processing of that function was completed.  If you don't believe so, then add a trace...
    function loadFile():void
         vars.dataFormat = URLLoaderDataFormat.VARIABLES;
         vars.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
         vars.load(new URLRequest("images/fnames.txt"));
         trace("started loading");
    If you add that trace, you should see that the loadFile function execution is completed and the next line in your code is then processed... trace(2....)
    The addEventlistener does not stop anything.  The addEventListener code is assigning a monitor, not a traffic controller... it is telling the monitor to indicate when the data has finished loading.  It is not telling anything to stop program execution.
    So if you want to wait until the data is loaded before you do anything else... it goes....
    function onComplete(evt:Event):void
         var urlVars:URLVariables = evt.target.data;
         images = vars.data.images.split(",");
         tnails = vars.data.thumbnails.split(",");
         ................HERE.................

  • How do I add a global variable to my app?

    Hi all,
    I am building a flex app which displays data in different tabs from a mysql database and I wan't to add a sign in process to make sure only registered users of the mysql db can see the data.
    To achieve this I built a sign in component which accepts a username, password and the name of the database to connect to. My flex app then uses a php script to verify that the user can connect to the database using the details entered. If not, the sign in component displays an error message, but if sign in details are verified then the user can see the data from the database.
    How can I store the details in the flex app for that users session so that when the user queries the db for data, flex uses the details entered during the sign in process to connect to the mysql db and submit the query?
    I thought about storing the details as an array in a global variable and then accessing that global variable from anywhere in my app but I don't know if that is the correct/secure way to do what I want, nor do I know how to do it. Any help would be much appreciated.
    Thanks in advance,
    xander

    quick, dirty example, could be improved on but it'll get you rolling;
    After user login has succeeded, send off another HTTP service eg;
    ========
    <mx:Script>
             <![CDATA[
                public var whateverUserNameWasEntered:String;
                 public var whateverUserPasswordEntered:String;
         public function onLoginSuccess():void
              whateverUserNameWasEntered:String = loginbox.text;
              whateverUserPasswordEntered:String = passwordbox.text;
              storeSessionStuff.send();
         ]]>
        </mx:Script>
    <mx:HTTPService id="storeSessionStuff" showBusyCursor="true" method="POST"  url="http://localhost/store.php" useProxy="false">
            <mx:request xmlns="">   
              <username>
                   {whateverUserNameWasEntered}
              </username>
              <password>
                   {whateverUserPasswordEntered}
              </password>       
            </mx:request>
        </mx:HTTPService>          
    ========
    direct it to the php file.....
    <?php
    session_start();
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password']   = $_POST['password'];
    ?>
    Then, whenever you want to get the information out of the Session, send off another HTTP Service...;
    <mx:HTTPService id="getSessionStuff" result="storeData(event)" showBusyCursor="true" method="POST"  url="http://localhost/get.php" useProxy="false"/>
    to the php file....
    <?php
    session_start();
    print "<details><username>".$_SESSION['username']."</username><password>".$_SESSION['password'] ."</password></details>";
    ?>
    which, you need a result function for:
    <mx:Script>
             <![CDATA[
              private function storeData(evt:ResultEvent):void
                    var username:String;
                    var password: String;
                   username = evt.result.details.username;    
                   password = evt.result.details.password;         
          ]]>
    </mx:Script>
    ta daa
    (if thats what you meant)

  • Passing variables in an array to jtextarea?

    What method could I use to pass different Strings in an array to a jtextarea each time the "Next" button (a JButton) in my JFrame is pressed? So, for example, if i hit next, i might want the word "frank" to print in the jtextarea, but the next time i hit it, i might want it to print "joe" Thank you!!
    This is my code:
    public class discardedSaluteMyShorts extends JPanel implements ActionListener
        JTextArea textArea;
        String newline = "\n";
        static final public String NEXT = "next";
        public discardedSaluteMyShorts()
            super(new BorderLayout());
            //Create the toolbar.
            JToolBar toolBar = new JToolBar("Still draggable");
            addButtons(toolBar);
            //Create the text area used for output.  Request
            //enough space for 5 rows and 30 columns.
            textArea = new JTextArea(5, 30);
            textArea.setEditable(false);
            JScrollPane scrollPane = new JScrollPane(textArea);
            //Lay out the main panel.
            setPreferredSize(new Dimension(450, 130));
            add(toolBar, BorderLayout.PAGE_START);
            add(scrollPane, BorderLayout.CENTER);
        public void addButtons(JToolBar toolBar)
            JButton button = null;
            //third button
            button = makeNavigationButton("Forward24", NEXT,
                    "Next light or sound cue",
                    "Next");
            toolBar.add(button);
        public JButton makeNavigationButton(String imageName,
                String actionCommand,
                String toolTipText,
                String altText)
            //Look for the image.
            String imgLocation = "images/"
                    + imageName
                    + ".gif";
            URL imageURL = discardedSaluteMyShorts.class.getResource(imgLocation);
            //Create and initialize the button.
            JButton button = new JButton();
            button.setActionCommand(actionCommand);
            button.setToolTipText(toolTipText);
            button.addActionListener(this);
            if (imageURL != null)
            {                      //image found
                button.setIcon(new ImageIcon(imageURL, altText));
            else
            {                                     //no image found
                button.setText(altText);
                System.err.println("Resource not found: "
                        + imgLocation);
            return button;
        public void actionPerformed(ActionEvent e)
            String cmd = e.getActionCommand();
            String cmd1 = e.getActionCommand();
            String description="";
            String description1 = "";
            String description2 = "";
            // Handle each button.
            if (NEXT.equals(cmd))
            { // third button clicked
                description="23 up";
                description1 ="23 down";
                description2="adsfsd";
                displayResult(description, description1, description2);
        public void displayResult(String description, String description1, String description2)
            JButton button = new JButton();
            button.getActionCommand();
            textArea.append(description + newline);//adds description to document
            if(button.getActionCommand()!=null)
            textArea.append(description1 + newline);
            textArea.append(description2 + newline);
            textArea.setCaretPosition(textArea.getDocument().getLength());//scrolls down
        public void nextCue1()
            String description2 = "asdfasasdf";
            displayResult2(""+description2);
        public void displayResult2(String description2)
            String description3 = ".";
            textArea.append(description2 + newline);//adds description to document
            textArea.setCaretPosition(textArea.getDocument().getLength());//scrolls down
        public void displayResult3(String description3)
            textArea.append(description3 + newline);//adds description to document
            textArea.setCaretPosition(textArea.getDocument().getLength());//scrolls down
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event dispatch thread.
        public static void createAndShowGUI()
            //Create and set up the window.
            JFrame frame = new JFrame("ToolBarDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Add content to the window.
            frame.add(new discardedSaluteMyShorts());
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        public static void main(String[] args)
            //Schedule a job for the event dispatch thread:
            //creating and showing this application's GUI.
            SwingUtilities.invokeLater(new Runnable()
                public void run()
                    //Turn off metal's use of bold fonts
                    createAndShowGUI();
    }Edited by: cubswar on Apr 1, 2008 8:47 PM

    First you declare the array and the index you currently are on in your class on the global variables section so for example:
    public class discardedSaluteMyShorts extends JPanel implements ActionListener {
        private int index = 0;
        private String arr[] = new String[] { "frank", "joe" };
        // The code would be here
    }Then in the method which displays the next value:
    public void showNextValue() {
        textArea.setText(arr[index]);
        index = (index + 1) % arr.length;
    }You probably want to call the method from the action performed of the button.

  • How to use a global variable for reading a query resultset in JDBC lookup?

    Hi Friends,
    Using JDBC lookup, I am trying to read from a table Emp1 using a user defined function. In PI 7.0, this function returns values of a single column only even if you fire a " Select * " query. I am planning to use a global variable(array) that stores individual column values of the records returned by a "select *" query. Need pointers on as to how a global variable can be declared and used to acheive the above scenario. Kindly explain with an example. Any help would be appreciated.
    Thanks,
    Amit.

    Hi Amit,
    Sounds like a good idea but then you would need an external db and update the table in a thread safe way !.
    Regarding your question as to how to work with global variable please refer https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1352. [original link is broken] [original link is broken] [original link is broken]
    Rgds
    joel

  • What is the best way to retrive data from a Global Variable?

    Here is what I want to do,
    I have several PC's that run different types of tests. I want to use a global variable, running on a single PC, that acts like a sever that can be accessed by the other PC's in my lab. This Global variable will store the hostnames of the different PC's that are currently running each test, along with a description of the test.  Then, a user can access this Global variable to read the different values and select the PC and connect to it's desktop using Remote Desktop in Windows.
    Is it possible to write data to the Global variable that is running on the single PC?
    What is the best way to do this? Does anyone have a sample VI?
    What is the best way to then read the data from the Global variable?
    (I will probably use an array\cluster to store the hostnames.) 

    Another pre-LV8 idea...
    A functional global can be accessed using VI-Server and called using "call by reference".
    This approach harnesses the TCP functionality built into the VI-Server to manage the conncetion.
    This can be pretty quick and (if the functional global is written correctly) will support buffered- mixed data types. (Try to do that with the Shared Variable  ).
    Just another idea,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Call function in LabView from a DLL, then access global variable from DLL

    I have created a DLL in LabWindows with a function and a structure.  I want to call the function from within LabView and then access the global structure.  I am able to call the function from the DLL with a "Call Library Function Node" and can access the return value, but I cannot figure out how to access the global structure.  The structure is declared in the DLL header file with __declspec(dllimport) struct parameters.
    Is there any way of accessing this structure without using the Network Variable Library?
    Solved!
    Go to Solution.

    dblok wrote:
    When you say "access to" or "the address of" the global variable, do you mean to pass the variable as an argument to the function call in the DLL?  If so, then I was not really sure how to pass a cluster from LabView by using the "Call Library Function Node".
    Yes, that's exactly right.  I would include a pair of helper functions in the DLL to read and write the global variable.  Alternatively you might write separate helper functions for each field inside the global structure, depending on the number of fields and whether you want to do any validation on the values.
    You can pass a cluster by reference to a function that expects a struct by setting the parameter to Adapt to Type, so long as the cluster does not contain any variable-length elements (strings or arrays).  The cluster needs to match the struct exactly, and sometimes that involves adding extra padding bytes to make the alignment work.  Variable-length elements in LabVIEW need to be converted to clusters containing the same number of elements as the struct definition (for example, if your struct contains char name[12], you would create a cluster of 8 U8 values, and you could use String to Array of Bytes followed by Array to Cluster to convert a LabVIEW string into that format).  If the struct contains pointers it gets more complicated, and it may be easier to write functions in the DLL to access those specific elements individually.
    If you can't get this working or need help, post your code and an explanation of the error or problem you're seeing.
    EDIT: it is also possible to include a single function in the DLL that returns the address of the global variable, which LabVIEW can then use to access and modify the data, but that's more complicated and likely to lead to crashes if you don't get the memory addressing exactly right.

  • Need features of global variables but want to avoid re-writing to memory

    I am making a program with a number of simultaneous loops that will be sharing several variables. Most of the variables are of size 1 or small arrays, so I am not too concerned about the constant re-writings involved. However, I have one rather large data buffer (3D array containing 200Kb+ of data). The buffer will be of a set size. In the various loops, the buffer will be accessed for updates (generally with Replace Array subset), and read from to get average values and such. I'm using semaphores so that none of the loops interact negatively and lose data. In other programs I'd set this up with a shift register in the loop, but since the data is being used in separate simultaneous loops, it's no
    t really possible to wire it up that way. I need some sort of memory-space that can be accessed from the various loops.
    I guess in sorts, I need to be able to have global variable 'pointers', but of course I was told a couple of years ago at a LabView seminar that pointers was a bad word.

    tbob wrote:
    > As long as Labview is running, the LV2 style global will automatically
    > retain its last value. Of course the very first time it is run, the
    > value is undefined, so you should write to it before attempting any
    > read.
    I have one correction to make. The value of an unitialized shift
    register on first load is not undefined but rather contains the
    datatype's default default value. This would be False for booleans, 0
    for numerics and empty arrays or strings.
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Global variable, memory

    Hi,
    I am using global variables in order to share values captured by one VI (as kind of data source) with other VIs, but after several days of continuous running I recieve Error 2:Memory is full.\
    Please advise how can i empty global variables or use other way of sharing data between VIs continuously without interruptions.
    Thanks

    Innka wrote:
    I am reading and sharing values from indicators which are communicating using .NET protocol, and the values are received as two signed 6 digit numbers (DBL) and  I am sampling the data every second. The idea was replacing the value each second and not creating the array of values.
    So you don't have an array?  The the global variable is not your problem.  The .NET interface could be something to look at.  Are you opening a .NET interface inside of a loop without closing it?
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • How can I do the CNiReal64Vector as a global variable?

    My problem is with the CNiReal64Vector. Ive tried to define this vector as a global variable in the header file:
    public:
    NI::CNiReal64Vector plotData(50);
    but the debuger flushed error : Syntax error ´constant´.
    Of course,  I used usually square brackets:
     public:
    double plotData[50];
    Is it possible define the array of CNiReal64Vector as a global variable?
    Thank You.
    Best Regards
    Emta

    In the header (.h) file, declare the variable like this:
    extern NI::CNiReal64Vector plotData;
    In a source (.cpp) file, define the variable like this:
    NI::CNiReal64Vector plotData(50);
    This will cause the compiler to generate a single instance of the plotData global variable and a call to the CNiReal64Vector constructor that takes an integer that specifies the initial size. I believe that this is what you are trying to do.

  • Const not allowed in global variable definitions?

    Can someone tell me why the compiler complains when I do this:
    const int MY_CONST = 100;
    char *myStr[MY_CONST];
    This is being done outside of a function, as I want myStr to be a global variable.
    I get an error saying the initializer must be constant. I've tried this with other compilers, and they don't complain. Any ideas?
    Thanks.

    In C a variable of type int remains a variable, even if the const keyword prevents it is modifiend during program life. Given this, C does not permit to use it in a array definition since it is not a "constant". As far as I know C++ does permit this declaration.
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • More details about Surprising LV global variable of type 2

    I'm using a type 2 global variable because I need a big data array shared by
    two parallel VI, so this data array is manipulated in a subVI non reentrant.
    One input of this subVI is an enum called method which represents what
    action to do on the data of the subVI and this input is directly wired to a
    condition structure.
    The big data array is contained by an indicator in the front panel of this
    subVI because
    this big data is an output of the load method so this indicator is wired as
    output connector of the subVI because it is needed when loaded.
    For other method the big data array is read to extract part of needed data,
    so in the subVI diagramm, a readable local variable issued from the big data
    arra
    y terminal is used . But how big data array is not needed for these
    methods, big data array terminal is not rewritten as output in these
    condition diagramms because the big data array is theoretically unchanged
    and I want to avoid to duplicate my big data array to save time and memory.
    The result is surprising because:
    After the load method, the big data array output is right.
    Then, the input of the second subVI call as a get method is correct.
    Readable local variable of the big data array sends right data as input of
    the condition associated with this method, in the subVI.
    Then, the input of the third subVI call as a get method is wrong. Readable
    local variable of the big data array sends wrong data as input of the
    condition associated with this method, in the subVI.
    So, I suppose I have to wire my big array as output of the condition for
    every method call, what lose
    a lot of time and memory.
    Have you a better idea, please?

    Brice Chatelan wrote in message <[email protected]>...
    >I'm using a type 2 global variable because I need a big data array shared
    by
    >two parallel VI, so this data array is manipulated in a subVI non
    reentrant.
    >...
    >For other method the big data array is read to extract part of needed data,
    >so in the subVI diagramm, a readable local variable issued from the big
    data
    >array terminal is used . But how big data array is not needed for these
    >methods, big data array terminal is not rewritten as output in these
    >condition diagramms because the big data array is theoretically unchanged
    >and I want to avoid to duplicate my big data array to save time and memory.
    >The result is surprising because:
    >After the load method, the big data array output is right.
    >Then, the input of the second subVI call as a get method is correct.
    >Readable local variable of the big data array sends right data as input of
    >the condition associated with this method, in the subVI.
    >Then, the input of the third subVI call as a get method is wrong. Readable
    >local variable of the big data array sends wrong data as input of the
    >condition associated with this method, in the subVI.
    >
    >So, I suppose I have to wire my big array as output of the condition for
    >every method call, what lose
    >a lot of time and memory.
    >
    >Have you a better idea, please?
    >
    Brice,
    Are you using a while loop with uninitialized shift-registers in your LV2
    style global. This technique is what defines a "LV2 style global" also
    called functional globals because you can embed actual functionality into
    the VI (for example in your case to extract certain data from an array and
    operate on it) as opposed to the read/write only usage of the built in
    globals.
    From what I can gather, it doesn't sound like you are using the while
    loop/shift-register method. You shouldn't need to use a local variable at
    all. The data is passed around using the shift-register and it passes
    through all of you conditions (load, get, etc.) and no you won't lose time
    and memory (or money) doing it this way, certainly not any more than you
    would using a local variable. Try it and see if it doesn't fix your
    problems and work better than what you are doing now.
    If you are using a while loop and shift-registers, then I'm not
    understanding clearly what you are doing. Perhaps if you emailed me your VI
    (privately of course) to take a look at.
    Good Luck!
    Scott Menjoulet

  • How to Set multiple Global Variables without using Controls or Indicators

    I have to set many Global Variables (i.e. declare and initialize them) in a subVI in order to pass them to various other subVI's. The only way I know how to do it in LabView is to create a Globals.vi on which you create a control or indicator for EACH Global Variable. That's fine if you have only a few variables. But I have close to a hundred Global Variables (which come from a configuration file for a large program) and clearly it is impractical and cumbersome to create a control for each global variable. In Agilent Vee, there is a simple function called "Set Variable" that sets the data value of a global variable. Then in other module, you simply use the "Get Variable" function to get back the v
    ariable and its value.
    In LabView you can use the "Invoke Node / Set Control Value" and "Get Control Value" properties to achieve the same thing. But as mentioned above, you need to create a control for each global variable and that is a big pain in my case, with many global variables. Furthermore, the global variables are read from a Configuration Text File to this VI. Is there a way to do it without using the control? Thank you in advance for any help.

    Actually you could create the same sort of facility in LV. All you have to do is create a LV2-style global that behaves as follows:
    To write a value to it, you supply a value name and the value. These pieces of data are save internally in seperate arrays.
    To read a value, you supply a value name. The VI looks up this name in the value name array to return an index into the value array. Output the value you find.
    Frankly though, it sounds like what you really need is not hundreds of globals, but a good way to manage configuration data.
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

Maybe you are looking for

  • Voice memos iPhone

    I usually don't have problems with the voice memos app, but oneve I've closed the app before my voice memo could be saved properly. Now if I tap "play" it doesn't go on even though the voice wave and all the informations about it are there. Can I do

  • Enchancement creation error?

    Hi abapers, TYPES:  cell_color(4) TYPE c,        END OF yt_kpplt1. above is the enhancement point there i have to add three fields, but the down part of the line is in change mode up to before END OF yt_kpplt1. it is in display mode----> TYPES:  cell

  • SC print error

    Hello All, We are running on classic scnario. I am using transaction "Monitor Shopping Cart". here after giving SC number I am clicking on print icon and getting following error prompt: Specify either address number or addresshandle If it is a IDOC r

  • Import data thru php

    hi, i have a text file and i want to import this file to data base table, how i can do that thru php? any solution will be appriciated. thanks Noman ul haq

  • Really bizzare SQL issued by BI server 11.1.3

    From OBIEE answers I select one column from a single fact table using a time and location dimension. The SQL that gets issued by the BI SERVER to the backend database contains an outer join over a COMPLETELY UNRELATED Fact table, which produces incor