Example #1
0
        public static common.myAutoKeyInfo GetAutoKey(string key, bool usePending)
        {
            DateTime curTimeStamp = common.Consts.constNullDate;

            databases.baseDS.sysAutoKeyPendingDataTable sysAutoKeyPendingTbl = new databases.baseDS.sysAutoKeyPendingDataTable();
            //First try to re-used unused keys if required
            if (usePending)
            {
                curTimeStamp = DateTime.Now;
                DateTime minTimeStamp = curTimeStamp.AddSeconds(-Settings.sysGlobal.TimeOut_AutoKey);
                sysAutoKeyPendingTbl.Clear();
                databases.DbAccess.LoadData(sysAutoKeyPendingTbl, key);
                if (sysAutoKeyPendingTbl.Count > 0)
                {
                    for (int idx = 0; idx < sysAutoKeyPendingTbl.Count; idx++)
                    {
                        //Still valid : ignore it
                        if (sysAutoKeyPendingTbl[idx].timeStamp > minTimeStamp)
                        {
                            continue;
                        }

                        //The the first invalid key will be used. Updating the timestamp to make it valid again.
                        sysAutoKeyPendingTbl[idx].timeStamp = curTimeStamp;
                        databases.DbAccess.UpdateData(sysAutoKeyPendingTbl[idx]);
                        return(new common.myAutoKeyInfo(key, sysAutoKeyPendingTbl[idx].value, sysAutoKeyPendingTbl[idx].value.Trim()));
                    }
                }
            }
            //Then, create a new key and pending key if required
            databases.baseDS.sysAutoKeyRow sysAutoKeyRow = databases.DbAccess.NewAutoKeyValue(key);
            if (usePending)
            {
                databases.DbAccess.CreateAutoPendingKey(sysAutoKeyRow.key, sysAutoKeyRow.value.ToString(), curTimeStamp);
            }
            string valueStr = sysAutoKeyRow.value.ToString().Trim();

            return(new common.myAutoKeyInfo(key, valueStr, valueStr));
        }
Example #2
0
 public static databases.baseDS.sysAutoKeyPendingRow UpdateData(databases.baseDS.sysAutoKeyPendingRow row)
 {
     try
     {
         lock (myClient)
         {
             databases.baseDS.sysAutoKeyPendingDataTable tbl = new databases.baseDS.sysAutoKeyPendingDataTable();
             tbl.ImportRow(row);
             myClient.UpdateSysAutoKeyPending(ref tbl);
             row.AcceptChanges();
             return tbl[0];
         }
     }
     catch (Exception er)
     {
         if (OnError != null) OnError(er);
     }
     return null;
 }
Example #3
0
        public static common.myAutoKeyInfo GetAutoKey(string key, bool usePending)
        {
            DateTime curTimeStamp = common.Consts.constNullDate;
            databases.baseDS.sysAutoKeyPendingDataTable sysAutoKeyPendingTbl = new databases.baseDS.sysAutoKeyPendingDataTable();
            //First try to re-used unused keys if required
            if (usePending)
            {
                curTimeStamp = DateTime.Now;
                DateTime minTimeStamp = curTimeStamp.AddSeconds(-Settings.sysGlobal.TimeOut_AutoKey);
                sysAutoKeyPendingTbl.Clear();
                databases.DbAccess.LoadData(sysAutoKeyPendingTbl, key);
                if (sysAutoKeyPendingTbl.Count > 0)
                {
                    for (int idx = 0; idx < sysAutoKeyPendingTbl.Count; idx++)
                    {
                        //Still valid : ignore it
                        if (sysAutoKeyPendingTbl[idx].timeStamp > minTimeStamp) continue;

                        //The the first invalid key will be used. Updating the timestamp to make it valid again.
                        sysAutoKeyPendingTbl[idx].timeStamp = curTimeStamp;
                        databases.DbAccess.UpdateData(sysAutoKeyPendingTbl[idx]);
                        return new common.myAutoKeyInfo(key, sysAutoKeyPendingTbl[idx].value, sysAutoKeyPendingTbl[idx].value.Trim());
                    }
                }
            }
            //Then, create a new key and pending key if required
            databases.baseDS.sysAutoKeyRow sysAutoKeyRow = databases.DbAccess.NewAutoKeyValue(key);
            if (usePending) databases.DbAccess.CreateAutoPendingKey(sysAutoKeyRow.key, sysAutoKeyRow.value.ToString(), curTimeStamp);
            string valueStr = sysAutoKeyRow.value.ToString().Trim();
            return new common.myAutoKeyInfo(key, valueStr, valueStr);
        }
Example #4
0
 public bool UpdateSysAutoKeyPending(ref databases.baseDS.sysAutoKeyPendingDataTable sysAutoKeyPendingTbl)
 {
     return(base.Channel.UpdateSysAutoKeyPending(ref sysAutoKeyPendingTbl));
 }