/*------------------------------------------------------------------------------------------- * 人员名单操作类 * 创建:杨斌 2011-12-13 * ----------------------------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Collections.Specialized; using GeneralLib; using System.Collections; using System.Timers; //using System.Timers; namespace SunVoteARSPPT { public class RosterCloumn { public int ColumnID { get; set; } public int ColumnIndex { get; set; } /// /// 名单字段显示名称 /// public string ColumnName { get; set; } ///// ///// 名单中键盘编号字段ID,现默认为名单中的第1列 ///// //public string ClolumnIDKeypadID { get; set; } ///// ///// 签到吗字段ID ///// //public string ClolumnIDSingnInCode { get; set; } ///// ///// 反馈明细显示的姓名字段ID ///// //public string ClolumnIDShowNameDetail { get; set; } } public class RosterRow { public int RowID { get; set; } public int RowIndex { get; set; } /// /// 对应名单中的各列字段值,索引从0开始 /// public string[] Cells { get; set; } } public class RosterList { /// /// 名单列 /// public TDictionary Columns { get; set; } /// /// 名单行 /// public TDictionary Rows { get; set; } private Dictionary VIDToRIDs = null; /// /// 会议ID /// public string MeetID { get; set; } /// /// 键盘编号字段索引,无则为-1,默认为0即第一列 /// public int KeypadIdColumnIndex { get; set; } /// /// 人员名单签到码字段索引,无则为-1 /// public int SingnInCodeColumnIndex { get; set; } public RosterList() { Columns = new TDictionary(); Rows = new TDictionary(); if (MeetID == null) MeetID = ""; KeypadIdColumnIndex = 0; SingnInCodeColumnIndex = -1; } /// /// 全局的人员名单。在切换PPT,导入名单时加载 /// 杨斌 2015-11-25 /// public static RosterList RosterLoad = null; /// /// 创建 赵丽 2012-06-18 /// 记录签到码索引 /// public int SignInCodeIndex { get { int res = 0; try { string sql = "Select M_SignInCodeColumn From ST_Meet Where M_ID='0'"; DataSet ds = GlobalInfo.DBOperation.GetDataSet(sql); DataTable tb = ds.Tables[0]; if (tb.Rows.Count > 0) { try { res = (int)(tb.Rows[0]["M_SignInCodeColumn"]); } catch { res = 0; } } } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } set { try { string sql = "Update ST_Meet Set M_SignInCodeColumn=" + value.ToString() + " Where M_ID='0'"; GlobalInfo.DBOperation.ExecuteNonQuery(sql); } catch (Exception ex) { SystemLog.WriterLog(ex); } } } /// /// 投票权重字段名称 /// 创建:杨斌 2012-11-27 /// public const string RateIndexColName = "M_VoteRateColumn"; /// /// 投票权重字段索引 /// 创建:杨斌 2012-11-27 /// public int VoteRateIndex { get { GlobalInfo.DBOperation.AddTableColumnInt("ST_Meet", RateIndexColName, 0); int res = 0; try { string sql = "Select " + RateIndexColName + " From ST_Meet Where M_ID='0'"; DataSet ds = GlobalInfo.DBOperation.GetDataSet(sql); DataTable tb = ds.Tables[0]; if (tb.Rows.Count > 0) res = ConvertOper.Convert(tb.Rows[0][RateIndexColName].ToString()).ToInt; } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } set { GlobalInfo.DBOperation.AddTableColumnInt("ST_Meet", RateIndexColName, 0); try { string sql = "Update ST_Meet Set " + RateIndexColName + "=" + value.ToString() + " Where M_ID='0'"; GlobalInfo.DBOperation.ExecuteNonQuery(sql); } catch (Exception ex) { SystemLog.WriterLog(ex); } } } /// /// 是否启用名单 /// public bool RosterEnabled { get { bool res = false; try { string sql = "Select M_RosterEnabled From ST_Meet Where M_ID='0'"; //2012-12-04 修改演示模式 快捷键报错的问题 赵丽 DataSet ds = GlobalInfo.DBOperation.GetDataSet(sql); if (ds.Tables.Count > 0)//杨斌 2013-11-27 { DataTable tb = ds.Tables[0]; if (tb.Rows.Count > 0) res = (bool)(tb.Rows[0]["M_RosterEnabled"]); } } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } set { try { //string sql = "Select M_RosterEnabled From ST_Meet Where M_ID='0'"; //GlobalInfo.DBOperation.OpenDataSet(sql); //DataTable tb = GlobalInfo.DBOperation.DataSet.Tables[0]; //DataRow row=null; //if (tb.Rows.Count > 0) //{ // row = tb.Rows[0]; //} //else //{ // row = tb.NewRow(); // tb.Rows.Add(row); //} //row["M_RosterEnabled"] = value; //GlobalInfo.DBOperation.UpdateDataSet(); //GlobalInfo.DBOperation.CloseDataSet(); string sql = "Update ST_Meet Set M_RosterEnabled=" + value.ToString() + " Where M_ID='0'"; GlobalInfo.DBOperation.ExecuteNonQuery(sql); } catch (Exception ex) { SystemLog.WriterLog(ex); } } } /// /// 加载名单字段 /// public bool LoadCloumn(DBOper dbOperation) { bool res = false; try { Columns.Clear(); string sql = "Select * From ST_RosterColumn Order By RC_Index Asc"; DataSet ds = dbOperation.GetDataSet(sql); if (ds.Tables.Count > 0) { DataTable tb = ds.Tables[0]; for (int i = 0; i < tb.Rows.Count; i++) { RosterCloumn col = new RosterCloumn(); col.ColumnID = ConvertOper.Convert(tb.Rows[i]["RC_ID"].ToString()).ToInt; col.ColumnIndex = i + 1; col.ColumnName = tb.Rows[i]["RC_Name"].ToString(); Columns.Add(col.ColumnID.ToString(), col); } } //杨斌 2017-03-30 Dictionary dicRUID = GetDicRUID(); if (dicRUID.Count > 0) { RosterCloumn col = new RosterCloumn(); col.ColumnID = -100; col.ColumnIndex = Columns.Count + 1; col.ColumnName = GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "rbtSignInModeRandom", "随机码签到"); Columns.Add(col.ColumnID.ToString(), col); } res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } public static Dictionary GetDicRUID() { TagSet tagSet = new TagSet(Globals.SunVoteARSAddIn.Application.ActivePresentation.Tags); string uidRandom = tagSet.GetValue(TagKey.SignInUIDRandom).Value; string[] aryRUID = uidRandom.Split('|'); Dictionary dicRUID = new Dictionary(); if (aryRUID.Length >= 0) { foreach (var v in aryRUID) { string[] ary2 = v.Split('='); if (ary2.Length >= 2) { if (!dicRUID.ContainsKey(ary2[1])) dicRUID.Add(ary2[1], ary2[0]); } } } return dicRUID; } public void LoadVIDToRID(DBOper dbOperation) { if (VIDToRIDs == null) VIDToRIDs = new Dictionary(); VIDToRIDs.Clear(); string sql = "Select * From ST_Voter"; dbOperation.OpenDataSet(sql); if (dbOperation.DataSet.Tables.Count < 1) return; DataTable tb = dbOperation.DataSet.Tables[0]; for (int i = 0; i < tb.Rows.Count; i++) { string vid = ConvertOper.Convert(tb.Rows[i]["V_ID"].ToString()).Value; string rosterID = ConvertOper.Convert(tb.Rows[i]["RR_ID"].ToString()).Value; if (!VIDToRIDs.ContainsKey(vid)) VIDToRIDs.Add(vid, rosterID); } dbOperation.CloseDataSet(); } public RosterRow GetRowByVoterID(string vid) { RosterRow res = null; if (VIDToRIDs.ContainsKey(vid)) { string rosterID = VIDToRIDs[vid]; if (Rows.Contains(rosterID)) res = Rows[rosterID]; } return res; } public bool LoadRow(DBOper dbOperation) { bool res = false; try { Rows.Clear(); string sql = "Select * From ST_RosterRow Order By RR_Index ASC"; DataSet ds = dbOperation.GetDataSet(sql); DataTable tb = ds.Tables[0]; for (int i = 0; i < tb.Rows.Count; i++) { RosterRow row = new RosterRow(); row.RowID = ConvertOper.Convert(tb.Rows[i]["RR_ID"].ToString()).ToInt; row.RowIndex = i + 1; row.Cells = new string[Columns.Count]; Rows.Add(row.RowID.ToString(), row); } LoadVIDToRID(dbOperation); res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } private Dictionary DicKeyToRow = new Dictionary(); /// /// 获取键盘编号对应的名单行 /// 杨斌 2015-04-21 /// /// /// public RosterRow GetRowByKeyId(string keyId) { RosterRow res = null; if (DicKeyToRow.ContainsKey(keyId)) res = DicKeyToRow[keyId]; return res; } public bool LoadValue(DBOper dbOperation) { bool res = false; try { string sql = "SELECT ST_RosterValue.RR_ID, ST_RosterValue.RC_ID, ST_RosterRow.RR_Index, ST_RosterColumn.RC_Index, ST_RosterValue.RV_Text" + " FROM ST_RosterColumn INNER JOIN (ST_RosterRow INNER JOIN ST_RosterValue ON ST_RosterRow.RR_ID = ST_RosterValue.RR_ID)" + " ON ST_RosterColumn.RC_ID = ST_RosterValue.RC_ID"; DataSet ds = dbOperation.GetDataSet(sql); DataTable tb = ds.Tables[0]; for (int i = 0; i < tb.Rows.Count; i++) { string rowId = tb.Rows[i]["RR_ID"].ToString(); string colId = tb.Rows[i]["RC_ID"].ToString(); int col = Columns[colId].ColumnIndex - 1; //Rows[rowId].Cells = new string[Columns.Count]; Rows[rowId].Cells[col] = tb.Rows[i]["RV_Text"].ToString(); } //杨斌 2017-03-30 int lastCol = Columns.Count - 1; if (Columns[lastCol].ColumnID == -100) { Dictionary dicRUID = GetDicRUID(); for (int i = 0; i < Rows.Count; i++) { string rid = Rows[i].RowIndex + ""; if (dicRUID.ContainsKey(rid)) Rows[i].Cells[lastCol] = dicRUID[rid]; } } //杨斌 2014-11-05 if (RosterEnabled) { if (Columns.Count > 1) GlobalInfo.response.ShowNameCol = this.Columns[1].ColumnName; else if (Columns.Count > 0) GlobalInfo.response.ShowNameCol = this.Columns[0].ColumnName; } //杨斌 2015-04-21 DicKeyToRow.Clear(); for (int i = 0; i < Rows.Count; i++) { string keyId = Rows[i].Cells[0]; if (!string.IsNullOrEmpty(keyId))//杨斌 2016-03-31 { if ((keyId.Length > 0) && (!DicKeyToRow.ContainsKey(keyId))) DicKeyToRow.Add(keyId, Rows[i]); } else { string a = keyId; } } res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } /// /// 加载人员名单 /// /// public bool LoadRoster() { bool res = false; //System.Diagnostics.Stopwatch t = System.Diagnostics.Stopwatch.StartNew(); res = LoadCloumn(GlobalInfo.DBOperation); res = (res && LoadRow(GlobalInfo.DBOperation)); res = (res && LoadValue(GlobalInfo.DBOperation)); //System.Windows.Forms.MessageBox.Show("LoadRoster" + t.ElapsedMilliseconds); return res; } /// /// 获取名单二位数组,含列标题 /// /// public string[,] GetArrayTable() { string[,] aryTable = null; int rowCount = 1 + Rows.Count; int colCount = Columns.Count; if ((rowCount > 0) && (colCount > 0)) { aryTable = new string[rowCount, colCount]; for (int col = 0; col < colCount; col++) { aryTable[0, col] = Columns[col].ColumnName; } for (int row = 1; row < rowCount; row++) { for (int col = 0; col < colCount; col++) { aryTable[row, col] = Rows[row - 1].Cells[col]; } } } return aryTable; } /// /// 保存名单 /// /// 名单二位数组,含列标题 /// public bool SaveRoster(string[,] aryTable) { return SaveRoster(aryTable, true); } /// /// 保存名单。杨斌 2015-03-31 /// /// /// /// /// public bool SaveRoster(string[,] aryTable, bool beSaveColumns, DBOper dbOperation, bool beLoadData = true) { bool res = false; try { //开始事务 dbOperation.BeginTrans(); TDictionary KeyToRowID = new TDictionary(); string sql = ""; //删除列记录 if (beSaveColumns)//杨斌 2014-04-11 { sql = "Delete * From ST_RosterColumn"; dbOperation.ExecuteNonQuery(sql); } //删除行记录 sql = "Delete * From ST_RosterRow"; dbOperation.ExecuteNonQuery(sql); //添加列记录 if (beSaveColumns)//杨斌 2014-04-11 { sql = "Select * From ST_RosterColumn"; dbOperation.OpenDataSet(sql); for (int i = 0; i < aryTable.GetLength(1); i++) { DataRow row = dbOperation.DataSet.Tables[0].NewRow(); row["RC_Index"] = i + 1; row["RC_Name"] = aryTable[0, i]; dbOperation.DataSet.Tables[0].Rows.Add(row); } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); } //添加行记录 sql = "Select * From ST_RosterRow"; dbOperation.OpenDataSet(sql); for (int i = 1; i < aryTable.GetLength(0); i++) { DataRow row = dbOperation.DataSet.Tables[0].NewRow(); row["RR_Index"] = i + 1; dbOperation.DataSet.Tables[0].Rows.Add(row); } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); //更新列记录 LoadCloumn(dbOperation); //更新行记录 LoadRow(dbOperation); //添加值记录 sql = "Select * From ST_RosterValue"; dbOperation.OpenDataSet(sql); int lastCol = Columns.Count - 1; int colDel = 0; if (Columns[lastCol].ColumnID == -100) colDel = 1; for (int i = 0; i < Rows.Count; i++) { for (int n = 0; n < Columns.Count - colDel; n++) { DataRow row = dbOperation.DataSet.Tables[0].NewRow(); row["RR_ID"] = Rows[i].RowID; row["RC_ID"] = Columns[n].ColumnID; row["RV_Text"] = aryTable[i + 1, n]; dbOperation.DataSet.Tables[0].Rows.Add(row); if (Columns[n].ColumnIndex == 1) { string keyIds = row["RV_Text"].ToString(); int rowId = ConvertOper.Convert(row["RR_ID"].ToString()).ToInt; if (ConvertOper.Convert(keyIds).ToInt > 0) { if (!KeyToRowID.Contains(keyIds)) KeyToRowID.Add(keyIds, rowId); } } } } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); //更新关联名单的ID sql = "Select * From ST_Voter"; dbOperation.OpenDataSet(sql); for (int i = 0; i < dbOperation.DataSet.Tables[0].Rows.Count; i++) { DataRow row = dbOperation.DataSet.Tables[0].Rows[i]; string keyIds = row["V_KeypadID"].ToString(); if (KeyToRowID.Contains(keyIds)) { row["RR_ID"] = KeyToRowID[keyIds]; } } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); //提交事务 dbOperation.CommitTrans(); if (beLoadData)//系统库不需重复加载 { //更新值记录 LoadValue(dbOperation); } res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); dbOperation.RollbackTrans(); } return res; } /// /// 保存名单 /// /// 名单二位数组,含列标题 /// 是否更新列 /// public bool SaveRoster(string[,] aryTable, bool beSaveColumns) { //杨斌 2015-03-31 return SaveRoster(aryTable, beSaveColumns, GlobalInfo.DBOperation); /* bool res = false; try { //开始事务 GlobalInfo.DBOperation.BeginTrans(); TDictionary KeyToRowID = new TDictionary(); string sql = ""; //删除列记录 if (beSaveColumns)//杨斌 2014-04-11 { sql = "Delete * From ST_RosterColumn"; GlobalInfo.DBOperation.ExecuteNonQuery(sql); } //删除行记录 sql = "Delete * From ST_RosterRow"; GlobalInfo.DBOperation.ExecuteNonQuery(sql); //添加列记录 if (beSaveColumns)//杨斌 2014-04-11 { sql = "Select * From ST_RosterColumn"; GlobalInfo.DBOperation.OpenDataSet(sql); for (int i = 0; i < aryTable.GetLength(1); i++) { DataRow row = GlobalInfo.DBOperation.DataSet.Tables[0].NewRow(); row["RC_Index"] = i + 1; row["RC_Name"] = aryTable[0, i]; GlobalInfo.DBOperation.DataSet.Tables[0].Rows.Add(row); } GlobalInfo.DBOperation.UpdateDataSet(); GlobalInfo.DBOperation.CloseDataSet(); } //添加行记录 sql = "Select * From ST_RosterRow"; GlobalInfo.DBOperation.OpenDataSet(sql); for (int i = 1; i < aryTable.GetLength(0); i++) { DataRow row = GlobalInfo.DBOperation.DataSet.Tables[0].NewRow(); row["RR_Index"] = i + 1; GlobalInfo.DBOperation.DataSet.Tables[0].Rows.Add(row); } GlobalInfo.DBOperation.UpdateDataSet(); GlobalInfo.DBOperation.CloseDataSet(); //更新列记录 LoadCloumn(); //更新行记录 LoadRow(); //添加值记录 sql = "Select * From ST_RosterValue"; GlobalInfo.DBOperation.OpenDataSet(sql); for (int i = 0; i < Rows.Count; i++) { for (int n = 0; n < Columns.Count; n++) { DataRow row = GlobalInfo.DBOperation.DataSet.Tables[0].NewRow(); row["RR_ID"] = Rows[i].RowID; row["RC_ID"] = Columns[n].ColumnID; row["RV_Text"] = aryTable[i + 1, n]; GlobalInfo.DBOperation.DataSet.Tables[0].Rows.Add(row); if (Columns[n].ColumnIndex == 1) { string keyIds = row["RV_Text"].ToString(); int rowId = ConvertOper.Convert(row["RR_ID"].ToString()).ToInt; if (ConvertOper.Convert(keyIds).ToInt > 0) { if (!KeyToRowID.Contains(keyIds)) KeyToRowID.Add(keyIds, rowId); } } } } GlobalInfo.DBOperation.UpdateDataSet(); GlobalInfo.DBOperation.CloseDataSet(); //更新关联名单的ID sql = "Select * From ST_Voter"; GlobalInfo.DBOperation.OpenDataSet(sql); for (int i = 0; i < GlobalInfo.DBOperation.DataSet.Tables[0].Rows.Count; i++) { DataRow row = GlobalInfo.DBOperation.DataSet.Tables[0].Rows[i]; string keyIds = row["V_KeypadID"].ToString(); if (KeyToRowID.Contains(keyIds)) { row["RR_ID"] = KeyToRowID[keyIds]; } } GlobalInfo.DBOperation.UpdateDataSet(); GlobalInfo.DBOperation.CloseDataSet(); //提交事务 GlobalInfo.DBOperation.CommitTrans(); //更新值记录 LoadValue(); res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); GlobalInfo.DBOperation.RollbackTrans(); } return res; //**/ } Timer TmrSaveRosterMeet = null; bool IsRunTmrSaveRosterMeet = false; private void TmrSaveRosterMeet_Elapsed(object sender, ElapsedEventArgs e) { if (IsRunTmrSaveRosterMeet) return; if (VoteServer.DicRosterMeet.Count < 1) return; IsRunTmrSaveRosterMeet = true; //string meetName = DicRosterMeet.Keys.ToList()[0]; //List> lstTable = DicRosterMeet[meetName]; //string meetNo = lstTable[0][0]; //lstTable.RemoveAt(0); //DicRosterMeet.Remove(meetName); //RosterAddMeetSave(lstTable, meetNo, meetName); SaveRosterMeet(); IsRunTmrSaveRosterMeet = false; } /// /// 追加分会场名单。杨斌 2017-12-11 /// public void RosterAddMeet(List> lstTable, string meetNo, string meetName) { if (VoteServer.DicRosterMeet.ContainsKey(meetName)) VoteServer.DicRosterMeet[meetName] = lstTable; else VoteServer.DicRosterMeet.Add(meetName, lstTable); VoteServer.DicRosterMeet[meetName].Insert(0, new List { meetNo, meetName }); //if (TmrSaveRosterMeet == null) //{ // TmrSaveRosterMeet = new Timer(); // TmrSaveRosterMeet.Elapsed += TmrSaveRosterMeet_Elapsed; // TmrSaveRosterMeet.Interval = 10; // TmrSaveRosterMeet.AutoReset = false; //} //TmrSaveRosterMeet.Enabled = true; } public bool SaveRosterMeet() { bool res = false; DBOper dbOperation = GlobalInfo.DBOperation; try { int rowCount = 0; int colCount = Columns.Count; foreach (var v in VoteServer.DicRosterMeet) { int rowCountA = v.Value.Count - 2; rowCount += rowCountA; } rowCount++; string[,] aryTable = new string[rowCount, colCount]; for (int col = 0; col < colCount; col++) aryTable[0, col] = Columns[col].ColumnName; int row = 1; foreach (var v in VoteServer.DicRosterMeet) { string meetNo = v.Value[0][0]; string meetName = v.Value[0][1]; for (int i = 2; i < v.Value.Count; i++) { for (int col = 0; col < colCount; col++) { if (col == 0) aryTable[row, col] = meetNo + "F" + v.Value[i][0]; else if (col == 1) aryTable[row, col] = meetName; else if (v.Value[i].Count >= col) aryTable[row, col] = v.Value[i][col - 1]; } row++; } } res = SaveRoster(aryTable, false, dbOperation, true); } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } public bool RosterAddMeetSave(List> lstTable, string meetNo, string meetName) { bool res = false; DBOper dbOperation = GlobalInfo.DBOperation; try { //开始事务 dbOperation.BeginTrans(); TDictionary KeyToRowID = new TDictionary(); string sql = ""; int exCount = 0; //查询会场名对应列ID int RC_ID = -1; sql = "Select RC_ID From ST_RosterColumn Where RC_Index=2"; dbOperation.OpenDataSet(sql); if (dbOperation.DataSet.Tables.Count > 0) { if (dbOperation.DataSet.Tables[0].Rows.Count > 0) RC_ID = (int)dbOperation.DataSet.Tables[0].Rows[0]["RC_ID"]; } dbOperation.CloseDataSet(); //删除分会场名单 if (RC_ID != -1) { //删除名单值 sql = "DELETE * FROM ST_RosterValue WHERE((ST_RosterValue.RC_ID = " + RC_ID + ") And(ST_RosterValue.RV_Text = '" + meetName + "'))"; exCount = dbOperation.ExecuteNonQuery(sql); //删除名单行 sql = "DELETE * FROM ST_RosterRow WHERE RR_ID In(SELECT RR_ID FROM ST_RosterValue WHERE((ST_RosterValue.RC_ID = " + RC_ID + ") And(ST_RosterValue.RV_Text = '" + meetName + "')))"; exCount = dbOperation.ExecuteNonQuery(sql); } //添加行记录 int countRow = 0; sql = "Select * From ST_RosterRow"; dbOperation.OpenDataSet(sql); if (dbOperation.DataSet.Tables.Count > 0) { DataTable dataTable = dbOperation.DataSet.Tables[0]; countRow = dataTable.Rows.Count; for (int i = 1; i < lstTable.Count; i++)//索引0是列标题,数据从索引1开始 { DataRow row = dbOperation.DataSet.Tables[0].NewRow(); row["RR_Index"] = i + 1; dbOperation.DataSet.Tables[0].Rows.Add(row); int rr_id = (int)row["RR_ID"]; } } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); //更新列记录 LoadCloumn(dbOperation); //更新行记录 LoadRow(dbOperation); //添加纪录 sql = "SELECT ST_RosterRow.RR_ID, ST_RosterRow.RR_Index, ST_RosterValue.RC_ID, ST_RosterValue.RV_Text FROM ST_RosterRow INNER JOIN ST_RosterValue ON ST_RosterRow.RR_ID = ST_RosterValue.RR_ID"; dbOperation.OpenDataSet(sql); if (dbOperation.DataSet.Tables.Count > 0) { DataTable dataTable = dbOperation.DataSet.Tables[0]; int rowNo = dataTable.Rows.Count; for (int i = 1; i < lstTable.Count; i++)//索引0是列标题,数据从索引1开始 { rowNo++; List lsRow = lstTable[i]; for (int n = 0; n < Columns.Count; n++) { if (lsRow.Count >= n) { DataRow row = dataTable.NewRow(); row["RR_Index"] = rowNo; row["RC_ID"] = Columns[n].ColumnID; if (n == 0) { row["RV_Text"] = meetNo + "F" + lsRow[0]; } else if (n == 1) { row["RV_Text"] = meetName; } else { row["RV_Text"] = lsRow[n - 1]; } dataTable.Rows.Add(row); } } } } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); ////添加值记录 //sql = "Select * From ST_RosterValue"; //dbOperation.OpenDataSet(sql); //int lastCol = Columns.Count - 1; //int colDel = 0; //if (Columns[lastCol].ColumnID == -100) // colDel = 1; //for (int i = 0; i < Rows.Count; i++) //{ // for (int n = 0; n < Columns.Count - colDel; n++) // { // DataRow row = dbOperation.DataSet.Tables[0].NewRow(); // row["RR_ID"] = Rows[i].RowID; // row["RC_ID"] = Columns[n].ColumnID; // row["RV_Text"] = aryTable[i + 1, n]; // dbOperation.DataSet.Tables[0].Rows.Add(row); // if (Columns[n].ColumnIndex == 1) // { // string keyIds = row["RV_Text"].ToString(); // int rowId = ConvertOper.Convert(row["RR_ID"].ToString()).ToInt; // if (ConvertOper.Convert(keyIds).ToInt > 0) // { // if (!KeyToRowID.Contains(keyIds)) // KeyToRowID.Add(keyIds, rowId); // } // } // } //} //dbOperation.UpdateDataSet(); //dbOperation.CloseDataSet(); //更新关联名单的ID sql = "Select * From ST_Voter"; dbOperation.OpenDataSet(sql); for (int i = 0; i < dbOperation.DataSet.Tables[0].Rows.Count; i++) { DataRow row = dbOperation.DataSet.Tables[0].Rows[i]; string keyIds = row["V_KeypadID"].ToString(); if (KeyToRowID.Contains(keyIds)) { row["RR_ID"] = KeyToRowID[keyIds]; } } dbOperation.UpdateDataSet(); dbOperation.CloseDataSet(); //提交事务 dbOperation.CommitTrans(); //更新值记录 LoadValue(dbOperation); res = true; } catch (Exception ex) { SystemLog.WriterLog(ex); dbOperation.RollbackTrans(); } return res; //*/ } /// /// 根据键盘ID、列名称查找对应列值 /// 杨斌 2013-12-23 /// /// /// /// public static string GetRushAnswerShow(string columnName, string keyID) { string result = ""; if (string.IsNullOrEmpty(columnName)) return result; if (!GlobalInfo.response.EnableList) return result; try { string keyColName = ""; DataSet ds = new DataSet(); string sql = "SELECT ST_RosterColumn.RC_Name" + " FROM ST_RosterColumn" + " WHERE (((ST_RosterColumn.RC_Index)=1))"; ds = GlobalInfo.DBOperation.GetDataSet(sql); if (ds != null && ds.Tables.Count > 0) { DataTable t = ds.Tables[0]; if (t.Rows.Count > 0) keyColName = t.Rows[0][0].ToString(); } if (keyColName.Length > 0) { sql = "SELECT V_VoterList2." + columnName + " FROM V_VoterList2" + " WHERE (((V_VoterList2." + keyColName + ")='" + keyID + "'))"; ds = GlobalInfo.DBOperation.GetDataSet(sql); if (ds != null && ds.Tables.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { result = dr[0].ToString(); } } } } catch (Exception ex) { SystemLog.WriterLog(ex, true); } return result; } /// /// 获取字段名称索引 /// 杨斌 2015-11-25 /// /// /// public static int GetRosterColumIndex(string colName) { int colIndex = -1; try { RosterList Roster = RosterList.RosterLoad; if (Roster != null) { for (int i = 0; i < Roster.Columns.Count; i++) { if (Roster.Columns[i].ColumnName == colName) { colIndex = i; break; } } } } catch (Exception ex) { SystemLog.WriterLog(ex, true); } return colIndex; } } }