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)); }
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; }
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); }
public bool UpdateSysAutoKeyPending(ref databases.baseDS.sysAutoKeyPendingDataTable sysAutoKeyPendingTbl) { return(base.Channel.UpdateSysAutoKeyPending(ref sysAutoKeyPendingTbl)); }