The problem with writing  BLOB arrays in table at one time?

i want to write many blobs in at one time , And i use the OCIBindArrayOfStruct()
My code is blow, I want you guys to help me find my BUG, thank you very much.
the Program always pops the ERROR message :ORA-22275: invalid LOB locator specified
STATUS status;
          OCILobLocator **lArray;
          lArray = new OCILobLocator*[nCount];
          for (size_t i = 0;i < nCount;i++)
                    if((status = OCIDescriptorAlloc((dvoid *)env->envhp,(dvoid **)&lArray,
                         (ub4)OCI_DTYPE_LOB,(size_t)0,(dvoid **)0)) != OCI_SUCCESS)
                         return(status);
          text sqlstats[300];
          strcpy_s((char*)sqlstats,300,"insert into ");
          strcat_s((char*)sqlstats,300,texTableName);
          strcat_s((char*)sqlstats,300,"(TEXID,TEXNAME,TEXDATA) values (:texid,:texname,:lblob)");
          OCIBind bndhp1 = (OCIBind )0;
          OCIBind bndhp2 = (OCIBind )0;
          OCIBind bndhp3 = (OCIBind )0;
          PREPARE_RETURN(sqlstats);
          BIND_CTR(bndhp1,":texid",texinfo[0].texid,30);
          if ((status = OCIBindArrayOfStruct(bndhp1,env->errhp,nSize,sizeof(sb2),sizeof(ub2),sizeof(ub2))) != OCI_SUCCESS)
               for(size_t j = 0;j < nCount;j++)
                    FREE_LOB_LOCATOR(lArray[j]);
               delete[] texinfo;
               char err[512];
               OraError_Proc(status,err,512);
               AfxMessageBox(err);
               return status;
          BIND_CTR(bndhp2,":texname",texinfo[0].texname,MAX_NAME);
          if ((status = OCIBindArrayOfStruct(bndhp2,env->errhp,nSize,sizeof(sb2),sizeof(ub2),sizeof(ub2))) != OCI_SUCCESS)
               for(size_t j = 0;j < nCount;j++)
                    FREE_LOB_LOCATOR(lArray[j]);
               delete[] texinfo;
               char err[512];
               OraError_Proc(status,err,512);
               AfxMessageBox(err);
               return status;
          if((status = OCIBindByName(env->stmthp,&bndhp3,env->errhp,
               (CONST text *)":lblob",(sb4)-1,(dvoid *)lArray,(sword)-1,SQLT_BLOB,
               (dvoid *)0,(ub2 *)0,(ub2 *)0,(ub4)0,(ub4 *)0,OCI_DEFAULT)) != OCI_SUCCESS)
               return(status);
          if ((status = OCIBindArrayOfStruct(bndhp4,env->errhp,sizeof(lArray[0]),sizeof(sb2),sizeof(ub2),sizeof(ub2))) != OCI_SUCCESS)
               for(size_t j = 0;j < nCount;j++)
                    FREE_LOB_LOCATOR(lArray[j]);
               delete[] texinfo;
               char err[512];
               OraError_Proc(status,err,512);
               AfxMessageBox(err);
               return status;
//this line will not succeed
          if((status = OCIStmtExecute(env->svchp,env->stmthp,env->errhp,
               (ub4)nCount,(ub4)0,(CONST OCISnapshot *)0,(OCISnapshot *)0,(ub4)OCI_DEFAULT)) != OCI_SUCCESS)
               char err[512];
               OraError_Proc(status,err,512);
               AfxMessageBox(err);
               for(size_t j = 0;j < nCount;j++)
                    FREE_LOB_LOCATOR(lArray[j]);
               delete[] texinfo;
               return status;

[Edit : oops...misread the post...]
Regards

Similar Messages

  • We sorrted the problem with "32 bit plugin requred" , but another one acuired - it wants to updte the silver light every time i try to write email, we do not have silver light. What to do? Thanks program . This is with using hotmail

    When i thick "open in 32 bit mode" in "get info" from Firefox application, then every time i try to send email from Hotmail it tells me to update "silverlight" - we do not have such application or program or what every this is. I did not need to do that if i do not tick the box "open in 32 bit mode". What to do. I do not want the reminder i need to run this page on 32 bit and i do not want this "update your silverlight'' every time i try to send email.
    Thanks

    See https://support.mozilla.com/en-US/questions/822075#answer-204885

  • InDesign problem With Https cURL Seems Very Slow at first time  to handshaking to server

    I am trying to connect the server using cURL from Indesign, but when i am trying to call to server the indesign takes so much time to open and initialize the socket it takes 25 seconds at first time only, but On all subsequent calls it is fast,
    *but when i am tryid that same programe with an c++ empty project it is very fast in 2 second we get a result back,
    *So the Problem With Indesign Socket initialization using https at first time because i have tryid same Curl On Simple c++ program and it is fast at all calls
    Specification:
    I am Currently using
         Indesign cs7 version 9.0
         visual studio 2010
    Can Anyone tell me why It happens,
    my code snippet is as follows please try to find if anyone knows better.
             curl_global_init(CURL_GLOBAL_ALL);
              curl = curl_easy_init();
             struct data config;
          config.trace_ascii = 1; /* enable ascii tracing */
          struct curl_slist *chunk = NULL;
             curl_slist_append( chunk, "Content-Type: application/json");
          curl = curl_easy_init();
          struct AppMemoryStruct chunk1;
             chunk1.memory = (char *)malloc(1);  /* will be grown as needed by the realloc above */
             chunk1.size = 0;    /* no data at this point */
           if(curl) {
                 curl_easy_setopt(curl, CURLOPT_URL, url.GetPlatformString().c_str());
                 curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
                 curl_easy_setopt(curl, CURLOPT_SSLCERT, "C:\\test\\omg.aps.net.pem");
                 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
              curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
                 curl_easy_setopt(curl,CURLOPT_KEYPASSWD,"");
                 char error[1024];
                 curl_easy_setopt ( curl, CURLOPT_ERRORBUFFER, error );
           /* send all data to this function  */
                 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &AppWriteMemoryCallback);
          /* we pass our 'chunk' struct to the callback function */
                 curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk1);
          /* some servers don't like requests that are made without a user-agent
              field, so we provide one */
                 //curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");
                 //curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
                 //curl_easy_setopt(curl, CURLOPT_HTTPGET,1);
         //heres the performance get down its around 25 seconds when i am calling The server Using Curl Object Having
         //https url 
                res = curl_easy_perform(curl);
        // till here
                 if(CURLE_OK != res)
                     errorCode = kFalse;
                     if(chunk1.memory)
                         free(chunk1.memory);
                      curl_easy_cleanup(curl);
                   return errorCode;
                 errorCode = kTrue;
                 if(chunk1.memory)
                     returndata.SetCString(chunk1.memory);
                     free(chunk1.memory);
               /* always cleanup */
             curl_easy_cleanup(curl);curl_global_init(CURL_GLOBAL_ALL);
          please try to find a key issue why the performance is very bad using https.
    Thanks,

    I was tempted to move this over to the InDesign SDK forum where there are coders, but there isn't a lot of traffic over there, so I'm going to leave this open here with the advice that you probably won't get an answer from anyone here becasue we are, for the most part, not folks who work with code beyond scripting (and very few scripters hang out here, either).
    You should cross-post over there yourself and hope someone who understnds the qusetion sees it in one place or the other.

  • What is the problem with native dynamic sql when counting rows in all table

    what is the problem with native dynamic sql when counting rows in all table?Giving an error "table or view does not exist". Thanks.
    DECLARE
    v_sql_string varchar2(1000);
    v_no_of_rows number;
    BEGIN
    for i in ( select table_name from all_tables )
    loop
    v_sql_string := ' select count(1) from ' || i.table_name;
    dbms_output.put_line( v_sql_string );
    --execute immediate v_sql_string into v_no_of_rows;
    end loop;
    END;

    Usually your problem can be described with 'Who cares'. I mean, for what reason do you do this? I doubt that there's a business need to get 100 % accurate answers for this. Normally such things are used to get a picture about the growth of data.
    Personally I would prefer to have up-to-date statistics for all tables and just query the number of rows from there. Sufficient for me in < 99 % of all cases.
    Just my $ .02...

  • Problem with writing and reading using serialization

    I am having a problem with writing and reading an object that has another object in it. The purpose of the class is to write a order that has multiple items in it. And there will be several orders. This is for an IB project, where one of the requirements is to utilize a hierarchical composite data structure. That is, it is "one that contains more than one element and at least one of the elements is a composite data structure. Examples are, an array or linked list of records, a record that has one field that is another record, or an array". The code is shown below:
    The error produced is
    java.lang.NullPointerException
         at SamsonRubberIndustries.CustomerOrderDetails.createCustOrdDetailsScreen(CustomerOrderDetails.java:150)
         at SamsonRubberIndustries.CustomerOrderDetails$1.run(CustomerOrderDetails.java:78)
         at java.awt.event.InvocationEvent.dispatch(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    public class CustOrdObject implements Serializable {
         public int CustID;
         public int CustOrderID;
         public Object OrderDate;
         public InnerCustOrdObject[] innerCustOrdObj;
         public float GrandTotal;
         public int MaxItems;
         public CustOrdObject() {}
         public CustOrdObject(InnerCustOrdObject[] innerCustOrdObj,
    int CustID, int CustOrderID, Object OrderDate,
    float GrandTotal, int innerarrlength, int innerarrpos, int MaxItems) {
              this.CustID = CustID;
              this.CustOrderID = CustOrderID;
              this.OrderDate = OrderDate;
              this.GrandTotal = GrandTotal;          
              this.MaxItems = MaxItems;
              this.innerCustOrdObj = new InnerCustOrdObject[MaxItems];
         public InnerCustOrdObject[] getInnerCustOrdObj() {
              return innerCustOrdObj;
         public void setInnerCustOrdObj(InnerCustOrdObject[] innerCustOrdObj) {
              this.innerCustOrdObj = innerCustOrdObj;
         public int getCustID() {
              return CustID;
         public void setCustID(int custID) {
              CustID = custID;
         public int getCustOrderID() {
              return CustOrderID;
         public void setCustOrderID(int custOrderID) {
              CustOrderID = custOrderID;
         public Object getOrderDate() {
              return OrderDate;
         public void setOrderDate(Object orderDate) {
              OrderDate = orderDate;
         public void setGrandTotal(float grandTotal) {
              GrandTotal = grandTotal;
         public float getGrandTotal() {
              return GrandTotal;
         public int getMaxItems() {
              return MaxItems;
         public void setMaxItems(int maxItems) {
              MaxItems = maxItems;
    public class InnerCustOrdObject implements Serializable{
         public int ItemNumber;
         public float UnitPrice;
         public int QuantityRequired;
         public float TotalPrice;
         public InnerCustOrdObject() {}
         public InnerCustOrdObject(int ItemNumber, float
    UnitPrice, int QuantityRequired, float TotalPrice){
              this.ItemNumber = ItemNumber;
              this.UnitPrice = UnitPrice;
              this.QuantityRequired = QuantityRequired;
              this.TotalPrice = TotalPrice;
         public int getItemNumber() {
              return ItemNumber;
         public void setItemNumber(int itemNumber) {
              ItemNumber = itemNumber;
         public int getQuantityRequired() {
              return QuantityRequired;
         public void setQuantityRequired(int quantityRequired) {
              QuantityRequired = quantityRequired;
         public float getTotalPrice() {
              return TotalPrice;
         public void setTotalPrice(float totalPrice) {
              TotalPrice = totalPrice;
         public float getUnitPrice() {
              return UnitPrice;
         public void setUnitPrice(float unitPrice) {
              UnitPrice = unitPrice;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;
    public class CustomerOrderDetails extends CommonFeatures{
         //TODO
         private static int MAX_ORDERS = 200;
         private static int MAX_ORDERITEMS = 100;
         private static int MaxRecord;
         private static int CurrentRecord = 1;
         private static int currentItem;
         private static int MaxItems;
         private static boolean FileExists, recFileExists;
         private static CustOrdObject[] orderDetails = new CustOrdObject[MAX_ORDERS];
         private static InnerCustOrdObject[] innerCustOrdObj = new InnerCustOrdObject[MAX_ORDERITEMS];     
         private static File OrderDetailsFile = new File("CustOrdDetails.dat");
         private static File OrdRecordNumStore = new File("OrdRecordNumStore.txt");
         private static PrintWriter writeFile;
         private static BufferedReader readFile;
         private static ObjectOutputStream objOut;
         private static ObjectInputStream objIn;
         //Set format for date
         SimpleDateFormat simpleDF = new SimpleDateFormat("dd MM yyyy");
         //--<BEGINNING>--Declaring Interface Variables------------------------------------------//
         private JPanel innertoppanel, innercenterpanel, innerbottompanel, innerrightpanel, innerleftpanel;
         private JLabel CustIDLbl, CustOrderIDLbl, OrderedDateLbl, GrandTotLbl, ItemNumberLbl,UnitPriceLbl, QuantityReqLbl, TotPriceLbl;
         private JTextField CustIDTxt, CustOrderIDTxt, OrderedDateTxt, GrandTotTxt, ItemNumberTxt, UnitPriceTxt, QuantityReqTxt, TotPriceTxt;
         private JButton addrecordbtn, savebtn, externalprevbtn, externalnextbtn, internalprevbtn, internalnextbtn, gotorecordbtn, additemreqbtn;
         //--<END>--Declaring Interface Variables------------------------------------------------//
         public static void main(String[] args) {
              final CustomerOrderDetails COD = new CustomerOrderDetails();
              java.awt.EventQueue.invokeLater(new Runnable() {
                   public void run() {
                        try {
                             UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                             COD.createCustOrdDetailsScreen();
                        } catch (Exception eb) {
                             eb.printStackTrace();
         //--<BEGINNING>--Creating CustomerOrderDetails Screen---------------------------------------//
         public JFrame createCustOrdDetailsScreen() {
              createDefaultFrame();
              mainframe.setSize(800,500);
              createContainerPanel();
              containerpanel.add(createCustOrdDetailsTitle(), BorderLayout.NORTH);
              containerpanel.add(createCustOrdDetailsMainPanel(), BorderLayout.CENTER);
              //containerpanel.add(createCustOrdDetailsLeftNavButtons(), BorderLayout.WEST);
              //containerpanel.add(createCustOrdDetailsRightNavButtons(), BorderLayout.EAST);
              containerpanel.add(createCustOrdDetailsButtons(), BorderLayout.SOUTH);
              mainframe.setContentPane(containerpanel);
              mainframe.setLocationRelativeTo(null);
              mainframe.setVisible(true);
              //--<BEGINNING>--Checks to see whether CRecordNumberStore file exists-------------------------------//
              if (OrdRecordNumStore.exists() == true) {
                   recFileExists = true;
              }else {
                   recFileExists = false;
              if (recFileExists == true) {
                   MaxRecord = readRecordNumber();
                   CurrentRecord = MaxRecord;
                   //readOrder();
                   //readInnerOrderRecord(CurrentRecord);
                   System.out.println("Current Record " +CurrentRecord);
                   System.out.println("Max Record " +MaxRecord);
              }else{
                   MaxRecord = 1;
                   writeRecordNumber(MaxRecord);
                   CustOrderIDTxt.setText(""+MaxRecord);
                   System.out.println("Current Record " +CurrentRecord);
                   System.out.println("Max Record " +MaxRecord);
              //--<END>--Checks to see whether CRecordNumberStore file exists--------------------------------------//
              if(readOrder() != null){
                   orderDetails = (CustOrdObject[]) readOrder();
                 innerCustOrdObj = orderDetails[CurrentRecord].getInnerCustOrdObj();
                   MaxItems = orderDetails[CurrentRecord].getMaxItems();
                   if(CurrentRecord > 1 && CurrentRecord < MaxRecord){
                        externalnextbtn.setEnabled(true);
                        externalprevbtn.setEnabled(true);
                   if(CurrentRecord >= MaxRecord){
                        externalnextbtn.setEnabled(false);
                   getFieldText(CurrentRecord-1);
              }else{
                   orderDetails[CurrentRecord] = new CustOrdObject();
                   currentItem = 1;
              return mainframe;
         //--<END>--Creating CustomerOrderDetails Screen---------------------------------------------//
         public JPanel createCustOrdDetailsTitle(){
              createTitlePanel();
              titlepanel.setBackground(TxtfontColor);
              label.setText("- Customer Order Details -");
              labelpanel.setBackground(TxtfontColor);
              label.setForeground(Color.white);
              createbuttonpanel();
              buttonpanel.setBackground(TxtfontColor) ;
              buttonpanel.add(createReturnToMainMenuButton());
              titlepanel.add(labelpanel, BorderLayout.WEST);
              titlepanel.add(buttonpanel, BorderLayout.EAST);
              return titlepanel;
         public JPanel createCustOrdDetailsMainPanel(){
              createmainpanel();
              mainpanel.setBackground(TxtfontColor);
              mainpanel.setLayout(new BorderLayout());          
              mainpanel.setBorder(BorderFactory.createTitledBorder(""));
              mainpanel.add(createInnerTopPanel(), BorderLayout.NORTH);
              mainpanel.add(createInnerCenterPanel(), BorderLayout.CENTER);
              mainpanel.add(createInnerBottomPanel(), BorderLayout.SOUTH);
              mainpanel.add(createInnerRightPanel(), BorderLayout.EAST);
              mainpanel.add(createInnerLeftPanel(), BorderLayout.WEST);
              return mainpanel;
         public JPanel createInnerTopPanel(){
              innertoppanel = new JPanel(new GridBagLayout());
              innertoppanel.setBackground(TxtfontColor);
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              CustIDLbl = new JLabel("Customer ID");
              CustIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              CustIDLbl.setFont(font);
              CustIDLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 1;
              innertoppanel.add(CustIDLbl, GBC);     
              CustIDTxt = new JTextField(20);
              CustIDTxt.setEditable(true);
              GBC.gridx = 2;
              GBC.gridy = 1;
              innertoppanel.add(CustIDTxt, GBC);
              GBC.gridx = 3;
              GBC.gridy = 1;
              innertoppanel.add(Box.createHorizontalStrut(220), GBC);
              OrderedDateLbl = new JLabel("Order Date");
              OrderedDateLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              OrderedDateLbl.setFont(font);
              OrderedDateLbl.setForeground(LblfontColor);
              GBC.gridx = 4;
              GBC.gridy = 1;
              innertoppanel.add(OrderedDateLbl, GBC);     
              //Get today's date
              Date todaydate = new Date();
              OrderedDateTxt = new JTextField(simpleDF.format(todaydate), 20);
              OrderedDateTxt.setHorizontalAlignment(JTextField.CENTER);
              OrderedDateTxt.setEditable(false);
              GBC.gridx = 5;
              GBC.gridy = 1;
              innertoppanel.add(OrderedDateTxt, GBC);
              CustOrderIDLbl = new JLabel("Customer Order ID");
              CustOrderIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              CustOrderIDLbl.setFont(font);
              CustOrderIDLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 2;
              innertoppanel.add(CustOrderIDLbl, GBC);
              CustOrderIDTxt = new JTextField(20);
              CustOrderIDTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 2;
              innertoppanel.add(CustOrderIDTxt, GBC);
              return innertoppanel;
         public JPanel createInnerCenterPanel(){
              innercenterpanel = new JPanel(new GridBagLayout());
              innercenterpanel.setBackground(TxtfontColor);
              innercenterpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              ItemNumberLbl = new JLabel("Item Number");
              ItemNumberLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              ItemNumberLbl.setFont(font);
              ItemNumberLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 1;
              innercenterpanel.add(ItemNumberLbl, GBC);     
              ItemNumberTxt = new JTextField(20);
              GBC.gridx = 2;
              GBC.gridy = 1;
              innercenterpanel.add(ItemNumberTxt, GBC);
              UnitPriceLbl = new JLabel("Unit Price");
              UnitPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              UnitPriceLbl.setFont(font);
              UnitPriceLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 2;
              innercenterpanel.add(UnitPriceLbl, GBC);     
              UnitPriceTxt = new JTextField(20);
              //UnitPriceTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 2;
              innercenterpanel.add(UnitPriceTxt, GBC);
              QuantityReqLbl = new JLabel("Quantity Required");
              QuantityReqLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              QuantityReqLbl.setFont(font);
              QuantityReqLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 3;
              innercenterpanel.add(QuantityReqLbl, GBC);     
              QuantityReqTxt = new JTextField(20);
              //QuantityReqTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 3;
              innercenterpanel.add(QuantityReqTxt, GBC);
              TotPriceLbl = new JLabel("Total Price");
              TotPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              TotPriceLbl.setFont(font);
              TotPriceLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 4;
              innercenterpanel.add(TotPriceLbl, GBC);     
              TotPriceTxt = new JTextField(20);
              //TotPriceTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 4;
              innercenterpanel.add(TotPriceTxt, GBC);
              return innercenterpanel;
         public JPanel createInnerBottomPanel(){
              innerbottompanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
              innerbottompanel.setBackground(TxtfontColor);
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              GrandTotLbl = new JLabel("Grand Total");
              GrandTotLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              GrandTotLbl.setFont(font);
              GrandTotLbl.setForeground(LblfontColor);
              innerbottompanel.add(GrandTotLbl);
              innerbottompanel.add(Box.createHorizontalStrut(30));
              GrandTotTxt = new JTextField(20);
              innerbottompanel.add(GrandTotTxt);
              return innerbottompanel;
         public JPanel createInnerRightPanel(){
              innerrightpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
              innerrightpanel.setBackground(TxtfontColor);
              innerrightpanel.setLayout(new BoxLayout(navrightpanel, BoxLayout.Y_AXIS));
              innerrightpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              innerrightpanel.setLayout(new GridBagLayout());          
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              internalnextbtn = new JButton(createNextButtonIcon());
              GBC.gridx = 1;
              GBC.gridy = 1;
              internalnextbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        //getInnerFieldText(currentItem);
                        internalprevbtn.setEnabled(true);
                        if(currentItem < MaxItems){
                             ++CurrentRecord;
                             //readOrder();
                             //readInnerOrderRecord(CurrentRecord);
                             setInnerFieldText(currentItem);
                             System.out.println(CurrentRecord);//Checking RECORD_NUM
                        if(currentItem == MaxItems){
                             internalnextbtn.setEnabled(false);
              innerrightpanel.add(internalnextbtn, GBC);
              return innerrightpanel;
         public JPanel createInnerLeftPanel(){
              innerleftpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
              innerleftpanel.setBackground(TxtfontColor);
              innerleftpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              innerleftpanel.setForeground(Color.BLACK);
              innerleftpanel.setLayout(new GridBagLayout());          
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              internalprevbtn = new JButton(createPreviousButtonIcon());
              GBC.gridx = 1;
              GBC.gridy = 1;
              internalprevbtn.addActionListener(new ActionListener(){
                   public void  actionPerformed(ActionEvent evt){
                        //getInnerFieldText(currentItem);
                        internalnextbtn.setEnabled(true);
                        if(currentItem == 1){
                             internalprevbtn.setEnabled(false);
                        if(currentItem > 0){
                             --currentItem;
                             //readOrder();
                             setInnerFieldText(currentItem);
              innerleftpanel.add(internalprevbtn, GBC);
              return innerleftpanel;
         public JPanel createCustOrdDetailsButtons(){
              createbuttonpanel();
              buttonpanel.setBackground(TxtfontColor);
              externalprevbtn = new JButton(createPreviousButtonIcon());
              externalprevbtn.addActionListener(new ActionListener(){
                   public void  actionPerformed(ActionEvent evt){
                        getFieldText(CurrentRecord);
                        externalnextbtn.setEnabled(true);
                        if(CurrentRecord == 1){
                             externalprevbtn.setEnabled(false);
                        if(CurrentRecord > 0){
                             --CurrentRecord;
                             setFieldText(CurrentRecord);
                             System.out.println(CurrentRecord);//Checking RECORD_NUM
              buttonpanel.add(externalprevbtn);
              addrecordbtn = new JButton("Add Record", createAddButtonIcon());
              addrecordbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        try{
                             MaxRecord = readRecordNumber();
                             MaxRecord++;
                             writeRecordNumber(MaxRecord);
                             //--<BEGINNING>--Clear Fields-------------------------------------------------------//
                             CustIDTxt.setText("");
                             CustOrderIDTxt.setText(""+MaxRecord);
                             //Get today's date
                             Date todaydate = new Date();
                             OrderedDateTxt.setText(""+simpleDF.format(todaydate));
                             ItemNumberTxt.setText("");
                             UnitPriceTxt.setText("");
                             QuantityReqTxt.setText("");
                             TotPriceTxt.setText("");
                             GrandTotTxt.setText("");
                             //--<END>--Clear Fields-------------------------------------------------------------//
                             externalnextbtn.setEnabled(false);
                             externalprevbtn.setEnabled(true);
                             System.out.println(MaxRecord);
                        } catch(Exception ec){ec.printStackTrace();}
              buttonpanel.add(addrecordbtn);
              savebtn = new JButton("Save Data", createSaveButtonIcon());
              savebtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        setFieldText(CurrentRecord);
                        writeOrder();
                        writeRecordNumber(MaxRecord);
                        System.out.println(CurrentRecord);
                        System.out.println(MaxRecord);
              buttonpanel.add(savebtn);
              java.net.URL imageURL_AddRowIcon = CommonFeatures.class.getResource("Icons/edit_add.png");
              ImageIcon AddRowIcon = new ImageIcon(imageURL_AddRowIcon);
              additemreqbtn = new JButton("Add Item", AddRowIcon);
              additemreqbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        try{
                             //--<BEGINNING>--Clear Fields-------------------------------------------------------//
                             ItemNumberTxt.setText("");
                             UnitPriceTxt.setText("");
                             QuantityReqTxt.setText("");
                             TotPriceTxt.setText("");
                             //--<END>--Clear Fields-------------------------------------------------------------//
                             //CurrentRecord = MaxRecord;
                             currentItem++;
                             setInnerFieldText(currentItem);
                             internalnextbtn.setEnabled(false);
                             internalprevbtn.setEnabled(true);
                             System.out.println(MaxRecord);
                        } catch(Exception ec){ec.printStackTrace();}
              buttonpanel.add(additemreqbtn);
              externalnextbtn = new JButton(createNextButtonIcon());
              externalnextbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        getFieldText(CurrentRecord);
                        externalprevbtn.setEnabled(true);
                        if(CurrentRecord < MaxRecord){
                             ++CurrentRecord;
                             setFieldText(CurrentRecord);
                             System.out.println(CurrentRecord);//Checking RECORD_NUM
                        if(CurrentRecord == MaxRecord){
                             externalnextbtn.setEnabled(false);
              buttonpanel.add(externalnextbtn);
              return buttonpanel;
         //TODO
         public void setFieldText(int orderID){//TODO
              orderDetails[orderID].setCustID(Integer.parseInt(CustIDTxt.getText()));
              orderDetails[orderID].setCustOrderID(Integer.parseInt(CustOrderIDTxt.getText()));
              orderDetails[orderID].setOrderDate(OrderedDateTxt.getText());
              orderDetails[orderID].setInnerCustOrdObj(innerCustOrdObj);
              orderDetails[orderID].setMaxItems(MaxItems);
              setInnerFieldText(currentItem);
              orderDetails[orderID].setGrandTotal(Float.parseFloat(GrandTotTxt.getText()));
         public void setInnerFieldText(int currentItem){//TODO
              innerCustOrdObj[currentItem] = new InnerCustOrdObject();
              innerCustOrdObj[currentItem].setItemNumber(Integer.parseInt(ItemNumberTxt.getText()));
              innerCustOrdObj[currentItem].setUnitPrice(Float.parseFloat(UnitPriceTxt.getText()));
              innerCustOrdObj[currentItem].setQuantityRequired(Integer.parseInt(QuantityReqTxt.getText()));
              innerCustOrdObj[currentItem].setTotalPrice(Float.parseFloat(TotPriceTxt.getText()));
         public void getFieldText(int orderID){
              CustIDTxt.setText(Integer.toString(orderDetails[orderID].getCustID()));
              CustOrderIDTxt.setText(Integer.toString(orderDetails[orderID].getCustOrderID()));
              OrderedDateTxt.setText(""+orderDetails[orderID].getOrderDate());          
              currentItem = orderDetails[orderID].getMaxItems();
              System.err.println("currentItem" + currentItem);
              getInnerFieldText(currentItem);
              GrandTotTxt.setText(Float.toString(orderDetails[orderID].getGrandTotal()));
         public void getInnerFieldText(int currentItem){
              ItemNumberTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getItemNumber()));
              UnitPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getUnitPrice()));
              QuantityReqTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getQuantityRequired()));
              TotPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getTotalPrice()));
         public void writeOrder(){//TODO
              try {
                   objOut = new ObjectOutputStream(new FileOutputStream(OrderDetailsFile));
                   objOut.writeObject(orderDetails);
                   System.out.println("WORKING!");
                   objOut.flush();
                   objOut.close();
              } catch (IOException e) {
                   e.printStackTrace();
         public Object readOrder(){
              Object temporaryObj;
              try{
                   objIn = new ObjectInputStream(new FileInputStream(OrderDetailsFile));
                   temporaryObj = objIn.readObject();               
                   CustOrdObject[] blah = (CustOrdObject[]) temporaryObj;
                   System.out.println("Outer: "+blah[1].getCustID());
                   InnerCustOrdObject[] whee = blah[1].getInnerCustOrdObj();
                   System.out.println("Inner: "+whee[1].getItemNumber());
                   objIn.close();
                   System.out.println("Read Worky!");
                   return temporaryObj;
              }catch(Exception e){
                   e.printStackTrace();
                   System.out.println("Read No Worky!");
                   return null;
         public void writeRecordNumber(int MaxRecord){
              try{
                   objOut = new ObjectOutputStream(new FileOutputStream(OrdRecordNumStore));
                   objOut.writeObject(MaxRecord);
                   System.out.println("WORKING!");
                   objOut.flush();
                   objOut.close();
              }catch(Exception e){e.printStackTrace();}
         public int readRecordNumber() {
              try {
                   objIn = new ObjectInputStream(new FileInputStream(OrdRecordNumStore));
                   int temporaryObj = Integer.parseInt(objIn.readObject().toString());
                   objIn.close();
                   System.out.println("Read Number Worky!");
                   return temporaryObj;
              } catch (Exception e) {
                   e.printStackTrace();
                   System.out.println("Read Number No Worky!");
                   return -1;
    }Message was edited by:
    Kilik07
    Message was edited by:
    Kilik07

    ok i got reading to work to a certain extent... but the prob is i cnt seem to save my innerCustOrdObj proprly...when ever i look for a record using the gotorecordbtn, the outerobject, which is the orderDetails, seems to change but the innerCustOrdObj remains the same... heres the new code..
    public class CustomerOrderDetails extends CommonFeatures{
         //TODO
         private static int MAX_ORDERS = 200;
         private static int MAX_ORDERITEMS = 100;
         private static int MaxRecord;
         private static int CurrentRecord = 1;
         private static int currentItem;
         private static int MaxItems = 1;
         private static boolean FileExists, recFileExists;
         private static boolean RecordExists;
         private static CustOrdObject[] orderDetails = new CustOrdObject[MAX_ORDERS];
         private static InnerCustOrdObject[] innerCustOrdObj = new InnerCustOrdObject[MAX_ORDERITEMS];     
         private static File OrderDetailsFile = new File("CustOrdDetails.ser");
         private static File OrdRecordNumStore = new File("OrdRecordNumStore.txt");
         private static PrintWriter writeFile;
         private static BufferedReader readFile;
         private static ObjectOutputStream objOut;
         private static ObjectInputStream objIn;
         //Set format for date
         SimpleDateFormat simpleDF = new SimpleDateFormat("dd MM yyyy");
         //--<BEGINNING>--Declaring Interface Variables------------------------------------------//
         private JPanel innertoppanel, innercenterpanel, innerbottompanel, innerrightpanel, innerleftpanel;
         private JLabel CustIDLbl, CustOrderIDLbl, OrderedDateLbl, GrandTotLbl, ItemNumberLbl,UnitPriceLbl, QuantityReqLbl, TotPriceLbl;
         private JTextField CustIDTxt, CustOrderIDTxt, OrderedDateTxt, GrandTotTxt, ItemNumberTxt, UnitPriceTxt, QuantityReqTxt, TotPriceTxt;
         private JButton addrecordbtn, savebtn, externalprevbtn, externalnextbtn, internalprevbtn, internalnextbtn, gotorecordbtn, additemreqbtn;
         //--<END>--Declaring Interface Variables------------------------------------------------//
         public static void main(String[] args) {
              final CustomerOrderDetails COD = new CustomerOrderDetails();
              java.awt.EventQueue.invokeLater(new Runnable() {
                   public void run() {
                        try {
                             UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                             COD.createCustOrdDetailsScreen();
                        } catch (Exception eb) {
                             eb.printStackTrace();
         //--<BEGINNING>--Creating CustomerOrderDetails Screen---------------------------------------//
         public JFrame createCustOrdDetailsScreen() {
              createDefaultFrame();
              mainframe.setSize(800,500);
              createContainerPanel();
              containerpanel.add(createCustOrdDetailsTitle(), BorderLayout.NORTH);
              containerpanel.add(createCustOrdDetailsMainPanel(), BorderLayout.CENTER);
              //containerpanel.add(createCustOrdDetailsLeftNavButtons(), BorderLayout.WEST);
              //containerpanel.add(createCustOrdDetailsRightNavButtons(), BorderLayout.EAST);
              containerpanel.add(createCustOrdDetailsButtons(), BorderLayout.SOUTH);
              mainframe.setContentPane(containerpanel);
              mainframe.setLocationRelativeTo(null);
              mainframe.setVisible(true);
              //--<BEGINNING>--Checks to see whether CRecordNumberStore file exists-------------------------------//
              if (OrdRecordNumStore.exists() == true) {
                   recFileExists = true;
              }else {
                   recFileExists = false;
              if (recFileExists == true) {
                   MaxRecord = readRecordNumber();
                   CurrentRecord = MaxRecord;
                   //readOrder();
                   //readInnerOrderRecord(CurrentRecord);
                   System.out.println("Current Record " +CurrentRecord);
                   System.out.println("Max Record " +MaxRecord);
              }else{
                   MaxRecord = 1;
                   writeRecordNumber(MaxRecord);
                   CustOrderIDTxt.setText(""+MaxRecord);
                   System.out.println("Current Record " +CurrentRecord);
                   System.out.println("Max Record " +MaxRecord);
              //--<END>--Checks to see whether CRecordNumberStore file exists--------------------------------------//
              if(readOrder() != null){
                   orderDetails = (CustOrdObject[]) readOrder();
                   //CurrentRecord--;
                   //System.out.println("Current Rec Here"+CurrentRecord);
                   if(orderDetails[CurrentRecord] == null){
                        System.err.println("CustomerOrderObj 1 is null !!");
                   }else{
                        System.err.println("CustomerOrderObj 1 is  not null !!");
                   if(orderDetails[CurrentRecord].getInnerCustOrdObj() == null){
                        System.err.println("InnerCustomerOrderObj is null !!");
                   }else{
                        System.err.println("InnerCustomerOrderObj is  not null !!");
                   innerCustOrdObj = orderDetails[CurrentRecord].getInnerCustOrdObj();
                   MaxItems = orderDetails[CurrentRecord].getMaxItems();
                   if(CurrentRecord > 1 && CurrentRecord < MaxRecord){
                        externalnextbtn.setEnabled(true);
                        externalprevbtn.setEnabled(true);
                   if(CurrentRecord >= MaxRecord){
                        externalnextbtn.setEnabled(false);
                   getFieldText(CurrentRecord);
                   getInnerFieldText(MaxItems);
              }else{
                   orderDetails[CurrentRecord] = new CustOrdObject();
                   currentItem = 1;
              return mainframe;
         //--<END>--Creating CustomerOrderDetails Screen---------------------------------------------//
         public JPanel createCustOrdDetailsTitle(){
              createTitlePanel();
              titlepanel.setBackground(TxtfontColor);
              label.setText("- Customer Order Details -");
              labelpanel.setBackground(TxtfontColor);
              label.setForeground(Color.white);
              createbuttonpanel();
              buttonpanel.setBackground(TxtfontColor) ;
              buttonpanel.add(createReturnToMainMenuButton());
              titlepanel.add(labelpanel, BorderLayout.WEST);
              titlepanel.add(buttonpanel, BorderLayout.EAST);
              return titlepanel;
         public JPanel createCustOrdDetailsMainPanel(){
              createmainpanel();
              mainpanel.setBackground(TxtfontColor);
              mainpanel.setLayout(new BorderLayout());          
              mainpanel.setBorder(BorderFactory.createTitledBorder(""));
              mainpanel.add(createInnerTopPanel(), BorderLayout.NORTH);
              mainpanel.add(createInnerCenterPanel(), BorderLayout.CENTER);
              mainpanel.add(createInnerBottomPanel(), BorderLayout.SOUTH);
              mainpanel.add(createInnerRightPanel(), BorderLayout.EAST);
              mainpanel.add(createInnerLeftPanel(), BorderLayout.WEST);
              return mainpanel;
         public JPanel createInnerTopPanel(){
              innertoppanel = new JPanel(new GridBagLayout());
              innertoppanel.setBackground(TxtfontColor);
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              CustIDLbl = new JLabel("Customer ID");
              CustIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              CustIDLbl.setFont(font);
              CustIDLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 1;
              innertoppanel.add(CustIDLbl, GBC);     
              CustIDTxt = new JTextField(20);
              CustIDTxt.setEditable(true);
              GBC.gridx = 2;
              GBC.gridy = 1;
              innertoppanel.add(CustIDTxt, GBC);
              GBC.gridx = 3;
              GBC.gridy = 1;
              innertoppanel.add(Box.createHorizontalStrut(220), GBC);
              OrderedDateLbl = new JLabel("Order Date");
              OrderedDateLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              OrderedDateLbl.setFont(font);
              OrderedDateLbl.setForeground(LblfontColor);
              GBC.gridx = 4;
              GBC.gridy = 1;
              innertoppanel.add(OrderedDateLbl, GBC);     
              //Get today's date
              Date todaydate = new Date();
              OrderedDateTxt = new JTextField(simpleDF.format(todaydate), 20);
              OrderedDateTxt.setHorizontalAlignment(JTextField.CENTER);
              OrderedDateTxt.setEditable(false);
              GBC.gridx = 5;
              GBC.gridy = 1;
              innertoppanel.add(OrderedDateTxt, GBC);
              CustOrderIDLbl = new JLabel("Customer Order ID");
              CustOrderIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              CustOrderIDLbl.setFont(font);
              CustOrderIDLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 2;
              innertoppanel.add(CustOrderIDLbl, GBC);
              CustOrderIDTxt = new JTextField(20);
              //CustOrderIDTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 2;
              innertoppanel.add(CustOrderIDTxt, GBC);
              return innertoppanel;
         public JPanel createInnerCenterPanel(){
              innercenterpanel = new JPanel(new GridBagLayout());
              innercenterpanel.setBackground(TxtfontColor);
              innercenterpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              ItemNumberLbl = new JLabel("Item Number");
              ItemNumberLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              ItemNumberLbl.setFont(font);
              ItemNumberLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 1;
              innercenterpanel.add(ItemNumberLbl, GBC);     
              ItemNumberTxt = new JTextField(20);
              GBC.gridx = 2;
              GBC.gridy = 1;
              innercenterpanel.add(ItemNumberTxt, GBC);
              UnitPriceLbl = new JLabel("Unit Price");
              UnitPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              UnitPriceLbl.setFont(font);
              UnitPriceLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 2;
              innercenterpanel.add(UnitPriceLbl, GBC);     
              UnitPriceTxt = new JTextField(20);
              //UnitPriceTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 2;
              innercenterpanel.add(UnitPriceTxt, GBC);
              QuantityReqLbl = new JLabel("Quantity Required");
              QuantityReqLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              QuantityReqLbl.setFont(font);
              QuantityReqLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 3;
              innercenterpanel.add(QuantityReqLbl, GBC);     
              QuantityReqTxt = new JTextField(20);
              //QuantityReqTxt.setEditable(false);
              GBC.gridx = 2;
              GBC.gridy = 3;
              innercenterpanel.add(QuantityReqTxt, GBC);
              TotPriceLbl = new JLabel("Total Price");
              TotPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              TotPriceLbl.setFont(font);
              TotPriceLbl.setForeground(LblfontColor);
              GBC.gridx = 1;
              GBC.gridy = 4;
              innercenterpanel.add(TotPriceLbl, GBC);     
              TotPriceTxt = new JTextField(20);
              TotPriceTxt.setEditable(false);
              TotPriceTxt.addFocusListener(new FocusAdapter(){
                   public void focusGained(FocusEvent evt){
                        TotPriceTxt.setText(""+Integer.parseInt(UnitPriceTxt.getText())*Integer.parseInt(QuantityReqTxt.getText()));
              GBC.gridx = 2;
              GBC.gridy = 4;
              innercenterpanel.add(TotPriceTxt, GBC);
              return innercenterpanel;
         public JPanel createInnerBottomPanel(){
              innerbottompanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
              innerbottompanel.setBackground(TxtfontColor);
              //Setting Font Type and Size
              Font font = new Font("Arial", Font.BOLD, 11);
              GrandTotLbl = new JLabel("Grand Total");
              GrandTotLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              GrandTotLbl.setFont(font);
              GrandTotLbl.setForeground(LblfontColor);
              innerbottompanel.add(GrandTotLbl);
              innerbottompanel.add(Box.createHorizontalStrut(30));
              GrandTotTxt = new JTextField(20);
              innerbottompanel.add(GrandTotTxt);
              return innerbottompanel;
         public JPanel createInnerRightPanel(){
              innerrightpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
              innerrightpanel.setBackground(TxtfontColor);
              innerrightpanel.setLayout(new BoxLayout(navrightpanel, BoxLayout.Y_AXIS));
              innerrightpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              innerrightpanel.setLayout(new GridBagLayout());          
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              internalnextbtn = new JButton(createNextButtonIcon());
              GBC.gridx = 1;
              GBC.gridy = 1;
              internalnextbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        getInnerFieldText(currentItem);
                        internalprevbtn.setEnabled(true);
                        if(currentItem < MaxItems){
                             ++currentItem;
                             orderDetails[CurrentRecord].getInnerCustOrdObj();
                             setInnerFieldText(currentItem);
                             System.out.println("Current Item" + currentItem);
                        if(currentItem == MaxItems){
                             internalnextbtn.setEnabled(false);
              innerrightpanel.add(internalnextbtn, GBC);
              return innerrightpanel;
         public JPanel createInnerLeftPanel(){
              innerleftpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
              innerleftpanel.setBackground(TxtfontColor);
              innerleftpanel.setBorder(BorderFactory.createLoweredBevelBorder());
              innerleftpanel.setForeground(Color.BLACK);
              innerleftpanel.setLayout(new GridBagLayout());          
              GridBagConstraints GBC = new GridBagConstraints();
              GBC.fill = GridBagConstraints.HORIZONTAL;
              internalprevbtn = new JButton(createPreviousButtonIcon());
              GBC.gridx = 1;
              GBC.gridy = 1;
              internalprevbtn.addActionListener(new ActionListener(){
                   public void  actionPerformed(ActionEvent evt){
                        getInnerFieldText(currentItem);
                        internalnextbtn.setEnabled(true);
                        if(currentItem == 1){
                             internalprevbtn.setEnabled(false);
                        if(currentItem > 0){
                             --currentItem;
                             orderDetails[CurrentRecord].getInnerCustOrdObj();
                             setInnerFieldText(currentItem);
                             System.out.println("Current Item" + currentItem);
              innerleftpanel.add(internalprevbtn, GBC);
              return innerleftpanel;
         public JPanel createCustOrdDetailsButtons(){
              createbuttonpanel();
              buttonpanel.setBackground(TxtfontColor);
              externalprevbtn = new JButton(createPreviousButtonIcon());
              externalprevbtn.addActionListener(new ActionListener(){
                   public void  actionPerformed(ActionEvent evt){
                        getFieldText(CurrentRecord);
                        externalnextbtn.setEnabled(true);
                        if(CurrentRecord == 1){
                             externalprevbtn.setEnabled(false);
                        if(CurrentRecord > 0){
                             --CurrentRecord;
                             setFieldText(CurrentRecord);
                             System.out.println("Current Record " + CurrentRecord);//Checking RECORD_NUM
              buttonpanel.add(externalprevbtn);
              addrecordbtn = new JButton("Add Record", createAddButtonIcon());
              addrecordbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        try{
                             MaxRecord = readRecordNumber();
                             MaxRecord++;
                             CurrentRecord = MaxRecord;
                             orderDetails[CurrentRecord] = new CustOrdObject();
                             writeRecordNumber(MaxRecord);
                             MaxItems = 1;
                             innerCustOrdObj[MaxItems] = new InnerCustOrdObject();
                             //--<BEGINNING>--Clear Fields-------------------------------------------------------//
                             CustIDTxt.setText("");
                             CustOrderIDTxt.setText(""+MaxRecord);
                             //Get today's date
                             Date todaydate = new Date();
                             OrderedDateTxt.setText(""+simpleDF.format(todaydate));
                             ItemNumberTxt.setText("");
                             UnitPriceTxt.setText("");
                             QuantityReqTxt.setText("");
                             TotPriceTxt.setText("");
                             GrandTotTxt.setText("");
                             //--<END>--Clear Fields-------------------------------------------------------------//
                             externalnextbtn.setEnabled(false);
                             externalprevbtn.setEnabled(true);
                             System.out.println(MaxRecord);
                        } catch(Exception ec){ec.printStackTrace();}
              buttonpanel.add(addrecordbtn);
              savebtn = new JButton("Save Data", createSaveButtonIcon());
              savebtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        setFieldText(CurrentRecord);
                        setInnerFieldText(MaxItems);
                        writeOrder();
                        writeRecordNumber(MaxRecord);
                        System.out.println(CurrentRecord);
                        System.out.println(MaxRecord);
              buttonpanel.add(savebtn);
              java.net.URL imageURL_AddRowIcon = CommonFeatures.class.getResource("Icons/edit_add.png");
              ImageIcon AddRowIcon = new ImageIcon(imageURL_AddRowIcon);
              additemreqbtn = new JButton("Add Item", AddRowIcon);
              additemreqbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        try{
                             //--<BEGINNING>--Clear Fields-------------------------------------------------------//
                             ItemNumberTxt.setText("");
                             UnitPriceTxt.setText("");
                             QuantityReqTxt.setText("");
                             TotPriceTxt.setText("");
                             //--<END>--Clear Fields-------------------------------------------------------------//
                             //CurrentRecord = MaxRecord;
                             MaxItems++;
                             innerCustOrdObj[MaxItems] = new InnerCustOrdObject();
                             System.out.println("Max Items "+MaxItems);
                             currentItem = MaxItems;
                             orderDetails[CurrentRecord].setMaxItems(MaxItems);
                             ///setInnerFieldText(currentItem);
                             internalnextbtn.setEnabled(false);
                             internalprevbtn.setEnabled(true);
                        } catch(Exception ec){ec.printStackTrace();}
              buttonpanel.add(additemreqbtn);
              externalnextbtn = new JButton(createNextButtonIcon());
              externalnextbtn.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        getFieldText(CurrentRecord);
                        externalprevbtn.setEnabled(true);
                        if(CurrentRecord < MaxRecord){
                             ++CurrentRecord;
                             setFieldText(CurrentRecord);
                             System.out.println(CurrentRecord);//Checking RECORD_NUM
                        if(CurrentRecord == MaxRecord){
                             externalnextbtn.setEnabled(false);
              buttonpanel.add(externalnextbtn);
              gotorecordbtn = new JButton("Go To Record", createGotoButtonIcon());
              gotorecordbtn.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent evt){
                         * The text from the GotorecordTxt textfield will be taken and assigned
                         * to a temporary integer variable called Find. 
                        int Find = Integer.parseInt(CustOrderIDTxt.getText());
                        for(int j=1; j <= MaxRecord; j++){
                              * Using a for loop, each record can be read using the readCustRecord
                              * method.
                             getFieldText(j);
                              * An if condition is utilized to check whether the temporary stored variable, Find,
                              * matches a field in a record. If this record is found, then using the RecordExists
                              * which was declared at the top, either a true or false statement can be assigned
                              * If the record exists, then a true statement will be assigned, if not a false
                              * statement will be assigned.
                             if(orderDetails[j].getCustOrderID() == Find){
                                  RecordExists = true;
                                  break;
                             }else{
                                  RecordExists = false;
                        if(RecordExists == false){
                              * If the RecordExists is assigned a false statement, then a message will be
                              * displayed to show that the record does not exist.
                             JOptionPane.showMessageDialog(null, "Record Does Not Exist!", "Error Message", JOptionPane.ERROR_MESSAGE, createErrorIcon());
                        }else{
                             getFieldText(Find);
              buttonpanel.add(gotorecordbtn);
              return buttonpanel;
         //TODO
         public void setFieldText(int orderID){//TODO
              orderDetails[orderID].setCustID(Integer.parseInt(CustIDTxt.getText()));
              orderDetails[orderID].setCustOrderID(Integer.parseInt(CustOrderIDTxt.getText()));
              orderDetails[orderID].setOrderDate(OrderedDateTxt.getText());
              orderDetails[orderID].setInnerCustOrdObj(innerCustOrdObj);
              orderDetails[orderID].setMaxItems(MaxItems);
              setInnerFieldText(currentItem);
              orderDetails[orderID].setGrandTotal(Float.parseFloat(GrandTotTxt.getText()));
         public void setInnerFieldText(int currentItem){//TODO
              innerCustOrdObj[currentItem] = new InnerCustOrdObject();
              innerCustOrdObj[currentItem].setMaxItems(MaxItems);
              innerCustOrdObj[currentItem].setItemNumber(Integer.parseInt(ItemNumberTxt.getText()));
              innerCustOrdObj[currentItem].setUnitPrice(Float.parseFloat(UnitPriceTxt.getText()));
              innerCustOrdObj[currentItem].setQuantityRequired(Integer.parseInt(QuantityReqTxt.getText()));
              innerCustOrdObj[currentItem].setTotalPrice(Float.parseFloat(TotPriceTxt.getText()));
         public void getFieldText(int orderID){
              CustIDTxt.setText(Integer.toString(orderDetails[orderID].getCustID()));
              CustOrderIDTxt.setText(Integer.toString(orderDetails[orderID].getCustOrderID()));
              OrderedDateTxt.setText(""+orderDetails[orderID].getOrderDate());          
              currentItem = orderDetails[orderID].getMaxItems();
              orderDetails[orderID].getInnerCustOrdObj();
              System.err.println("currentItem" + currentItem);
              //getInnerFieldText(currentItem);
              GrandTotTxt.setText(Float.toString(orderDetails[orderID].getGrandTotal()));
         public void getInnerFieldText(int currentItem){
              ItemNumberTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getItemNumber()));
              UnitPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getUnitPrice()));
              QuantityReqTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getQuantityRequired()));
              TotPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getTotalPrice()));
         public void writeOrder(){//TODO
              try {
                   objOut = new ObjectOutputStream(new FileOutputStream(OrderDetailsFile));
                   objOut.writeObject(orderDetails);
                   System.out.println("WORKING!");
                   objOut.flush();
                   objOut.close();
              } catch (IOException e) {
                   e.printStackTrace();
         public Object readOrder(){
              Object temporaryObj;
              try{
                   objIn = new ObjectInputStream(new FileInputStream(OrderDetailsFile));
                   temporaryObj = objIn.readObject();               
                   CustOrdObject[] blah = (CustOrdObject[]) temporaryObj;
                   /*               System.out.println("Outer: "+blah[1].getCustID());
                   InnerCustOrdObject[] whee = blah[1].getInnerCustOrdObj();
                   System.out.println("Inner: "+whee[1].getItemNumber());*/
                   objIn.close();
                   System.out.println("Read Worky!");
                   return temporaryObj;
              }catch(Exception e){
                   e.printStackTrace();
                   System.out.println("Read No Worky!");
                   return null;
         public void writeRecordNumber(int MaxRecord){
              try{
                   objOut = new ObjectOutputStream(new FileOutputStream(OrdRecordNumStore));
                   objOut.writeObject(MaxRecord);
                   System.out.println("WORKING!");
                   objOut.flush();
                   objOut.close();
              }catch(Exception e){e.printStackTrace();}
         public int readRecordNumber() {
              try {
                   objIn = new ObjectInputStream(new FileInputStream(OrdRecordNumStore));
                   int temporaryObj = Integer.parseInt(objIn.readObject().toString());
                   objIn.close();
                   System.out.println("Read Number Worky!");
                   return temporaryObj;
              } catch (Exception e) {
                   e.printStackTrace();
                   System.out.println("Read Number No Worky!");
                   return -1;
    }Message was edited by:
    Kilik07

  • What is the problem with the code?

    Hello, the following is a segment of code that I have written recently:
            IF DATA+1(5) <> TEXT-035.
              CATCH SYSTEM-EXCEPTIONS WEIRD_ERROR = 4
                                     OTHERS = 8.
                END CATCH.
              ENDIF.
    When I tried to compile the code, it says:
    Unable to interpret "SYSTEM-EXCEPTIONS". Possible causes: Incorrect spelling or comma error.          
    May I know where is the problem with this code? Thanks a lot!
    Regards,
    Anyi

    Here is a list of the system exceptions.
    Alphabetical List of Catchable Runtime Errors
    ,,ADDF_INT_OVERFLOW
    Overflow in addition with type I ( ADD ... UNTIL / ADD ... FROM ... TO)
    ,,ASSIGN_CASTING_ILLEGAL_CAST
    The offset and type of the source field and the target type do not match exactly in the components that are strings, tables, or references.
    ,,ASSIGN_CASTING_UNKNOWN_TYPE
    The type specified at runtime is unknown.
    ,,BCD_FIELD_OVERFLOW
    Overflow in conversion or arithmetic operations (type P with specified length)
    ,,BCD_OVERFLOW
    Overflow in conversion or arithmetic operation (type P)
    ,,BCD_ZERODIVIDE
    Division by 0 (type P)
    ,,CALL_METHOD_NOT_IMPLEMENTED
    Call of a non-implemented interface method
    ,,COMPUTE_ACOS_DOMAIN
    Invalid call of mathematical function ACOS
    ,,COMPUTE_ASIN_DOMAIN
    Invalid call of mathematical function ASIN
    ,,COMPUTE_ATAN_DOMAIN
    Invalid call of mathematical function ATAN
    ,,COMPUTE_BCD_OVERFLOW
    Overflow in arithmetic operation (all operands type P)
    ,,COMPUTE_COSH_DOMAIN
    Invalid call of mathematical function COSH
    ,,COMPUTE_COSH_OVERFLOW
    Overflow in mathematical function COSH
    ,,COMPUTE_COS_DOMAIN
    Invalid call of mathematical function COS
    ,,COMPUTE_COS_LOSS
    Result of COS function is inexact
    ,,COMPUTE_EXP_DOMAIN
    Invalid call of mathematical function EXP
    ,,COMPUTE_EXP_RANGE
    Over- or underflow in mathematical function EXP
    ,,COMPUTE_FLOAT_DIV_OVERFLOW
    Overflow in division (type F)
    ,,COMPUTE_FLOAT_MINUS_OVERFLOW
    Overflow in subtraction (type F)
    ,,COMPUTE_FLOAT_PLUS_OVERFLOW
    Overflow in addition (type F)
    ,,COMPUTE_FLOAT_TIMES_OVERFLOW
    Overflow in multiplication (type F)
    ,,COMPUTE_FLOAT_ZERODIVIDE
    Division by 0 (type F)
    ,,COMPUTE_INT_ABS_OVERFLOW
    Integer overflow when calculating the absolute value
    ,,COMPUTE_INT_DIV_OVERFLOW
    Integer overflow in division
    ,,COMPUTE_INT_MINUS_OVERFLOW
    Integer overflow in subtraction
    ,,COMPUTE_INT_PLUS_OVERFLOW
    Integer overflow in addition
    ,,COMPUTE_INT_TIMES_OVERFLOW
    Integer overflow in multiplication
    ,,COMPUTE_INT_ZERODIVIDE
    Division by 0 (type I)
    ,,COMPUTE_LOG10_ERROR
    Invalid call of the mathematical function LOG10
    ,,COMPUTE_LOG_ERROR
    Invalid call of the mathematical function LOG
    ,,COMPUTE_MATH_DOMAIN
    Invalid call of a mathematical function
    ,,COMPUTE_MATH_ERROR
    Error executing a mathematical function
    ,,COMPUTE_MATH_LOSS
    Result of a mathematical function is inexact
    ,,COMPUTE_MATH_OVERFLOW
    Overflow of a mathematical function
    ,,COMPUTE_MATH_UNDERFLOW
    Underflow in a mathematical function
    ,,COMPUTE_POW_DOMAIN
    Invalid argument when raising powers
    ,,COMPUTE_POW_RANGE
    Over- or underflow when raising powers
    ,,COMPUTE_SINH_DOMAIN
    Invalid call of the mathematical function SINH
    ,,COMPUTE_SINH_OVERFLOW
    Overflow in the mathematical function SINH
    ,,COMPUTE_SIN_DOMAIN
    Invalid call of the mathematical function SIN
    ,,COMPUTE_SIN_LOSS
    Result of the function SIN is inexact
    ,,COMPUTE_SQRT_DOMAIN
    Invalid call of the mathematical function SQRT
    ,,COMPUTE_TANH_DOMAIN
    Invalid call of the mathematical function TANH
    ,,COMPUTE_TAN_DOMAIN
    Invalid call of the mathematical function TAN
    ,,COMPUTE_TAN_LOSS
    Result of the function TAN is inexact
    ,,CONNE_IMPORT_WRONG_COMP_LENG
    Import error: A component in a structured type in the dataset has an incorrect length
    ,,CONNE_IMPORT_WRONG_COMP_TYPE
    Import error: A component of a structured type in the dataset has an incorrect length
    ,,CONNE_IMPORT_WRONG_FIELD_LENG
    Import error: A field in the dataset has an incorrect length
    ,,CONNE_IMPORT_WRONG_FIELD_TYPE
    Import error: A field in a dataset has the wrong type
    ,,CONNE_IMPORT_OBJECT_TYPE
    Import error: Type conflict between simple and structured data types
    ,,CONNE_IMPORT_WRONG_STRUCTURE
    Import error: Type conflict between structured objects
    ,,CONVT_HEX_CONFLICT
    Conversion conflict (Type X)
    ,,CONVT_NO_NUMBER
    Value for conversion cannot be interpreted as a number
    ,,CONVT_OVERFLOW
    Overflow in conversion (all types except type P)
    ,,CREATE_DATA_NOT_ALLOWED_TYPE
    The statement CREATE DATA cannot be executed with a generic type.
    ,,CREATE_DATA_UNKNOWN_TYPE
    The statement CREATE DATA cannot be executed with an unknown type.
    ,,CREATE_OBJECT_CLASS_ABSTRACT
    Attempt to instantiate an abstract class.
    ,,CREATE_OBJECT_CLASS_NOT_FOUND
    The class specified with a dynamic CREATE OBJECT was not found.
    ,,CREATE_OBJECT_CREATE_PRIVATE
    Attempt to create an object of a class defined as 'CREATE PRIVATE'.
    ,,CREATE_OBJECT_CREATE_PROTECTED
    Attempt to create an object of a class defined as 'CREATE PROTECTED'.
    ,,DATA_LENGTH_NEGATIVE
    Invalid subfield access: Negative length
    ,,DATA_LENGTH_0
    Invalid subfield access: Length 0
    ,,DATA_LENGTH_TOO_LARGE
    Invalid subfield access: Length too large
    ,,DATA_OFFSET_NEGATIVE
    Invalid subfield access: Negative offset
    ,,DATA_OFFSET_TOO_LARGE
    Invalid subfield access: Offset too large
    ,,DATA_OFFSET_LENGTH_TOO_LARGE
    Invalid subfield access: Offset + length too large
    ,,DATA_OFFSET_LENGTH_NOT_ALLOWED
    Invalid subfield access: Type not appropriate
    ,,DATASET_CANT_CLOSE
    Unable to close file. There may be no space left in the file system
    ,,DATASET_CANT_OPEN
    Unable to open file
    ,,DATASET_NO_PIPE
    The FILTER addition to the OPEN DATASET statement is not supported on the current operating system
    ,,DATASET_READ_ERROR
    Error reading a file
    ,,DATASET_TOO_MANY_FILES
    Maximum number of open files exceeded
    ,,DATASET_WRITE_ERROR
    Error writing to a file
    ,,DYN_CALL_METH_CLASSCONSTRUCTOR
    Attempt to call the class constructor
    ,,DYN_CALL_METH_CLASS_ABSTRACT
    Attempt to call an abstract method
    ,,DYN_CALL_METH_CLASS_NOT_FOUND
    Attempt to call a method of a non-existent class
    ,,DYN_CALL_METH_CONSTRUCTOR
    Attempt to call the instance constructor
    ,,DYN_CALL_METH_EXCP_NOT_FOUND
    Attempt to catch an unknown exception
    ,,DYN_CALL_METH_NOT_FOUND
    Attempt to call an unknown method
    ,,DYN_CALL_METH_NOT_IMPLEMENTED
    Attempt to call a method that has not been implemented yet
    ,,DYN_CALL_METH_NO_CLASS_METHOD
    Attempt to call an instance method via a class
    Attempt to pass a parameter with an incorrect parameter type
    ,,DYN_CALL_METH_PARAM_LITL_MOVE
    Attempt to pass a constant actual parameter to a formal EXPORTING, CHANGING or RETURNING parameter
    ,,DYN_CALL_METH_PARAM_MISSING
    An obligatory parameter was not supplied.
    ,,DYN_CALL_METH_PARAM_NOT_FOUND
    Attempt to pass an unknown parameter
    ,,DYN_CALL_METH_PARAM_TAB_TYPE
    Attempt to pass a parameter with an incorrect table type
    ,,DYN_CALL_METH_PARAM_TYPE
    Attempt to pass a parameter with an incorrect type
    ,,DYN_CALL_METH_PARREF_INITIAL
    An initial data reference was passed for an mandatory parameter.
    ,,DYN_CALL_METH_PRIVATE
    Attempt to call a private method from outside
    ,,DYN_CALL_METH_PROTECTED
    Attempt to call a protected method from outside
    ,,DYN_CALL_METH_REF_IS_INITIAL
    Attempt to call a method with an initial reference
    ,,EXPORT_BUFFER_NO_MEMORY
    The EXPORT data cluster is too large for the application buffer
    ,,EXPORT_DATASET_CANNOT_OPEN
    The IMPORT/EXPORT statement could not open the file
    ,,EXPORT_DATASET_WRITE_ERROR
    The EXPORT statement could not write to the file
    ,,GENERATE_SUBPOOL_DIR_FULL
    The system cannot generate any more temporary subroutine pools
    ,,IMPORT_ALIGNMENT_MISMATCH
    Import error: Same sequence of components, but with type conflict or different alignment in structured data types
    ,,IMPORT_TYPE_MISMATCH
    Import error: Only with IMPORT...FROM MEMORY | FROM SHARED BUFFER...
    ,,MOVE_CAST_ERROR
    Type conflict when assigning between object and interface references (only MOVE...?TO... or operator ?=)
    ,,OPEN_DATASET_NO_AUTHORITY
    No authorizatino to access the file
    ,,OPEN_PIPE_NO_AUTHORITY
    No authorization to access the file (OPEN DATASET...FILTER...).
    ,,PERFORM_PROGRAM_NAME_TOO_LONG
    Invalid program name with PERFORM statement
    ,,RMC_COMMUNICATION_FAILURE
    Communication error with Remote Method Call
    ,,RMC_INVALID_STATUS
    Status error with Remote Method Call
    ,,RMC_SYSTEM_FAILURE
    System error with Remote Method Call
    ,,STRING_LENGTH_NEGATIVE
    Invalid access with negative length to a string
    ,,STRING_LENGTH_TOO_LARGE
    Invalid access to a string (length too large)
    ,,STRING_OFFSET_NEGATIVE
    Invalid access with negative offset to a string
    ,,STRING_OFFSET_TOO_LARGE
    Invalid access to a string (offset too large)
    ,,STRING_OFFSET_LENGTH_TOO_LARGE
    Invalid access to a string (offset + length too large)
    ,,TEXTENV_CODEPAGE_NOT_ALLOWED
    Character set is not released in the system (SET LOCALE...)
    ,,TEXTENV_INVALID
    Error setting the text environment (SET LOCALE...)
    ,,TEXTENV_KEY_INVALID
    With SET LOCALE...: Value of LANGUAGE, COUNTRY or MODIFIER that is not allowed in the system.
    ,,TEXTENV_LANGUAGE_NOT_ALLOWED
    With SET LOCALE...: Invalid value of the LANGUAGE addition.
    What version of SAP are you on?   If on a newer version you may be able to create your own exception class.
    Regards,
    Rich Heilman

  • The problems with Logic (as I see them)

    Hello Everyone,
    Please keep in mind that I am writing this with the intention of expressing my frustrations, and what I feel would make Logic a better program. I realize not everyone will agree with the importance of what I say, but I am a firm believer of HAVING THE OPTIONS. Let the users choose what works for them and how they can best accomplish the tasks that they need to with their individual workflow.
    That being said, here is my list of Logic's faults and why I often call Logic "Illogic".
    General:
    * Logic should have a feature to automatically save your song every X number of minutes. Final Cut Pro does this, why doesn't Logic? It should prompt you "Logic can automatically save your project if you save it" (assuming the current file is 'autoload') to remind users that they should create a project name and save their work.
    * There should be a preference option for all windows to open as 'float'. Once upon a time holding option while double clicking parts would open them as a float (though having to hold down option every time in my opinion is an inconvenience, because I personally ALWAYS want my windows open as a float), however.. now in 7.2 that does not seem to work anymore. So, theoretically after you set your prefence to 'always float', then the when you hold option or control and click on a particular window, it will bring that window to the foreground...
    * The loop region at the top of the screen is larger than the time-line ruler tab. This is the #1 annoying thing about logic. so many times, I click on an area of the ruler tab to start playing at a specific section.. and somehow I ACCIDENTALLY click on the loop area... If I could ask for ANYTHING it would be that there is an option to disable LOOPING turning on and off from clicking up there. My 2nd request would be that the ruler tab be re-sizeable so that it can be larger than the loop area. This is especially the case for the matrix window where it default opens up to a sizing where the actual time line is so tiny, and the loop region is HUGE.... Every time I open a matrix window I have to resize this and again the loop area is 2x as big as the timeline area, so I end up wasting screen space just to avoid the annoying loop feature being trued on. My suggestion is, require that the loop button on the transport be the only way to turn on the loop feature (other than key commands), and only when it's turned on can loop points to be set. Why is the loop area so big anyway?!?!
    * Logic should offer a TALK BACK MIC button which will utilize the built-in apple microphone or iSight microphone and allow that to be sent to the audio interface. This would be an extremely useful feature for studio recording setups.
    * Starting logic takes approximately 5 minutes for me. It says "scanning exs24 instruments" for the majority of the time, and I admit my sample library is huge. however, my sample library has not changed in over a year. Why does logic have to continuously scan it??? Can it not make a reference of how many files, compare and if its larger-- then scan???
    Song Loading:
    * When audio files are not found during loading a song, it asks you the first time what you want to do "search", "manual", and "skip"... if you click "skip", and then it finds another missing file, it no longer presents you with the "SKIP" option.. but forces you to either search or skip all.. Let's say you have a project that used 5 audio files that are all missing because you had them on a different hard drive, but have copied the data somewhere else. The first two files it asks for you don't need.. but you know where the 3rd file is.. So your plan is to skip the first two files and then click manually for the 3rd.. but oh.. YOU CAN'T DO THAT! You have to find your first 2 files if you want to even have the option to locate your 3rd file... Unless you are planning to locate the files within the audio window-- but still, Logic should not be so unfriendly.
    Further, If you choose "manual", and what you're looking for isn't where you thought it was-- You realize you actually want to search for it.. So you click cancel and guess what.. It assumes you want to skip it, and so you either have to reload your project again, or deal with this in the audio window. Bottom line is this window should always have "Search", "Manual", "Skip", and "Skip All".
    * When you open another project, Logic DUMPS all of the audio instrument data in memory. This is one of the worst things about logic. If you are working between multiple files-- such as when scoring a film, and you are using different files for different cues, then this becomes a complete nightmare and a waste of your time. Logic should be assessing "What instruments are in common between these two projects"... And utilizing all audio instruments to the best of the machine's memory capacity. There is no reason for Logic to behave like this.. I've had to revert back to previous versions of the same song because some data was different, and I am just trying to visually compare various settings one from the other.. Just clicking from one project's window to the other requires me to have to wait 3-4 minutes while Logic loads all these audio instruments (WHICH ARE IDENTICAL IN BOTH PROJECTS BY THE WAY!!!).. This is just incredibly dumb, and creatively stifling.
    * BUG * -- Mind you, if you have two projects open, and you close one.. Logic begins loading all the audio instruments of the remaining project.. If you close that project as it's loading audio instruments, Logic will crash.
    Matrix Stuff:
    * BUG * If you have a part with lots of notes, and you begin to make a selection and scroll horizontally through all the content until then entire part is covered in the selection... After you release the mouse button and make this selection, quite often many random notes are unselected. This can be demonstrated by watching the following quicktime move:
    http://www.collinatorstudios.com/video/logicbug.mov
    * When you select a single note in the matrix window, it sounds.. This is a GREAT feature... However, when you make a selection of multiple of notes, they all sound at the same time.. This is just plain dumb. It once blew up my speakers... There is NO reason why a multiple selection would need to sound.. It's just dumb.. bad for your speakers, bad for your ears. The rule should be, if selection box = yes, then sound = no... else, sound = yes.
    * When viewing the matrix window while recording, all note events disappear until after recording stops. This is highly annoying (and illogical) as it causes confusion if you are relying on watching the note events in that part to know where you are supposed to come in.
    * The grid cannot be set to divisions other than 2 or 3. Musicians use 5 and 7!!! And also, can logic please offer an option to display the grid as NOTE symbols... It is much more musician friendly to see a 16th note with a 3 over it than "24". 24 means nothing to me as a musician.
    * Quantizing should allow custom input for tuplets.. So that users can quantize odd figures such as 13:4 for example.
    * If you move the song locator to a specific time location in the arrange window, and then double click a part to open it in the matrix window, the window is not opened to the locator's position. Thus causing annoyance and confusion as far as what the user is even looking at.
    * During horizontal scrolling of the window, the locator temporarily disappears, making it difficult to find where the locator is-- which usually is a marker for us to know what we are trying to find-- ESPECIALLY WHEN YOU OPEN A WINDOW AND IT'S NOT EVEN DISPLAYING THE SONG LOCATOR'S POSITION!!!
    * If you have two parts on the same arrange track, adjacent to each other and you enter the matrix window of the first part.. (assuming the link/chain icon is lit) When you scroll to the end of the note data, logic automatically takes you to the next part... The problem with this as it is, is that it does not take you to the FIRST note event of the text part, but rather continues to align the song locater with where ever it previously was (so you end up viewing somewhere further down in the next part).. To clarify, say you have a part what begins at MM-7 and ends at MM-14, the 2nd part begins at MM-15 and ends at MM-22.. If you begin scrolling the song locator past measure 15, then suddenly you see measure 22. When you really should be seeing measure 15. This is confusing and weird.
    * Every time you enter the matrix window of a part, the chain/link button is on. For me, this is incredibly annoying. There should be a way to set this so that the button's default is OFF...
    * When you move the mouse around the matrix window, whatever pitch corresponds to the vertical location of the mouse--- that particular key of the piano keyboard on the left side of the window should highlight so you could clearly see what note you are hovering over.. Logic tries to help with this by offering things like contrast options for C D E, but this clearly would be much more helpful.
    * With the velocity tool you can (MOST OFTEN ON ACCIDENT) double click on empty space in the window and cause all note events in all parts to appear on the screen-- Yet once you do this, you can't double click on a particular part's note to only display that part again. You have to switch to the arrow tool to do this. This is inconsistent and ILLOGICAL...
    ON A SIDE NOTE: PLEASE ENABLE A FUNCTION TO DISABLE THIS "ALL NOTES OF ALL PARTS APPEAR" when double clicking on empty space feature! I want NOTHING to happen when I double click within the matrix window... Make it a button within the window or just an option in the drop down menu only. * BY THE WAY * When you DO double click the background of the matrix window and multiple parts appear.. If you move notes of one part to match it up with other, it is incredibly slow. there is a 1-2 second pause each time you move a note move.. My g5 fan goes on each time I do this.. I'm sorry, there shouldn't be anything too CPU intensive to accomplish this simple task!!! I am only viewing 2 parts at the same time and it's slowing down my cpu...
    * Occasionally when I adjust note lengths, I accidentally double click on an actual note.. This opens the event list editor, and there is an intermittent bug where this note sounds-- and for some reason when the event list opens, the note sounds on top of itself a million times, so the result is a super loud flanged note which again, almost blows up my speakers and hurts my ears... PERSONALLY, I would like an option that DISABLES the note event list from opening by double clicking. Preferences currently has "double clicking a midi region opens: <selectable>"--- why not also have "double clicking a NOTE in matrix window does: <selectable>"-- and please allow "DO NOTHING" to be one of the options.
    * Why does the finger tool only change the end position of the note event??? Should this not be replaced with the bracket tool which appears automatically when using the arrow tool on closely zoomed in notes? This finger tool seems like an outdated old logic feature which has been replaced and improved upon. What would be nice is to have this bracket tool where we can be assured we are altering note start and end positions without moving things.
    * In the hyper-draw >> note velocity section--- This is highly annoying to work with... It's far from user friendly. first of all, to move a note's velocity position, you have to click on the "ball".. if you click on the line, it does nothing.. Because the ball is so small to begin with, quite often the user is going to miss the ball and somehow begin to "START LINE"-- Which is weird because it's activated by holding the mouse button down briefly. There really should be a "line tool" for this, because "START LINE" is too easily accidentally activated-- this is frustrating for the user. Most important though, these 'velocity markings' should be adjustable by clicking on the line as well-- not just the ball.. there should be a 2-3% area around each ball/line which logic will recognize as part of the ball/line so that it can easily be moved. I also feel that there should be some specific features for this section, such as a way to select multiple note velocities and apply a random pattern to them, or apply a logarithmic curve to the line tool. Yes, you can accomplish this stuff somewhat with the transform tool-- but this way would be more user friendly, and allow a lot more creative flow.
    Event list/Tempo list:
    * When one event is selected, by moving down X number, holding shift+clicking SHOULD select all events between those two points. However, the shift key for some reason acts as the OPTION key does in the finder-- (meaning it will only add one additional selection at a time).. This is highly inconsistent with the actual behavior of a Mac... Open a finder window and hold shift and click on items that are not vertically next to each other and a group is selected... Now do it in logic, and it causes GREAT frustration and annoyance. What happens if you have a million note events that you want to erase? You have to go page by page and click with shift on each one?? Or drag a selection and wait for logic to scroll you to where you want to go?????????? No thanks.
    Arrange stuff:
    * "REGIONAL CONTENT" (meaning the visual representation of note events) does not accurately depict the event data as note lengths cannot be visually identified. Everything shows up as a generic quarter note... My #1 suggestion is that regional content should be customizable so that you can view it in a miniature matrix data style. The biggest problem for me is that I cannot see where my notes end-- I can only see where they start, this makes it very difficult to identify what I am looking at.
    * Track automation data should only be inputable by the pencil tool. I cannot mention how many times automation data has accidentally altered when using the arrow tool. The pencil tool should allow you to raise and lower the lines reflecting automation data... What is the point using the pencil tool for automation if it's only function is to create "points" yet you can also create points with the arrow tool..??? Pencil tool should act as the arrow tool does in the sense that it raises or lowers automation data.
    * Recording preferences do not offer the option to automatically merge new part with existing part when a region is NOT selected. How annoying is it to have to select a part every time you want to record something just so it will be included in that original part!
    * Ruler at the top of the screen should also give an option for tuplets. 5, 7, etc.
    * When in record mode, if you click on the ruler to another time position, all audio instruments cut out and it takes approximately 3-4 seconds before tracks begin playing audio. This becomes very annoying if you are trying to do a pick up and want to just start 1 measure before hand.
    * There should be a way to EASILY (without having to cable two tracks together in the environment) temporarily link multiple tracks together so that automation data will be duplicated. So theoretically you can link 3-4 tracks together, and by adding automation data to one, you are adding it to all 4.
    * If a part is soloed, and you hit record. The part stops being soloed and you can no longer hear it. This makes it impossible to record a pick up on a soloed track unless it's locked, but it shouldn't need to be locked.
    * When you are zoomed in tightly, and you are trying to align notes within two parts on different tracks (meaning using the PSEUDO NOTATION DATA that appears in the part to align), there needs to be a VERTICAL line that snaps to the note closest to the mouse cursor. When trying to do this in parts that are a far vertical distance apart, it becomes VERY difficult to eye this alignment. Logic does this with automation data.. but for some reason they left it out for actual part alignment...
    * There should be a way to force the downbeat of a measure to occur at any given moment... What I mean by this, is composing for film is an absolute PAIN in Logic. Scenes, last for odd amounts of time, and Logic's reference manual claims that you can solve this by using various tempo tricks, however it is ineffective for the most part. What Logic needs is the ability where you can click on a drop down menu item within the arrange window and FORCE that where ever the song locator is, the rest of the measure is eliminated and a new measure downbeat occurs right there. This will allow you to always have new scenes on the downbeat of a measure without having to mess with your tempo and meter.
    Hyper Edit Window:
    * I can't even begin to comment on this... The hyper edit window is one of the worst things I have ever seen in a music/audio program. It is a horrible interface, you can't get it to do anything correctly without messing everything up. This thing needs a complete overhaul... I mean, just try to create a simple crescendo with note velocity and it will take you all night.. Try to add pitch bend data, and it adds note velocity data as well.. It's a total nightmare, and I would love to hear someone's practical application of this window.
    Score Window:
    * The method that the song position locator moves along with the notation is very strange. It is not at all how a person's eyes function when reading music. A much more logical approach to this would be for a transparent colored block of some type to highlight an entire measure, and each note head will glow as it sounds. The current way is so strange, it speeds up and slows down-- makes absolutely no sense, and it is more disruptive than anything.
    * When the Hyper Draw > note velocity area is exposed, if you use the velocity tool to increase/decrease a particular note's volume, the data in the hyper draw window does not update in real-time as you use the velocity tool. This behavior is inconsistent with the matrix > hyper draw's note velocity section-- where as in that area, the velocity ball/lines do update in realtime.
    EXS24:
    * when you are in many levels of subdirectories and you are auditioning instruments, it becomes very time consuming and annoying to have to continually trace through all the subdirectory paths. There should be a feature directly under the load instrument window that takes you to the subdirectory of the current instrument.
    * Seems when SONG SETTING > MIDI > "chase" is turned on... When starting sequences using audio instruments, (I am using a harp sample within the exs24), there is a latency hiccup upon starting, which is very disruptive when trying to listen to a short isolated moment in a composition. And I do want to chase note events in general-- but this present situation makes it difficult for me to work. I would suggest that you can specify tracks to exclude chasing.. Or fix the latency hiccup issue.
    Thank you.
    -Patrick
    http://collinatorstudios.com

    this is excellent patrick. can you number your points so that the thread can be discussed?
    1. yes
    2. ok
    3. great idea
    4. even better idea. you could set something up with aggreagate device i suppose but it would be better to have the feature to hand.
    5. you need to look into your project manager prefs. scan the paths and the links to the audio files will be saved meaning they will load up in a fraction of the time.
    6. yes this is nuts. you can skip all and sort it out with PM but then you shouldn't have to.
    7. this exists already. perhaps it ought to be a default but you need to set your esx prefs to 'keep common samples in memeory when switching songs'. then it will do just as you wish it to. you can also use the au lab in the devlopers kit which will allow you to load in au units etc seperately from logic, which logic can then access. this is a good way of getting around the 4 GB memory limit with logic too.
    8. ok, don't know about this bug.
    9. yep happens here too.
    10. doesn't worry me this one. you can turn off midi out.
    11. yes this is silly.
    12. well, i think this is something we can get used to. i am a musician and i am used to seeing '24'.
    13. you can already set up groove templates to allow for quantizing irrational tuplets. i do it all the time. i would like to see step input for irrational tuplets though.
    14. yes this is silly. the button for the KC 'content catch' is getting very worn out.
    15. ok.
    16. not sure i understand this one.
    17. yes this drives me nuts too. i have to lock screensets to get this to stay off.
    18. you can use KCs for 'go into/out of sequence' - but yeah.
    19. ok
    20. there are a couple of features that use old technology that cause hangs and poor performance. score is a good example of that. maybe the matrix is too. the score is being updated we assume with newer technology maybe the matrix will too.
    21. there are probably better ways of adjusting velocity than using matrix or hperdraw velocity. have you tried holding control-option and click dragging a note in score?
    22. as i pointed out in 20, this is an old feature. you could change things to be consistent with modern macs and annoy long term users such as myself, or leave them and let them be inconsistent to confuse newbies. i think depending on what it is we oldies could upgrade our work habits.
    23. this one doesn't worry me so much.
    24. good point (no pun intended).
    25. well, i find the opposite - that merging new parts to objects i have accidentally selected to be annoying. perhaps more detailed prefs?
    26. yep.
    27. this will be down to your audio settings. you can improve this lag but it will be dependant on the capabilities of your system.
    28. i don't know why this feature doesn't work in logic. it is supposed to have ti already and i just don't understand why it doesn't. maybe it will be fixed in the next upgrade.
    29. agreed.
    30. ok - i have other work flows for this but it would be nice.
    31. i don't agree that logic is a pain to score with to film, i do it nearly everyday. but you are discribing an interesting feature which might be worth discussing more. i think you might find yourself getting alarming and unmiscal results doing this that will end up having to be sorted out the conventional way. but its a good idea.
    32. oh yes.
    33. yeah - this could be improved.
    34. ok, well i wouldn't go about it this way, but yeah there is generally sticky spots with regards to updating of information al around logic.
    25. very very good idea.
    26. there are lots of problems with the chase function. very annoying. i certainly agree with this.
    in general, some of these could well be done as their own threads. some of the missing functionality may exist. if you can confirm a bug then you are on stronger ground when you submit feedback. but this list is full of fantastic ideas.

  • Problem with displaying BLOB images on JSP page using a servlet

    hi. I have a big problem with displaying BLOB images using JSP. I have a servlet that connects to the oracle database, gets a BLOB image , reads it, and then displays it using a BinaryStream. The problem is , this works only when i directly call that servlet, that is http://localhost:8080/ImageServlet. It doesn't work when i try to use that servlet to display my image on my JSP page (my JSP page displays only a broken-image icon ) I tried several coding approaches with my servlet (used both Blob and BLOB objects), and they work just fine as long as i display images explicitly using only the servlet.
    Here's what i use : ORACLE 10g XE , Eclipse 3.1.2, Tomcat 5.5.16 , JDK 1.5
    here is one of my image servlet's working versions (the essential part of it) :
                   BLOB blob=null;
              rset=st.executeQuery("SELECT * FROM IMAGES WHERE ID=1");
              while (rset.next())
                   blob=((OracleResultSet)rset).getBLOB(2);
              response.reset();
              response.setContentType("image/jpeg");
              response.addHeader("Content-Disposition","filename=42.jpeg");
                    ServletOutputStream ostr=response.getOutputStream();
                   InputStream istr=blob.getBinaryStream(1L);
                    int size=blob.getBufferSize();
              int len=-1;
                    byte[] buff = new byte[size];
                         while ((len=istr.read( buff ))!=-1 ) {
                   ostr.write(buff,0,len);
             response.flushBuffer();
             ostr.close(); and my JSP page code :
    <img src="/ImageServlet" border="0"  > If you could just tell me what i'm doing wrong here , or if you could show me your own solutions to that problem , i would be very greatful ,cos i'm realy stuck here , and i'm rather pressed for time too. Hope someone can help.

    I turns out that it wasn't that big of a problem after all. All i had to do was to take the above code and place it into another JSP page instead of into a servlet like i did before. Then i just used that page as a source for my IMG tag in my first JSP. It works perfectly well. Why this doesn't work for servlets i still don't know, but it's not a problem form me anymore . Ofcourse if someone knows the answer , go ahead and write. I would still appriceatte it.
    here's the magic tag : <img src="ImageJSP.jsp" border="0"  > enjoy : )

  • At the creation of MCD we got the problem with Request

    Hi All,
    we are all very new to SAP MI,
    At the creation of CD we got the problem with Request
    <i><b>Creation of CD</b></i>
    we gave these entries
    <b>1.Mobile Solution Name        :      CIBERNW
    Version                                    :      1001
    Description                              :      Ciber Netweaver Mobile
    Cmponent Type                       :        APPLICATION
    Runtime Enviroment                 :      JSP</b>
    In SyncBO tab we specified our SyncBO that is <b>ZNWW_EX01</b>
    we selected the check two checkboxs that is
                       <b>->SyncBOs Expect Initial Value
                       ->Data Visible to all</b>
    2.when i am trying to <b>save the MCD</b> it will open one dialog box that is
    <b>"Object can only created in SAP Package "</b> -> Continue
           <b>"Link to Transport "</b> it says
    <b>"Include MCD in Transport Request", "Yes","No"</b>
    when i will go for <b>"Yes"</b>
    it will give one more dialog box that is
    <b>"prompt of workbeanch Request"</b>
    it will give one Request bydefault that is <b>"CNWK900030"</b>
    there we have some option that is
         <b> ->Continue
          ->Create Request
          ->Own Request</b>
    which one we will select ?
    i will go for <b>Continue</b> it will open other dialog box it says
    <b>"Include MiniApp in Transport Request"</b>
    it says <b>"MiniApp must be assigned to a transport request"</b>
    i will go for continue it will the message in the status bar
    <b>"MCD Changed"</b>
    can you please tell me this process is Right or wrong
    if it is wrong can you please tell me the right process
    and it will some default Requests which Request we need to select
    or we need to create the Request where we need to create that
    what is process we need to follow ?
    Thanks and Regards
    Dileep Painnamaneni

    Hi Dileep,
    <<Creation of MCD >>
    <<we gave these entries >>
    <b><<1.Mobile Solution Name : CIBERNW
    Version : 1001
    Description : Ciber Netweaver Mobile
    Cmponent Type : APPLICATION
    Runtime Enviroment : JSP>>
    In SyncBO tab we specified our SyncBO that is ZNWW_EX01
    we selected the check two checkboxs that is
    ->SyncBOs Expect Initial Value
    ->Data Visible to all</b>
    Every thing is fine. We need to check Link to <b>SAP MI Home page</b> check box
    <b>2.when i am trying to save the MCD it will open one dialog box that is
    "Object can only created in SAP Package " -> Continue
    "Link to Transport " it says
    "Include MCD in Transport Request", "Yes","No"
    when i will go for "Yes"
    it will give one more dialog box that is
    "prompt of workbeanch Request"
    it will give one Request bydefault that is "CNWK900030"
    there we have some option that is
    ->Continue
    ->Create Request
    ->Own Request
    which one we will select ?
    i will go for Continue it will open other dialog box it says
    "Include MiniApp in Transport Request"
    it says "MiniApp must be assigned to a transport request"
    i will go for continue it will the message in the status bar
    "MCD Changed"</b>
    In SAP when ever we create any object(tables or MCDs) :
    there are two things CUSTOMER NAME SPACE(stored locally in that system only) and FORIEGN NAME SPACE(can be transported)
    CUSTOMER NAME SPACE objects starts with 'Z' or 'Y'
    FORIEGN NAME SPACE objects starts with any other digit other than 'Z' or 'Y'
    So youhave created MCD name CIBERNW which starts with 'C' (its not customer name space with z or y)
    so it will be stored in package(so that this package can be transported to any other system later)
    So what ever you have done is correct.
    You can create your own request also.
    But confirm once that whether you are supposed to store your MCD this that package.
    <b>
    can you please tell me this process is Right or wrong
    if it is wrong can you please tell me the right process
    and it will some default Requests which Request we need to select
    or we need to create the Request where we need to create that
    what is process we need to follow ?</b>
    So this is the concept of request.
    So this request is nothing but....
    When ever we create tables or MCDs we try to save it..so if we are trying to create objects in Foreign name space(i.e without 'Z' or 'Y' inthe beginning) so it will ask to create this object in a package which requires request(transport request)
    All objects are stored in package,( so this package contains many objects like MCD,SYNBOS etc what ever we store in it) so we can transport this package from one system to another system so to transport we need to generate a transport request for that package and them release that transport request.....
    So once the package is released and we try to edit or create new objects in that package it will ask for some new request.....
    Yes we can create our own request and later release it.
    But in your case u can take up the default request and continue.
    If this MCD is for only testing purpose(for our selfs)..means this MCD is just for our testing sake..its better to create it in Customer name space..starts with 'Z' or 'Y'.
    I hope its clear.
    Cheers,
    Karthick

  • Problem with Indesign CC 2014 and tables

    Problem with Indesign CC 2014 and tables. The text rearranges itself when I delete or add something in a table; the footnotes to the text associated with the overlap even getting unreadable. Just click on the chain symbol in the window and everything is fine. Why?

    try circumventing your cc app and see if that helps:
    if you follow all 7 steps you can directly download a trial here:  Adobe CC 2014 Direct Download Links: Creative Cloud 2014 Release | ProDesignTools
    if you have a problem starting the download, you didn't follow all 7 steps, or your browser does not accept cookies.
    the most common problem is caused by failing to meticulously follow steps 1,2 and/or 3 (which adds a cookie to your system enabling you to download the correct version from adobe.com).
    failure to obtain that cookie results in an error page being displayed after clicking a link on prodesigntools.com or initiates the download of an incorrect (eg, current) version.

  • Problem with background formatting in pivot table

    Hello,
    I have a problem with background formatting in pivot table. I can't change background (light blue rectangular in upper left corner). Do you have any idea how to do it?
    Here is the link to the picture of the pivot table:
    http://img163.imageshack.us/img163/110/unledfyq.png
    I would be grateful for any help.
    Regards,

    Hey,
    Check this link once, you will need java script to acheive this:
    http://everythingoracle.com/obieehdom.htm
    scroll down to this topic: Parsing using HTML DOM
    Please award points if helpful.
    Thanks,
    -Amith.

  • The Problems With Logic (as I see them) - PART TWO!

    Hello again,
    It seems to be a tradition now that as I compose on a track, I keep a text editor open so that I can jot down all the annoyances and problems that I encounter during my creative process... Anyone who missed the previous edition of this topic, please visit PART ONE, here:
    http://discussions.apple.com/message.jspa?messageID=3605456#3605456
    That said, here I give you "The Problems With Logic Part II":
    1. Logic should clear the playback buffer everytime you play. Quite often you start playing and there is trailing reverb/note events from various audio instruments and plug-ins.
    2. The sample edtor "save selection as" has no memory of where you previously were in the file browser.
    3. If you double click on a wave form, the sample editor opens up with the wave form you double clicked on... Great.. But now, if you go and double click on another wave form somewhere, it just takes you back to the sample editor with the same previous wave form selected (not great). This is incredibly annoying if you are attempting to save out certain edits-- Quite often you will end up saving 5 or 6 of the same exact waveform, thinking you were saving each individual one. GRR!
    4. Key commands.. if you try to assign a key command to something that is already used by another feature, you are presented with a window warning you that it already exists.. If you click cancel, then you can no longer enter any keys in the key field.. You are forced to close the key commands preferences window and start over.
    5. Key command window: You should be able to search by command.. For example, if I want to find out what "o" is assigned to, I should be able to search by O-- Further, you should be able to sort the key commands by clicking the column titles "key", "command" -- or "midi"... After all, we can sort by name, date, size, etc in the finder by clicking on these column titles.
    6. Tempo Tap feature-- I am quite confused by this. There should be a simple way to tap and define a tempo. When ever i try to do this, the tempo is only temporarily changed until I stop playing, and most of the time I get error alerts about trying to sync audio and midi (mind you, when there are absolutely no parts in the entire arrange window). The manual states that with "tempo recording" checked on the tempo interpreter window, that the taps will record tempo changes, but this does not work. I tried doing this, tapping the key command I defined to tempo tap (ctrl-shift-t), and I was tapping at various speeds-- many taps fast.. and Logic recorded tempos of 99-101bpm.. I was tapping atleast around 175-180bpm. I then tried tapping slowing, and Logic recorded tempos of 99-101 again... so this feature obviously is full of bugs.
    7. When loading songs, as soon as various plugins such as Kontakt, exs24 begin loading samples, it brings logic to the front. If you're working in the background in other applications while waiting for your songs to load, you are rudely interrupted from what you're doing (such as, selecting from a menu, typing a document, etc) only to be forced to watch a status bar fill up.. and then all key presses at that point become error beeps.
    8. Logic's sample memory easily becomes messed up and crazy. Quite often when using AU instruments such as BFD, Culture, and even Synthogy's Ivory. I will switch to that particular track to play on my keyboard, and each sample will be full of horrible pops and clicks-- the kind that destroy speakers. Other times, in a sample of a string for instance, all of a sudden after one second will be a pop and then the sample will be playing at a completely different pitch... I have to remove the AU instrument and reload it at this point.. This happens quite often. Logic should offer a 'buffer reset' so that you can just flash plugins but they reload whatever preset they were set to.
    9. Volume faders resolution are lame! There is no reason why you shouldnt be able to access +1.0, +1.1, +1.2, +1.3, +1.4, +1.5, +1.6, +1.7, +1.8, +1.9... Further the display is only so wide and you can't even read the decimal values for numbers -10 and lower. They just appear as 10.
    10. When a movie is open, and you are viewing the video output via FIREWIRE, there is a mini-floating window which contains the smpte, position, and movie start information-- However you cannot modify any of these values. You have to switch video output back to "WINDOW" to change the start position of the movie. This is obviously a bug.
    11. Changing the movie's start time is very user unfriendly. There should be a simple way to specify to start at a moment of time relative to SMPTE-- So you can just say "+9:15" for example, and it would take you in 9 minutes and 15 seconds, rather than how it is now where you have to think backwards from SMPTE code and subtract.
    12. You cannot view video as a window AND output to firewire. There is no reason why you shouldn't be able to do this. For example, if I wanted to output my video to a monitor in a vocal booth-- I can do this.. but I can't see what the vocalist is seeing on my own screen! This is just nonsense. You should be able to output to the screen (desktop mode or floating window) as well as an external firewire device.
    13. Saving a song with a movie open should mean that when you load that song, the movie should be up and exactly as it was prior to saving. As it is now you have to select "open movie again".
    14. There is still definitely a bug in track automation-- this was really bad back in version 4, but there is still something not quite right here where starting playback will not always guarantee that the automation data is being read.. And in my experiences it results in volumes being incorrect until you stop and play again, and in some cases it will not work at all unless you plot some automation points. This is an intermittent issue-- but quite often activated by placing an audio region from the audio window on a track (SEE VIDEO).
    WATCH VIDEO OF THIS BUG:
    http://collinatorstudios.com/www/logicbugs/logicautomationbug.mov
    15. In the arrange window, sometimes when zoomed in tightly, all parts on a track are selected, and you think that only the part that you are looking at is selected.. you move this part, and now all of your parts are off. Logic should have some kind of visual aid to let you know when ever you are moving multiple selections... Something like, the parts you are moving will highlight a dfferent color or something... This is a similar problem I have with the loop area of the screen.. You can accidentally turn it on when in the matrix window, and have no idea unless you look down at the transport, but with me for example, my transport is at the very bottom of the screen and I am not looking there most of the time.
    16. Automation data, when two points are semi-close to each other, suddenly the value of the data is no longer shown.. I can understand that when you are zoomed out, and there is simply no space for this to visually appear, that's appropriate. But as it is now, it doesn't display this information when there is plenty of space for it to be visible.
    17. Logic should let you set audio track inputs to the various outputs (1-2, 3-4, etc) and buses.
    18. clicking on a track selects ALL parts. This is so so so annoying. How many times have I been editing voice over, and selecting a track, thinking I am shrinking the length of a part, and to find that ALL parts have been shrunk.. SO ANNOYING!!!! This needs to not happen, and there should be a simple way to right-click a track and it will have an option "select all regions"... also, when you click on a track and all parts are selected, if you horizontally zoom, logic zooms into the beginning of the track, rather than the song locator. I don't know what the LOGIC behind this is, but it's not very helpful, it actually is very frustrating.. Zooming should always move towards the song locator position.
    19. EXS 24 should have a "reverse/backwards" button so that samples played are backwards.
    20. Logic should offer a way to globally increase or decrease a specific automation type (especially volume) globally for all tracks... So if you have detailed crescendos that start at -3.8 and end at +1.6, you can add 3db to this and it will now be at 0.8 and end at 4.6.
    21. If you have multiple tracks of the same track (such as three Audio track #1's)-- say you are recording guitar parts, and just copying the track and muting the previous track as a method of maintaining multiple takes for later auditioning. If you draw automation volume data on this track (it appears on all 3 tracks), and then if you delete the audio from one of the muted tracks and tell logic to KEEP it, suddenly all automation data is gone. GRR!!!
    22. Several times I have opened Kontakt, and attempted to load an instrument while outputting a movie via firewire video to my monitor. As soon as I try to load the instrument, the firewire video output on my monitor goes crazy, and then comes back on.. Logic then crashes. This has happened 3 times randomly...
    23. UNDO does not work on every function. for example, if you change an output to bus 1 instead of 1-2, you cannot undo this. Undo should undo whatever the last command was, no matter what it was. This is what the word LOGICal is supposed to represent.
    24. Floating windows (as in plugin windows) should close with apple-w!!!
    25. *BUG* If you are in a part that is say 10 measures long, zoom in horizontally 100% in the matrix window-- You then isolate one specific quarter note pitch in the middle of this measure, and have cycle turned on, looping over this one quarter note, if you are not looking at this note event/loop region when you hit play, the display will jump to the beginning of the part and never show you this note event as it loops. However if you have the note event on screen when you hit play, then it will behave properly. This makes it extremely difficult and frustrating to perform detailed hyper-draw work. (SEE VIDEO)
    WATCH VIDEO OF THIS BUG:
    http://collinatorstudios.com/www/logicbugs/logicloopbug.mov
    26. *BUG* Host Automation is not accurate. I assigned Kontakt's tune knob to C#000, and If I place a dip, the knob begins to move way before the automation data is even present.... So basically what I was trying to do, can't even be accomplished because Logic screws everything up by pitching the instrument too early... Such a shame.. By the way, I previously mentioned the importance of being able to display part data in the arrange window as matrix data (horizontal lines) rather than score data. Someone argued what good this would do-- Well this is a perfect example, if I am attempting to affect a particular section of a note with automation, I can't possible visually see where this is because the length is not described by the current score representation. Having a horizontal representation would solve this problem... (SEE VIDEO)
    WATCH VIDEO OF THIS BUG:
    http://collinatorstudios.com/www/logicbugs/logicctrlchngbug.mov
    27. There should be a way to convert stereo samples to mono in the sample editor.
    28. When you view "as text" in the environmentt, you cannot drag an object to the arrange window-- Such as to create a bus track.. Now mind you I don't know why you can't just select "BUS" when editing a track in the arrange window in the first place, however there is no reason why 'view as text' should behave differently than when it's viewed as icons.
    29. When you drag a bus from the environment to the arrange window, it replaces whatever track was there. It should ADD a track instead of replace-- atleast there should be a preference for how this behaves.
    30. Occasionally when dragging a bus from the environment, there is some visual garbage in the track automation (see screenshot).
    31. There should be a way to LOAD and SAVE selections in the arrange window. Quite often when editing audio from a countless number of parts/regions, it becomes painful when you have to select and move 100s of audio files. There should be a way that you can just select a ton of regions and save that selection, and reload it at anytime. There are a few 'select' tools/options under the edit window, however they are song specific-- not track specific. So they are completely usesless for what I need.
    32. Logic should offer a feature to collect sysex data from midi devices so that patch names show up and can be selected via program change.
    33. When no track or part is selected, and you vertically zoom in, Logic should zoom into the center most track.. It behaves very oddly and zooms in more towards the top. This becomes extremely annoying when dealing with a sequence involving 100 tracks, and a part is selected but you scroll far below where the part is.. When you begin to zoom in, it takes you towards the selected part, yet it's not displayed on the screen and you have no reference for what you are even looking at. The rule should be this: If the part is on the screen, zooming vertically will bring you to it. If it's off the screen, you will zoom into the center track of whatever is currently on the screen.
    34. I mentioned this in a thread earlier... http://discussions.apple.com/thread.jspa?threadID=752485&tstart=0
    There is a bug when using the transform tool involving the 'position' variable. In my example, I was attempting to reverse the time placement of three chords, that occured in a part somewhere in the middle of my song. By selecting the measure start and end of this part, Logic was unable to select or operate with the transform tool (and I tried a variety of transform options). If I moved this part to the beginning of the song, then the transform tool would suddenly work. After some research, I found online someone had said "Position Time position of the event, referenced to the start of the MIDI Region (not of the song)."--- But if I still doubt this is true, because I then placed the part on a new track with no other data, and placed it in the middle of the sequence and in the transform tool under position I selected '1 1 1 1' to '5 5 5 5' as well i tried setting the position to 'all', and none of this worked. This obviously is a bug... If it's not then it's a very serious design flaw. The position should relate to measure numbers of a song, and nothing else.
    WATCH VIDEO OF THIS BUG:
    http://collinatorstudios.com/video/transform.mov
    That is all for now...
    For those who firmly agree with me and all of the points that I have brought up now and in the past, I encourage you to contact Peggie Louie, (the Logic HR department contact) at (408) 996-1010 and suggest that she hire me as a consultant to help eliminate Logic's many annoyances. I have tried to pursue this heavily in the past, but sadly I was completely ignored by her on all levels. Maybe you all can help make a difference?
    Fighting the good fight,
    Patrick J. Collins
    http://collinatorstudios.com

    11. Changing the movie's start time is very user
    unfriendly. There should be a simple way to specify
    to start at a moment of time relative to SMPTE-- So
    you can just say "+9:15" for example, and it would
    take you in 9 minutes and 15 seconds, rather than how
    it is now where you have to think backwards from
    SMPTE code and subtract.
    For this one I'd suggest getting SMPTE calculator. Entering timecode numbers and having to add and subtract is not so difficult, and AFAIC part of a composer's gig. But what I would add, instead, is that it would be fantastic if Logic provided a timecode calculator (edit: even if it was in the form of a custom Logic widget).
    13. Saving a song with a movie open should mean that
    when you load that song, the movie should be up and
    exactly as it was prior to saving. As it is now you
    have to select "open movie again".
    This doesn't always happen. I've struggled with this for a long time, and I don't know why sometimes the movie will load and not other times. I would also add here that Logic should show the file pathname to the movie. Somewhere...
    18. clicking on a track selects ALL parts. This is
    so so so annoying.
    You can prevent this from happening if you have cycle turned on and set to a set of locators that "contain" the parts you might want to select en masse. I always work with cycle=on so this is not a problem.
    21. If you have multiple tracks of the same track
    (such as three Audio track #1's)-- say you are
    recording guitar parts, and just copying the track
    and muting the previous track as a method of
    maintaining multiple takes for later auditioning. If
    you draw automation volume data on this track (it
    appears on all 3 tracks), and then if you delete the
    audio from one of the muted tracks and tell logic to
    KEEP it, suddenly all automation data is gone.
    GRR!!!
    Never had that happen. In my experience, telling Logic to keep the data always works.
    23. UNDO does not work on every function. for
    example, if you change an output to bus 1 instead of
    1-2, you cannot undo this. Undo should undo whatever
    the last command was, no matter what it was. This is
    what the word LOGICal is supposed to represent.
    Undo in Logic is highly problematic for other reasons. Here, I think there should be a specific Environment Undo, just like there's a separate undo for audio edits.
    29. When you drag a bus from the environment to the
    arrange window, it replaces whatever track was there.
    It should ADD a track instead of replace-- atleast
    there should be a preference for how this behaves.
    Right. This is a matter of personal preference. But still there are other ways to get an object assigned to a track. The "thru tool", for instance. No dragging required.
    32. Logic should offer a feature to collect sysex
    data from midi devices so that patch names show up
    and can be selected via program change.
    My guess: considering how much sheer time it takes to write this kind of software, let alone debug it with every conceivable device, it's not likely this is going to happen.
    That is all for now...
    For those who firmly agree with me and all of the
    points that I have brought up now and in the past, I
    encourage you to contact Peggie Louie, (the Logic HR
    department contact) at (408) 996-1010 and suggest
    that she hire me as a consultant to help eliminate
    Logic's many annoyances. I have tried to pursue this
    heavily in the past, but sadly I was completely
    ignored by her on all levels. Maybe you all can help
    make a difference?
    Wait in line buddy!
    (LOL)
    I must say, I'm very impressed with your list and attention to detail. And I feel your pain, trust me. But many of the things you've listed are feature requests and not bugs. And some of the behaviors you've described I have yet to run across. So this is typical with Logic, that it can be operated in so many diverse ways that no two people run it in the same way, nor would two people conceive the program's capabilities in the same way. But I digress...
    I also think there's a certain amount of Logic convention that I don't think you've adopted yet, hence your wish for behaviors that don't yet exist.
    I don't disagree with most of your feature requests, and I'm (quite unfortunately) able to say that I'm familiar with most of these bugs and about 9 dozen more. But again, it's important to distinguish between bug, feature request, time to RTFM, and errant behavior that's experienced by a very limited number of users.
    There's no doubt that this program has its problems. In particular, your #1 re the playback buffer. And I'm glad you've brought many of the bugs into the light for people to read. Good work.

  • Hi, I got the problem with Firefox 27.0.1. I can not run Selenium on Firefox after login a website for automation testing. The browser is not responding.

    Hi, I got the problem with Firefox 27.0.1. I can not run Selenium on Firefox after login a website for automation testing. The browser is not responding. However when I close Nunit, the page is back to be normal. The title is returned to the name of website without "not responding". I sure this problem did not happen on Firefox version 26. I just got this problem when firefox upgrading automatically to version 27. Please help me fix this problem because it is very important for my work. If you need more information pls send your concerns via my email address.
    Thanks so much

    Hi, the work around suggested above should put you in working mode in the meantime. However to help investigate the issue it is possible to analyze what is not loading or taking a long time by analyzing the network traffic or http headers of the Nunit web page.
    *[https://addons.mozilla.org/en-us/firefox/addon/live-http-headers/]
    *Web developer Tools > Web console
    If you post the results with out the user data, we are happy to help.

  • The problem with ALAssetsLibrary and Location Services

    I have developed a photo app for the iPhone, released a couple of days ago, that's doing rather good in the App Store, but would probably do a lot better if it weren't for the negative reviews saying that they can't understand why the app wants access to Location Services to be able to select photos from the photo gallery.
    The app lets users select photos from their gallery, which they then can style and edit in different ways. To do this I use the ALAssetsLibrary class. So far so good. The problem with the ALAssetsLibrary class is that if I wish to use it to access photos on the device, the user must give the app access to Location Services, as well. Why, you ask? Well, because photos in the gallery might possibly include information on when and where the photo was taken. If the user doesn't give the app access to Location Services, the app won't be able to access the photos at all.
    In my app I'm not interested in the location services data at all - I just want the user to be able to select photos. But as far as I know there is just no way to read photos without Location Services enabled. As a developer I can sort of buy this limitation - because I understand why it exists - but apparently my users can not. And as a user myself I have to agree with them. Why on earth do they/I have to allow the app to access Location services for me to be able to select photos? It doesn't make sense!
    At the moment I'm getting a lot of negative reviews saying "I downloaded and deleted. The app wants access to Location Services when I try to select a photo. This seems fishy. Don't download it". I agree. It DOES seem fishy, but I couldn't care less about their location data, and although I try to inform the user about this in the app, a lot of people doesn't seem to care, or understand why this is the way it is.
    So, what's the point of this rant? Well, to start with, wouldn't it be better if iOS asked something like "This app needs access to your photos" instead of "This app needs access to your location", when using the ALAssetsLibrary?
    Also, instead of using the ALAssetsLibrary I could have used the UIImagePickerController - if only it had supported landscape orientation. Why, why, WHY doesn't it? My app is landscape only, and therefore I had to build my own image picker functionality, instead of using the default one. Portrait only is a very stupid limitation, if you ask me.
    Finally, is there SOME way at all to access the photos on the device without requiring Location Services as well?
    Thank you for listening,
    Andreas Lindahl
    Rodskagg

    Unfortunately, there is no way to directly access the photo library without prompting the user for Location Services permission. I just posted an article on my blog about this very issue (and referenced your post): http://blog.mikeswanson.com/post/18269837647/location-services. I hope that this situation can be improved in a future release of iOS.

  • HT4009 Do you understand me ? I want money back.Because I have problem with LINE In App Purchase.And no one try to resolve this problem.And the answer of NEVER LINE JAPAN they don't have responsibility.I think it will be effect with APPLE image also.I wan

    Do you understand me ? I want money back.Because I have problem with LINE In App Purchase.And no one try to resolve this problem.And the answer of NEVER LINE JAPAN they don't have responsibility.I think it will be effect with APPLE image also.I want you to help me everyways to refound my monet back.Could you?

    Contact iTunes Store Support.

Maybe you are looking for

  • My iTunes stops working when i try to sync my iphone. Specifically when its in any back up process. help?

    I already uninstalled a reinstalled itunes, i restored my iphone and lost everything and it still has gotten me no where. Im using a pc with windows 7 by the way

  • March Madness 2014 application - streaming

      Is it possible to utlize the lightening to HDMI conversion cable to stream the March Madness 2014 application to my TV.  I have ATV and airplay is not supported for this application.

  • Motion wont read my FCP clips

    I am trying to send my sequence from FCP to Motion. Every time the checkered red boxes show up and a message comes up saying it can not locate the original footage. My footage is all on an external HD. FCP reads it off of the HD just fine. But every

  • Adding a new field in purchase order tab in Sales Order transcation

    Hi Gurus    I need to add a new field in header portion 'Purchase order data' with a new field below the telephone no for the transcation VA01.What should I do here?is there any exit or Badi avaiable for this? Thanks Ganesh

  • Difefrance in GRIR Account

    Dear All, There is a differance between GR value and the value debitted in GRIR account with respective to the IR. Pls chek the below example that will help you guyes to understand my isssue GR Quantity - 34 GR Value - 60350.00 IR  - 80350.00 GRIR (d