private void AddNewRowToDetailTable(DataRow sourceRow, bool isTemp) { if ((sourceRow.RowState == DataRowState.Deleted) || (sourceRow.RowState == DataRowState.Detached)) { return; } DataRow newRow = SuiteDetailTable.NewRow(); foreach (DataColumn col in sourceRow.Table.Columns) { if (SuiteDetailTable.Columns.Contains(col.ColumnName)) { newRow[col.ColumnName] = sourceRow[col]; } } newRow[ConstSchemaNames.SuiteDetailColSuiteSerialNo] = CurrentSuiteNo; if (isTemp) { newRow[ConstSchemaNames.SuiteDetailColOrderFlag] = OrderManagerKind.ForTemp; } else { newRow[ConstSchemaNames.SuiteDetailColOrderFlag] = OrderManagerKind.ForLong; } SuiteDetailTable.Rows.Add(newRow); }
/// <summary> /// 保存当前成套医嘱的明细数据 /// </summary> public void SaveSuiteDetailData() { //先清除老的数据 DataRow[] delRows = SuiteDetailTable.Select(ConstSchemaNames.SuiteDetailColSuiteSerialNo + " = " + CurrentSuiteNo); foreach (DataRow row in delRows) { SuiteDetailTable.Rows.Remove(row); } // 将医嘱表数据合并到成套明细表(因为需要将合并后的行状态都为新行,所以采用AddRow的方式) foreach (DataRow row in TempOrderTable.Rows) { AddNewRowToDetailTable(row, true); } foreach (DataRow row in LongOrderTable.Rows) { AddNewRowToDetailTable(row, false); } // 删除数据库中此序号对应的明细记录 m_SqlExecutor.ExecuteNoneQuery(String.Format(ConstSqlSentences.FormatDeleteSuiteDetail, ConstSchemaNames.SuiteDetailTableName, CurrentSuiteNo)); // 保存 m_SqlExecutor.UpdateTable(SuiteDetailTable, ConstSchemaNames.SuiteDetailTableName, false); //SuiteDetailTable.AcceptChanges(); }
private void InitializeTableSchema() { _tempOrderTable = CreateAndSetOrderTable(ConstSchemaNames.TempOrderTableName); _longOrderTable = CreateAndSetOrderTable(ConstSchemaNames.LongOrderTableName); m_TransTable = SuiteDetailTable.Clone(); // 补充在医嘱表中不允许为空的列,并设置默认值 m_TransTable.Columns.AddRange(new DataColumn[] { new DataColumn("syxh", typeof(decimal)) , new DataColumn("fzxh", typeof(decimal)) , new DataColumn("bqdm", typeof(string)) , new DataColumn("ksdm", typeof(string)) , new DataColumn("lrysdm", typeof(string)) , new DataColumn("lrrq", typeof(string)) , new DataColumn("yzzt", typeof(int)) , new DataColumn("tsbj", typeof(int)) }); m_TransTable.Columns["syxh"].DefaultValue = 1; m_TransTable.Columns["fzxh"].DefaultValue = 1; m_TransTable.Columns["bqdm"].DefaultValue = ""; m_TransTable.Columns["ksdm"].DefaultValue = ""; m_TransTable.Columns["lrysdm"].DefaultValue = "00"; m_TransTable.Columns["lrrq"].DefaultValue = ""; m_TransTable.Columns["yzzt"].DefaultValue = (int)OrderState.New; m_TransTable.Columns["tsbj"].DefaultValue = 0; }
/// <summary> /// 删除指定的成套医嘱 /// </summary> /// <param name="serialNo"></param> public void DeleteMasterRecord(decimal serialNo) { if ((serialNo > 0) && (m_MessageBox.MessageShow("确定要删除当前记录吗?", CustomMessageBoxKind.QuestionYesNo) == DialogResult.Yes)) { // 删除对应明细, 删除主记录 string delCmd = String.Format(CultureInfo.CurrentCulture , ConstSqlSentences.FormatDeleteSuiteData , ConstSchemaNames.SuiteDetailTableName , ConstSchemaNames.SuiteTableName , serialNo); try { m_SqlExecutor.ExecuteNoneQuery(delCmd); // 从DataTable中移除 DataRow[] matchRows = SuiteMasterTable.Select(ConstSchemaNames.SuiteDetailColSuiteSerialNo + " = " + serialNo); foreach (DataRow row in matchRows) { row.Delete(); } matchRows = SuiteDetailTable.Select(ConstSchemaNames.SuiteDetailColSuiteSerialNo + " = " + serialNo); foreach (DataRow row in matchRows) { row.Delete(); } } catch { m_MessageBox.MessageShow("删除记录出错,请重试!", CustomMessageBoxKind.ErrorYes); } } }