Esempio n. 1
0
 private void winPrivilege_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     BasicControl.CloseWindow(this.Name);
 }
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                dt = TableQuery[0];
                //获取主表
                DataRow[] dw = dtOpenWin.Select("WindowsName = '" + titleName + "'");
                if (State == "Add" || this.titleName.Split('-')[2] == "New" || State == "Copy" || State == "trun")
                {
                    if (!gbqb.IsRePeat(TableQuery[0].ToString(), BillNo) || TableQuery[0].Rows[0].RowState.ToString() == "Modified")
                    {
                        IsReadOnly = true;
                        try
                        {
                            //保存并关闭窗体
                            foreach (DataRow dr in dw)
                            {
                                BasicControl.InnerID      = dr[0].ToString();
                                BasicControl.AssemblyName = dr[2].ToString();
                                BasicControl.WinClassName = dr[3].ToString();
                                for (int CurrentTable = 0; CurrentTable < TableQuery.Length; CurrentTable++)
                                {
                                    if (OrderStart.TrunStart == "trun")
                                    {
                                        if (FromTableName[CurrentTable] != "")
                                        {
                                            //修改来源单状态(考虑框架代码)
                                            foreach (DataRow drT in TableQuery[CurrentTable].Rows)
                                            {
                                                if (string.IsNullOrEmpty(drT["FromBillNo"].ToString()))
                                                {
                                                    continue;//跳出本次循环
                                                }
                                                gbqb.UpdateSync("update " + FromTableName[CurrentTable] + " set State=1 from " + TableQuery[CurrentTable].TableName + " A " +
                                                                "inner join " + FromTableName[CurrentTable] + " B on A.FromBillNo=B.BillNo and A.FromInnerID=B.InnerID " +
                                                                "where A.FromBillNo='" + drT["FromBillNo"].ToString() + "'");
                                            }
                                        }
                                        if (CurrentTable == TableQuery.Length - 1)
                                        {
                                            OrderStart.TrunStart = "";
                                        }
                                    }
                                    gbqb.UpdateTable(TableQuery[CurrentTable].TableName, TableQuery[CurrentTable]);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            //保存失败则删除表头数据
                            dt.Rows[0].Delete();
                            gbqb.UpdateTable(dt.TableName, dt);
                            //反过账语法

                            //抛出异常
                            Message = "错误:" + ex.Message;
                            //不继续往下执行
                            IsReadOnly = false;
                            return;
                        }
                        if (State == "Add" || this.titleName.Split('-')[2] == "New")
                        {
                            bc.CloseWindow(titleName);
                            //重新打开新增的资料
                            bc.CreateForm(TableQuery[0].Rows[0]["BillNo"].ToString(), this.titleName.Split('-')[0]);
                        }
                    }
                    else
                    {
                        IsReadOnly = false;
                        State      = "Warning";
                        //MessageBox.Show("单据编号不能重复。", "警告", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                        Message = "警告:单据编号不能重复。";
                    }
                }
                else if (State == "Modify")
                {
                    IsReadOnly = true;
                    //保存
                    for (int CurrentTable = 0; CurrentTable < TableQuery.Length; CurrentTable++)
                    {
                        if (State == "trun")
                        {
                            if (FromTableName[CurrentTable] != "")
                            {
                                //修改来源单状态(考虑框架代码)
                                foreach (DataRow drT in TableQuery[CurrentTable].Rows)
                                {
                                    gbqb.UpdateSync("update " + FromTableName[CurrentTable] + " set State=1 from " + TableQuery[CurrentTable].TableName + " A " +
                                                    "inner join " + FromTableName[CurrentTable] + " B on A.FromBillNo=B.BillNo and A.FromInnerID=B.InnerID " +
                                                    "where A.FromBillNo='" + drT["FromBillNo"].ToString() + "'");
                                }
                            }
                            if (CurrentTable == TableQuery.Length - 1)
                            {
                                State = "Ready";
                            }
                        }

                        gbqb.UpdateTable(TableQuery[CurrentTable].TableName, TableQuery[CurrentTable]);
                        //反过账语法
                    }
                }
                State = "Ready";
            }
            catch (Exception ex)
            {
                IsReadOnly = false;
                Message    = "Error:" + ex.Message;
                //MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }