Browse Source

报告程序新增零元素数据库Expression为空时提示行为
标准库编辑器修改零元素规则保存时重写字段的顺序

cxs 1 year ago
parent
commit
b7437d141b

+ 4 - 1
OTSCPP/OTSClassifyEngine/ExpressionClassifyEngine.cpp

@@ -21,7 +21,10 @@ bool ExpressionClassifyEngine::Init()
 		return FALSE;
 	}
 	 pLibFileMgr->LoadMaxEDSRulesData(m_std);
-	 pLibFileMgr->LoadZeroElementRulesData(m_std);
+	 if (!pLibFileMgr->LoadZeroElementRulesData(m_std))
+	 {
+		 //return false;
+	 }
 	
 	 string constantStr = pLibFileMgr->LoadConstantsData();
 	 std::map<std::string, double> m_mapConstants;

+ 4 - 1
OTSCPP/OTSClassifyEngine/ExpressionParseEngine/ZeroElementRulesDataDB.cpp

@@ -142,7 +142,10 @@ namespace OTSClassifyEngine
 		nCol = (int)CZeroElementRulesDataTable::ColumnID::S_Expression - (int)CZeroElementRulesDataTable::ColumnID::MIN;
 		sExpression = a_query->GetColStringValue(nCol, _T(""));
 		m_ZeroElementRuleItem->SetExpressionStr(sExpression.GetString());
-
+		if (sExpression == "")
+		{
+			return FALSE;
+		}
 		return TRUE;
 	}
 	

+ 6 - 0
OTSCPP/OTSClassifyEngine/SpectrumCompareEngine/OTSSTDLibFileMgr.cpp

@@ -132,6 +132,12 @@ namespace OTSClassifyEngine
 		GetZeroElementRulesDataDB();
 
 		auto rules= m_pZeroElementRulesDataDB->GetZeroElementRulesLib(bClear);
+		if (rules.size() == 0)
+		{
+			AfxMessageBox(_T("The format of the zero element rule is incorrect. Please use the zero element interface in the standard library editor to save and try again!"));
+				
+			return FALSE;
+		}
 		lib->setZeroElementRuleList(rules);
 
 		return TRUE;

+ 1 - 1
OTSCPP/OTSSQLiteDll/SQLiteDB.cpp

@@ -91,7 +91,7 @@ namespace OTSSQLITE
 		{
 			LogErrorTrace(__FILE__, __LINE__, _T(sTableName+":Invalid table columns(%d): should be %d"), query->GetColCount(), tableInfoPtr->GetColumnCount());
 		}
-
+		
 		return query;
 	}
 	CDBQueryBasePtr	CSQLiteDB::GetCommandStringQuery(LPCTSTR a_commandStr /*= nullptr*/)

+ 6 - 18
OTSPartA_STDEditor/UI/Form_ZeroElementRules.cs

@@ -437,16 +437,13 @@ namespace OTSPartA_STDEditor
             m_dbConnection.Open();
 
             System.Data.SQLite.SQLiteCommand cmm = m_dbConnection.CreateCommand();
-            cmm.CommandText = "delete from ZeroElementRules";
 
-            try
-            {
-                cmm.ExecuteNonQuery();
-            }
-            catch (Exception ex)
-            {
-                MessageBox.Show(ex.ToString());
-            }
+            cmm.CommandText = "drop table ZeroElementRules";
+            cmm.ExecuteNonQuery();
+
+            cmm.CommandText = "CREATE TABLE ZeroElementRules (ZeroElement TEXT,UsingElementList TEXT, UsingImgPropertyList TEXT,UsingOtherPropertyList TEXT,Expression TEXT)";
+            cmm.ExecuteNonQuery();
+
             System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from ZeroElementRules", m_dbConnection);
             System.Data.SQLite.SQLiteCommandBuilder qLiteCommandBuilder = new System.Data.SQLite.SQLiteCommandBuilder(m_dataAdapter);
 
@@ -454,8 +451,6 @@ namespace OTSPartA_STDEditor
             m_dataAdapter.Fill(ds, "ZeroElementRules");
             DataTable dt = ds.Tables["ZeroElementRules"];
 
-            dt.Clear();
-
             for (int num = 0; num < XmlTree_ZeroElementRules.Nodes.Count; num++)
             {
                 string UsingElementList = "";
@@ -466,13 +461,6 @@ namespace OTSPartA_STDEditor
                 List<string> UsingOtherPropertyL = new List<string>();
 
                 string str_RemoveBlank = "";
-                //forth_elem干扰or分隔符,故先行去掉
-                //if (XmlTree_ZeroElementRules.Nodes[num].Tag.ToString().Contains("fourth_elem"))
-                //{
-                //    str_RemoveBlank = str_RemoveBlank.Replace("fourth_elem", "");
-                //    UsingOtherPropertyList = "fourth_elem,";
-                //}
-
                 str_RemoveBlank = XmlTree_ZeroElementRules.Nodes[num].Tag.ToString().Replace(" ", "");
                 string[] str_Removeand = System.Text.RegularExpressions.Regex.Split(str_RemoveBlank, "and", System.Text.RegularExpressions.RegexOptions.None);
                 List<string> str_Removeandor = new List<string>();