Files
lserp_cs_6.0/插件库/Lskj.Control/Model/DatabaseFormatJudgment.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

206 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace Lskj.Control.Model
{
public static class DatabaseFormatJudgment
{
/// <summary>
/// <para>说明:保存和修改的验证</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2021-9-13 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <param name="TableProperties">数据库的表格属性表</param>
/// <param name="model">控件对象</param>
/// <para>版本:1.0</para>
/// </summary>
public static string SaveOrModifyBalidation(DataTable TableProperties, ControlModel model, string fieldValue)
{
if (fieldValue==null) return "";
string SaveErrorMessage = string.Empty;//报错信息
string LengthPrompt = string.Empty;//长度提示
int MaxInputLength = 0;
if (TableProperties.Rows.Count == 0) return "";
DataRow[] ListOfAttributes = TableProperties.Select("COLUMN_NAME='" + model.FieldName + "'");
if (ListOfAttributes.Length == 0) return "";
//判断长度
if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("varchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 8000;
}
MaxInputLength = System.Text.Encoding.Default.GetBytes(fieldValue).Length;
LengthPrompt = string.Format("该字段最长{0}个英文或数字,或{1}个汉字", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "", int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "") / 2);
}
else if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("nvarchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 4000;
}
MaxInputLength = fieldValue.Length;
LengthPrompt = string.Format("该字段最长{0}个汉字(英文或数字)", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "");
}
if (!string.IsNullOrWhiteSpace(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) && int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) < MaxInputLength)
{
SaveErrorMessage = model.LabelText + "~" + model.FieldName + ": 输入内容长度超出限制," + LengthPrompt + "\r\n";
}
//判断属性是否正确
if ((ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("int") || ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("decimal")) &&!IsNumberic(fieldValue))
{
if (model.IsEmpty)
{
SaveErrorMessage = SaveErrorMessage + model.LabelText + "~" + model.FieldName + ": 数据格式错误;\r\n";
}
else {
model.Isintordecimal = true;
//输入值不为数值
if (!string.IsNullOrEmpty(fieldValue))
{
SaveErrorMessage = SaveErrorMessage + model.LabelText + "~" + model.FieldName + ": 数据格式错误;\r\n";
}
}
}
return SaveErrorMessage;
}
/// <summary>
/// <para>说明:保存和修改的验证</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2021-9-13 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// <param name="_detailColumns">明细列或表格列</param>
/// <param name="TableProperties">数据库的表格属性表</param>
/// <param name="row">修改或保存行</param>
/// <param name="row">修改或保存列</param>
/// <param name="row">修改或保存值</param>
/// </summary>
public static string SaveOrModifyBalidation(DataTable _detailColumns, DataTable TableProperties, DataRow row, DataColumn col, string fieldValue)
{
if (fieldValue == null) return "";
if (!row.Table.Columns.Contains(col.ColumnName)) return "";
if (TableProperties.Rows.Count == 0) return "";
DataRow hasContainRow = _detailColumns.Rows.Cast<DataRow>().FirstOrDefault(x => (x["fieldname"] + "").ToLower() == col.ColumnName.ToLower());
if (hasContainRow == null) return "";
DataRow[] ListOfAttributes = TableProperties.Select("COLUMN_NAME='" + col.ColumnName + "'");
if (ListOfAttributes == null || ListOfAttributes.Length == 0) return "";
string saveErrorMessage = string.Empty;//报错信息
string LengthPrompt = string.Empty;//长度提示
int MaxInputLength = 0;
//判断长度是否超出
if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("varchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 8000;
}
MaxInputLength = System.Text.Encoding.Default.GetBytes((row[col.ColumnName] + "").Replace("'", "''")).Length;
LengthPrompt = string.Format("该字段最长{0}个英文或数字,或{1}个汉字", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "", int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "") / 2);
}
else if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("nvarchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 4000;
}
MaxInputLength = (row[col.ColumnName] + "").Replace("'", "''").Length;
LengthPrompt = string.Format("该字段最长{0}个汉字(英文或数字)", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "");
}
if (!string.IsNullOrWhiteSpace(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) && int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) < MaxInputLength)
{
saveErrorMessage = saveErrorMessage + hasContainRow["username"].ToString() + "~" + col.ColumnName + ": 输入内容长度超出限制,"+ LengthPrompt + "\r\n";
}
//判断属性是否正确
if ((ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("int") || ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("decimal")) && !IsNumberic((row[col.ColumnName] + "").Replace("'", "''")) && !string.IsNullOrWhiteSpace((row[col.ColumnName] + "")))
{
saveErrorMessage = saveErrorMessage + hasContainRow["username"].ToString() + "~" + col.ColumnName + ": 数据格式错误,请输入数值;\r\n";
}
return saveErrorMessage;
}
/// <summary>
/// <para>说明:保存和修改的验证</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2021-9-13 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public static string SaveOrModifyBalidation(DataTable TableProperties, DataRow row, DataColumn col, string fieldValue)
{
if (!row.Table.Columns.Contains(col.ColumnName) || row == null) return "";
if (TableProperties.Rows.Count == 0) return "";
DataRow[] ListOfAttributes = TableProperties.Select("COLUMN_NAME='" + col.ColumnName + "'");
if (ListOfAttributes == null || ListOfAttributes.Length == 0)
{
return "";
}
string saveErrorMessage = string.Empty;//报错信息
string LengthPrompt = string.Empty;//长度提示
int MaxInputLength = 0;
//判断长度是否超出
if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("varchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 8000;
}
MaxInputLength = System.Text.Encoding.Default.GetBytes((row[col.ColumnName] + "").Replace("'", "''")).Length;
LengthPrompt = string.Format("该字段最长{0}个英文或数字,或{1}个汉字", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "", int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "") / 2);
}
else if (ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("nvarchar"))
{
if (int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) == -1)
{
ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] = 4000;
}
MaxInputLength = (row[col.ColumnName] + "").Replace("'", "''").Length;
LengthPrompt = string.Format("该字段最长{0}个汉字(英文或数字)", ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"] + "");
}
if (!string.IsNullOrWhiteSpace(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) && int.Parse(ListOfAttributes[0]["CHARACTER_MAXIMUM_LENGTH"].ToString()) < MaxInputLength)
{
saveErrorMessage = saveErrorMessage + col.ColumnName + ": 输入内容长度超出限制," + LengthPrompt + "\r\n";
}
//判断属性是否正确
if ((ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("int") || ListOfAttributes[0]["DATA_TYPE"].ToString().Equals("decimal")) && !IsNumberic((row[col.ColumnName] + "").Replace("'", "''")) && !string.IsNullOrWhiteSpace((row[col.ColumnName] + "")))
{
saveErrorMessage = saveErrorMessage + "~" + col.ColumnName + ": 数据格式错误,请输入数值;\r\n";
}
return saveErrorMessage;
}
/// <summary>
/// 判断输入的字符串是否可以转换成数值类型
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNumberic(string str)
{
double vsNum;
bool isNum;
isNum = double.TryParse(str, System.Globalization.NumberStyles.Float,
System.Globalization.NumberFormatInfo.InvariantInfo, out vsNum);
if (string.IsNullOrWhiteSpace(str)) isNum = false;
return isNum;
}
}
}