private void checkStruct(DataTable dt, DataScript script)
        {
            f**k.Visibility   = System.Windows.Visibility.Hidden;
            update.Visibility = System.Windows.Visibility.Hidden;

            structures = TableDAL.getTableStructure(script.TableName);
            List <string> difference = new List <string>();

            sourceDt = dt;

            string error = "";

            bool havePk = false;

            foreach (DataColumn column in dt.Columns)
            {
                if (structures.FirstOrDefault(it => it.Comments == column.ColumnName) == null)
                {
                    difference.Add(column.ColumnName);
                    error += column.ColumnName + "\r\n";
                }

                if (column.ColumnName == System.Configuration.ConfigurationManager.AppSettings["pk"])
                {
                    havePk = true;
                }
            }

            if (!havePk)
            {
                error += string.Format("数据文件中缺少默认主键列({0}),请重新选择正确数据文件!\r\n", ConfigurationManager.AppSettings["pk"]);
            }

            var dsms = DataScriptMapDAL.getList(script.FID);

            if (difference.Count * 10 / dsms.Count >= 6)
            {
                string msg = "您选择的数据文件与解析器严重不匹配,请重新选择数据文件!\r\n差异字段:\r\n";
                msg += error;

                MessageBox.Show(msg);
                f**k.Visibility   = System.Windows.Visibility.Visible;
                update.Visibility = System.Windows.Visibility.Visible;

                btNext.Visibility = System.Windows.Visibility.Collapsed;
            }
            else if (difference.Count > 0)
            {
                string msg = "您选择的数据文件与解析器不匹配,差异字段:\r\n";
                msg += error;

                MessageBox.Show(msg);

                f**k.Visibility   = System.Windows.Visibility.Visible;
                update.Visibility = System.Windows.Visibility.Visible;

                btNext.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
Beispiel #2
0
        private Dictionary <string, string> getColumnMap()
        {
            Dictionary <string, string> result = new Dictionary <string, string>();

            var list = DataScriptMapDAL.getList(this.dataScriptRule.MdsImpDataScriptID);

            foreach (var item in list)
            {
                result[item.TableColName] = item.FileColName;
            }

            return(result);
        }
Beispiel #3
0
        private void delButton_Click(object sender, RoutedEventArgs e)
        {
            string error = "";

            foreach (DataScript item in dataGrid.SelectedItems)
            {
                if (item.CreatedBy != MainWindow.UserID)
                {
                    error += string.Format("解析器[{0}],是别人创建的,无法删除\r\n", item.DisplayName);
                    continue;
                }
                if (item.Release == "02")
                {
                    error += string.Format("解析器[{0}],已发布,无法删除\r\n", item.DisplayName);
                    continue;
                }

                List <string> allMaps    = DataScriptDAL.getMapColName(item.TableName);
                var           currMaps   = DataScriptMapDAL.getList(item.FID);
                var           struceures = TableDAL.getTableStructure(item.TableName);

                foreach (var cm in currMaps)
                {
                    if (allMaps.Count(it => it == cm.TableColName) > 1)
                    {
                        // 多个并用
                        continue;
                    }
                    var s = struceures.FirstOrDefault(it => it.ColumnName == cm.TableColName);
                    if (s != null && s.IsKey)
                    {
                        // 主键不能删
                        continue;
                    }
                    TableDAL.dropColumn(item.TableName, cm.TableColName);
                }

                DataScriptDAL.Delete(item.FID);
                DataScriptRuleDAL.Delete(item.FID);
                DataScriptMapDAL.delAll(item.FID);
            }

            if (!string.IsNullOrEmpty(error))
            {
                MessageBox.Show(error);
            }

            dataGrid.DataContext = DataScriptDAL.getList();
        }
Beispiel #4
0
        private void showLine()
        {
            List <DataScriptMap> maps = DataScriptMapDAL.getList(FID);

            foreach (var map in maps)
            {
                if (this.drawLine(map.FileColName, map.TableColName))
                {
                    // 如果连线成功,才记录这个对应关系,不然就是文件与脚本不匹配
                    this.ColumnMap[map.TableColName] = map.FileColName;
                    this.ScriptMap[map.TableColName] = map.TransferScript;
                }
            }

            if (this.drawLine("时间", "COLUMN0"))
            {
                this.ColumnMap["COLUMN0"] = "时间";
            }
        }