Esempio n. 1
0
        static void Add_CustomerOrders_Records()
        {
            ORDER_DATA[] data = new ORDER_DATA[2];
            data[0] = new ORDER_DATA("09/01/2002", "09/05/2002", "1", "1001");
            data[1] = new ORDER_DATA("09/02/2002", "09/06/2002", "2", "1002");
            int nRecords = data.Length;

            CTDate orderdate   = new CTDate();
            CTDate promisedate = new CTDate();

            Delete_Records(recordCustOrdr);

            Console.WriteLine("\tAdd records in table CustomerOrders...");

            try
            {
                for (int i = 0; i < nRecords; i++)
                {
                    recordCustOrdr.Clear();

                    orderdate.StringToDate(data[i].orderdate, DATE_TYPE.MDCY_DATE);
                    promisedate.StringToDate(data[i].promisedate, DATE_TYPE.MDCY_DATE);
                    // populate record buffer with data
                    recordCustOrdr.SetFieldValue(0, orderdate);
                    recordCustOrdr.SetFieldValue(1, promisedate);
                    recordCustOrdr.SetFieldAsString(2, data[i].ordernum);
                    recordCustOrdr.SetFieldAsString(3, data[i].customernum);

                    // add record
                    recordCustOrdr.Write();
                }
            }
            catch (CTException E)
            {
                Handle_Exception(E);
            }
        }
Esempio n. 2
0
        static void Add_Transactions()
        {
            ORDER_DATA[] orders = new ORDER_DATA[3];
            orders[0] = new ORDER_DATA("09/01/2002", "09/05/2002", "1", "1001");
            orders[1] = new ORDER_DATA("09/02/2002", "09/06/2002", "2", "9999"); // bad customer number
            orders[2] = new ORDER_DATA("09/22/2002", "09/26/2002", "3", "1003");
            int nOrders = orders.Length;

            ORDERITEM_DATA[] items = new ORDERITEM_DATA[6];
            items[0] = new ORDERITEM_DATA("1", 1, 2, "1");
            items[1] = new ORDERITEM_DATA("1", 2, 1, "2");
            items[2] = new ORDERITEM_DATA("2", 1, 1, "3");
            items[3] = new ORDERITEM_DATA("2", 2, 3, "4");
            items[4] = new ORDERITEM_DATA("3", 1, 2, "3");
            items[5] = new ORDERITEM_DATA("3", 2, 2, "99"); // bad item number
            int nItems = items.Length;

            CTDate orderdate = new CTDate();
            CTDate promdate  = new CTDate();
            int    savepoint;
            int    j = 0;

            Delete_Records(recordCustOrdr);
            Delete_Records(recordOrdrItem);

            Console.WriteLine("\tAdd transaction records...");

            // process orders
            for (int i = 0; i < nOrders; i++)
            {
                // start a transaction
                MySession.Begin();

                try
                {
                    recordCustOrdr.Clear();

                    // populate record buffer with order data
                    orderdate.StringToDate(orders[i].orderdate, DATE_TYPE.MDCY_DATE);
                    promdate.StringToDate(orders[i].promdate, DATE_TYPE.MDCY_DATE);
                    recordCustOrdr.SetFieldValue(0, orderdate);
                    recordCustOrdr.SetFieldValue(1, promdate);
                    recordCustOrdr.SetFieldAsString(2, orders[i].ordernum);
                    recordCustOrdr.SetFieldAsString(3, orders[i].custnum);

                    // add order record
                    recordCustOrdr.Write();
                }
                catch (CTException E)
                {
                    // abort transaction on error
                    Handle_Exception(E);
                }

                // set transaction savepoint
                savepoint = recordCustOrdr.SetSavePoint();

                // process order items
                while (items[j].ordernum == orders[i].ordernum)
                {
                    try
                    {
                        recordOrdrItem.Clear();

                        // populate record buffer with order item data
                        recordOrdrItem.SetFieldValue(0, items[j].seqnumber);
                        recordOrdrItem.SetFieldValue(1, items[j].quantity);
                        recordOrdrItem.SetFieldAsString(2, items[j].ordernum);
                        recordOrdrItem.SetFieldAsString(3, items[j].itemnum);

                        // add order item record
                        recordOrdrItem.Write();

                        // check that item exists in ItemMaster table
                        recordItemMast.Clear();
                        recordItemMast.SetFieldAsString(2, items[j].itemnum);
                        if (!recordItemMast.Find(FIND_MODE.EQ))
                        {
                            // if not found, restore back to previous savepoint
                            recordItemMast.RestoreSavePoint(savepoint);
                        }
                        else
                        {
                            // set transaction savepoint
                            savepoint = recordItemMast.SetSavePoint();
                        }
                    }
                    catch (CTException E)
                    {
                        // abort transaction on error
                        Handle_Exception(E);
                    }

                    // bump to next item
                    j++;

                    // exit the while loop on last item
                    if (j >= nItems)
                    {
                        break;
                    }
                }

                // check that customer exists in CustomerMaster table
                recordCustMast.Clear();
                recordCustMast.SetFieldAsString(0, orders[i].custnum);

                // commit or abort the transaction
                if (!recordCustMast.Find(FIND_MODE.EQ))
                {
                    MySession.Abort();
                }
                else
                {
                    MySession.Commit();
                }
            }
        }