Ejemplo n.º 1
0
            public bool Execute(params object[] args)
            {
                if (!dataform.CheckOpen())
                {
                    return(false);
                }

                bool modfiles = (bool)args[0];

                Card c       = dataform.GetCard();
                Card oldCard = dataform.GetOldCard();

                if (c.Equals(oldCard))//没有修改
                {
                    MyMsg.Show(LMSG.ItIsNotChanged);
                    return(false);
                }
                if (c.id <= 0)
                {
                    MyMsg.Error(LMSG.CodeCanNotIsZero);
                    return(false);
                }
                string sql;

                if (c.id != oldCard.id)                                                                                                                                                                                                                           //修改了id
                {
                    sql = (dataform.GetOpenFile().EndsWith(".db", StringComparison.OrdinalIgnoreCase) || dataform.GetOpenFile().EndsWith(".bytes", StringComparison.OrdinalIgnoreCase)) ? DataBase.OmegaGetInsertSQL(c, false) : DataBase.GetInsertSQL(c, false); //插入
                    bool delold = MyMsg.Question(LMSG.IfDeleteCard);
                    if (delold)                                                                                                                                                                                                                                   //是否删除旧卡片
                    {
                        if (DataBase.Command(dataform.GetOpenFile(),
                                             DataBase.GetDeleteSQL(oldCard)) < 2)
                        {
                            //删除失败
                            MyMsg.Error(LMSG.DeleteFail);
                            delold = false;
                        }
                        else
                        {//删除成功,添加还原sql
                            undoSQL = DataBase.GetDeleteSQL(c) + ((dataform.GetOpenFile().EndsWith(".db", StringComparison.OrdinalIgnoreCase) || dataform.GetOpenFile().EndsWith(".bytes", StringComparison.OrdinalIgnoreCase)) ? DataBase.OmegaGetInsertSQL(oldCard, false) : DataBase.GetInsertSQL(oldCard, false));
                        }
                    }
                    else
                    {
                        undoSQL = DataBase.GetDeleteSQL(c);//还原就是删除
                    }
                    //如果删除旧卡片,则把资源修改名字,否则复制资源
                    if (modfiles)
                    {
                        if (delold)
                        {
                            YGOUtil.CardRename(c.id, oldCard.id, dataform.GetPath());
                        }
                        else
                        {
                            YGOUtil.CardCopy(c.id, oldCard.id, dataform.GetPath());
                        }

                        modifiled   = true;
                        oldid       = oldCard.id;
                        newid       = c.id;
                        this.delold = delold;
                    }
                }
                else
                {//更新数据
                    sql     = (dataform.GetOpenFile().EndsWith(".db", StringComparison.OrdinalIgnoreCase)) || dataform.GetOpenFile().EndsWith(".bytes", StringComparison.OrdinalIgnoreCase) ? DataBase.OmegaGetUpdateSQL(c) : DataBase.GetUpdateSQL(c);
                    undoSQL = (dataform.GetOpenFile().EndsWith(".db", StringComparison.OrdinalIgnoreCase)) || dataform.GetOpenFile().EndsWith(".bytes", StringComparison.OrdinalIgnoreCase) ? DataBase.OmegaGetUpdateSQL(oldCard) : DataBase.GetUpdateSQL(oldCard);
                }
                if (DataBase.Command(dataform.GetOpenFile(), sql) > 0)
                {
                    MyMsg.Show(LMSG.ModifySucceed);
                    dataform.Search(true);
                    dataform.SetCard(c);
                    return(true);
                }
                else
                {
                    MyMsg.Error(LMSG.ModifyFail);
                }

                return(false);
            }