@@ -0,0 +1,31 @@ | |||||
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio 15 | |||||
VisualStudioVersion = 15.0.28307.705 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNAS_DBSync", "CNAS_DBSync\CNAS_DBSync.csproj", "{0F16F166-6646-4502-B22D-5FE5BFE92326}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNAS_RunSync", "CNAS_RunSync\CNAS_RunSync.csproj", "{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}" | |||||
EndProject | |||||
Global | |||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
Debug|Any CPU = Debug|Any CPU | |||||
Release|Any CPU = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{0F16F166-6646-4502-B22D-5FE5BFE92326}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{0F16F166-6646-4502-B22D-5FE5BFE92326}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{0F16F166-6646-4502-B22D-5FE5BFE92326}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{0F16F166-6646-4502-B22D-5FE5BFE92326}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {CD002DA4-66BE-485C-A3D3-E1725BF3C0E9} | |||||
EndGlobalSection | |||||
EndGlobal |
@@ -0,0 +1,58 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<connectionStrings> | |||||
<add name="CoreDb" connectionString="Driver={IBM DB2 ODBC DRIVER};DataBase=SAMPLE; HostName=127.0.0.1; Protocol=TCPIP;Port=50000;Uid=db2admin;Pwd=123" /> | |||||
</connectionStrings> | |||||
<appSettings> | |||||
<add key="TargetDBType" value="MySQL" /> | |||||
</appSettings> | |||||
<entityFramework> | |||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> | |||||
<parameters> | |||||
<parameter value="mssqllocaldb" /> | |||||
</parameters> | |||||
</defaultConnectionFactory> | |||||
<providers> | |||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> | |||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> | |||||
</providers> | |||||
</entityFramework> | |||||
<system.data> | |||||
<DbProviderFactories> | |||||
<remove invariant="System.Data.SQLite.EF6" /> | |||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> | |||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories> | |||||
</system.data> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
</configuration> |
@@ -0,0 +1,118 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class CnasDataCheck | |||||
{ | |||||
public DataTable DtReadyInsert { get; set; } | |||||
public SyncInstrumentItemInfo SyncInstrumentItem { get; set; } | |||||
public string StrTableName { get; set; } | |||||
public List<IllegalCnasData> LstIllegalMsg { get; set; } | |||||
public void CheckData() | |||||
{ | |||||
//1.获取数据库的字段类型和长度 | |||||
DataTable dtTableType = CnasDataOperationFact.CnasDataOperation().GetCNASTableTypeLenth(StrTableName,SyncInstrumentItem); | |||||
LstIllegalMsg = new List<IllegalCnasData>(); | |||||
//2.根据字段类型和长度获取检查条件 | |||||
if (dtTableType != null && dtTableType.Rows.Count > 0) | |||||
{ | |||||
foreach (DataColumn dc in DtReadyInsert.Columns) | |||||
{ | |||||
string strColumnName = dc.ColumnName; | |||||
bool bIfNullable = true; | |||||
DataRow[] rowsType = dtTableType.Select("ColumnName='"+strColumnName+"'"); | |||||
if (rowsType.Length == 1) | |||||
{ | |||||
string strColumnType = rowsType[0]["DataType"].ToString(); | |||||
switch (strColumnType.ToLower()) | |||||
{ | |||||
case "varchar": | |||||
int Maxlenth = Convert.ToInt32(rowsType[0]["CharMaxLenth"]); | |||||
int MaxByteLenth= Convert.ToInt32(rowsType[0]["CharOcterLenth"]); | |||||
bIfNullable = rowsType[0]["IsNullable"].ToString().ToLower()=="yes"?true:false; | |||||
foreach (DataRow dr in DtReadyInsert.Rows) | |||||
{ | |||||
if (!CheckVarcharData(dr[strColumnName].ToString(), bIfNullable, Maxlenth, MaxByteLenth)) | |||||
LstIllegalMsg.Add(new IllegalCnasData() { ColumnName = strColumnName, ColumnValue = dr[strColumnName].ToString() }); | |||||
} | |||||
break; | |||||
case "bigint": | |||||
//bIfNullable = Convert.ToBoolean(rowsType[0]["IsNullable"]); | |||||
//int NumericPrecision = Convert.ToInt32(rowsType[0]["NumericPrecision"]); | |||||
//int NumericScale = Convert.ToInt32(rowsType[0]["NumericScale"]); | |||||
break; | |||||
case "decimal": | |||||
bIfNullable = rowsType[0]["IsNullable"].ToString().ToLower() == "yes" ? true : false; | |||||
int NumericPrecision = Convert.ToInt32(rowsType[0]["NumericPrecision"]); | |||||
int NumericScale = Convert.ToInt32(rowsType[0]["NumericScale"]); | |||||
foreach (DataRow dr in DtReadyInsert.Rows) | |||||
{ | |||||
if (!CheckDecimalData(dr[strColumnName].ToString(), bIfNullable, NumericPrecision, NumericScale)) | |||||
LstIllegalMsg.Add(new IllegalCnasData() { ColumnName = strColumnName, ColumnValue = dr[strColumnName].ToString() }); | |||||
} | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
private bool CheckVarcharData(string strValue, bool IfNullable, int MaxLenth,int MaxByteLenth) | |||||
{ | |||||
if (strValue == null || strValue == "") | |||||
if (!IfNullable) //如果数据库不允许为空,此处需要检查是否准备插入的数据是空值 | |||||
return false; | |||||
else | |||||
return true; | |||||
if (Encoding.Default.GetByteCount(strValue) > MaxByteLenth) | |||||
return false; | |||||
return true; | |||||
} | |||||
private bool CheckDecimalData(string strValue, bool IfNullable, int NumericPrecision, int NumericScale) | |||||
{ | |||||
if (strValue == null || strValue == "") | |||||
if (!IfNullable) //如果数据库不允许为空,此处需要检查是否准备插入的数据是空值 | |||||
return false; | |||||
else | |||||
return true; | |||||
double result=0; | |||||
if (!double.TryParse(strValue, out result)) | |||||
return false; | |||||
long ValueInt = (long)(result); | |||||
int ValueDigit = (int)(result % 1); | |||||
if (ValueInt.ToString().Length > NumericPrecision- NumericScale || ValueDigit.ToString().Length > NumericScale) | |||||
return false; | |||||
return true; | |||||
} | |||||
} | |||||
public class IllegalCnasData | |||||
{ | |||||
public string ColumnName { get; set; } | |||||
public object ColumnValue { get; set; } | |||||
} | |||||
public class DataFieldAndLenth | |||||
{ | |||||
public string FieldName { get; set; } | |||||
public Type FieldType { get; set; } | |||||
public int FieldLenth { get; set; } | |||||
public int FieldDigits{ get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,43 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
//public class CnasDataOperation | |||||
//{ | |||||
// //获取数据库的所有表单 | |||||
// public DataTable GetCnasTables(SyncInstrumentItemInfo syncInstrument) | |||||
// { | |||||
// BaseDAL baseDAL = new BaseDAL(); | |||||
// baseDAL.CreateConnectString(syncInstrument.SyncTargetDBInfo.DBHost, syncInstrument.SyncTargetDBInfo.DBName, syncInstrument.SyncTargetDBInfo.DBUser, syncInstrument.SyncTargetDBInfo.DBPwd); | |||||
// return baseDAL.GetTableNames(syncInstrument.SyncTargetDBInfo.DBUser); | |||||
// } | |||||
// //获取数据表结构 | |||||
// public DataTable GetCnasTableStruct(SyncInstrumentItemInfo syncInstrument) | |||||
// { | |||||
// BaseDAL baseDAL = new BaseDAL(); | |||||
// baseDAL.CreateConnectString(syncInstrument.SyncTargetDBInfo.DBHost, syncInstrument.SyncTargetDBInfo.DBName, syncInstrument.SyncTargetDBInfo.DBUser, syncInstrument.SyncTargetDBInfo.DBPwd); | |||||
// return baseDAL.GetTableStruct(syncInstrument.LstSyncPramas[0].TargetTable); | |||||
// } | |||||
// //插入数据表 | |||||
// public int InsertCnasTableData(DataTable dt, SyncInstrumentItemInfo syncInstrument) | |||||
// { | |||||
// BaseDAL baseDAL = new BaseDAL(); | |||||
// baseDAL.CreateConnectString(syncInstrument.SyncTargetDBInfo.DBHost, syncInstrument.SyncTargetDBInfo.DBName, syncInstrument.SyncTargetDBInfo.DBUser, syncInstrument.SyncTargetDBInfo.DBPwd); | |||||
// return baseDAL.InsertCnasData(dt, syncInstrument.LstSyncPramas); | |||||
// } | |||||
// //测试数据连接 | |||||
// public bool TestCnasLink(string strHost,string strName,string strUser,string strPwd) | |||||
// { | |||||
// BaseDAL basedal = new BaseDAL(); | |||||
// basedal.CreateConnectString(strHost, strName, strUser, strPwd); | |||||
// return basedal.LinkCnasTest(); | |||||
// } | |||||
//} | |||||
} |
@@ -0,0 +1,57 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Text.RegularExpressions; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class InstrumentCodeOperation | |||||
{ | |||||
//仪器编码合法性检测 | |||||
public int CheckInstrumentCode(string strCode, List<SyncInstrumentItemInfo> lstSyncInstrument) | |||||
{ | |||||
//为空检测 | |||||
if (strCode == null || strCode.Trim() == "") return 0; | |||||
//命名不允许有特殊字符 | |||||
//if (!isSpecialChar(strCode)) return -1; | |||||
//是否在库中已存在 | |||||
if (!CheckCodeRepeat(strCode, lstSyncInstrument)) return -2; | |||||
return 1; | |||||
} | |||||
/// <summary> | |||||
/// 检查是否重复 | |||||
/// </summary> | |||||
/// <param name="strCode"></param> | |||||
/// <param name="lstSyncInstrument"></param> | |||||
/// <returns></returns> | |||||
private bool CheckCodeRepeat(string strCode,List<SyncInstrumentItemInfo> lstSyncInstrument) | |||||
{ | |||||
bool bSuccess = true; | |||||
var item = lstSyncInstrument.Where(s => s.Code == strCode).ToList<SyncInstrumentItemInfo>(); | |||||
if (item != null && item.Count > 0) | |||||
{ | |||||
bSuccess = false; | |||||
} | |||||
return bSuccess; | |||||
} | |||||
/// <summary> | |||||
/// 是否含有特殊字符 | |||||
/// </summary> | |||||
/// <param name="strCheckString"></param> | |||||
/// <returns></returns> | |||||
public bool isSpecialChar(String strCheckString) | |||||
{ | |||||
Regex regex = new Regex(@"[_.`~!@#$%^&*()+=|{}':;',\\[\\]<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t"); | |||||
return regex.IsMatch(strCheckString); ; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,131 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class InstrumentDataFact | |||||
{ | |||||
public static InstrumentData CreateInstrumentDataSource(DataSourceType dataSourceType,params object[] vs) | |||||
{ | |||||
InstrumentData instrumentData; | |||||
switch (dataSourceType) | |||||
{ | |||||
case DataSourceType.Access: | |||||
instrumentData = new AccessInstrumentData(vs); | |||||
break; | |||||
case DataSourceType.SQL: | |||||
instrumentData = new SQLInstrumentData(vs); | |||||
break; | |||||
case DataSourceType.SQLLite: | |||||
instrumentData = new SQLiteInstrumentData(vs); | |||||
break; | |||||
case DataSourceType.Excel: | |||||
default: | |||||
instrumentData = new ExcelInstrumentData(vs); | |||||
break; | |||||
} | |||||
return instrumentData; | |||||
} | |||||
} | |||||
public abstract class InstrumentData | |||||
{ | |||||
/// <summary> | |||||
/// 获取数据源数据 | |||||
/// </summary> | |||||
public abstract Dictionary<string,DataTable> GetInstrumentData(); | |||||
} | |||||
public class ExcelInstrumentData:InstrumentData | |||||
{ | |||||
public string StrLocalPath { get; set; } | |||||
public ExcelInstrumentData(params object[] vs) | |||||
{ | |||||
this.StrLocalPath = vs[0].ToString(); | |||||
} | |||||
public override Dictionary<string, DataTable> GetInstrumentData() | |||||
{ | |||||
return ExcelHelper.ReadExcelTableNameToTable(StrLocalPath); | |||||
} | |||||
} | |||||
public class AccessInstrumentData : InstrumentData | |||||
{ | |||||
public string StrLocalPath { get; set; } | |||||
public string StrUser { get; set; } | |||||
public string StrPwd { get; set; } | |||||
public AccessInstrumentData(params object[] vs) | |||||
{ | |||||
this.StrLocalPath = vs[0].ToString(); | |||||
if(vs[1]!=null) this.StrUser = vs[1].ToString(); | |||||
this.StrPwd = vs[2].ToString(); | |||||
} | |||||
public override Dictionary<string, DataTable> GetInstrumentData() | |||||
{ | |||||
return MdbHelper.ReadAccessTables(StrLocalPath,StrUser,StrPwd); | |||||
} | |||||
} | |||||
public class SQLInstrumentData : InstrumentData | |||||
{ | |||||
public string StrHost { get; set; } | |||||
public string StrName { get; set; } | |||||
public string StrUser { get; set; } | |||||
public string StrPwd { get; set; } | |||||
public SQLInstrumentData(params object[] vs) | |||||
{ | |||||
this.StrHost = vs[0].ToString(); | |||||
this.StrName = vs[1].ToString(); | |||||
this.StrUser = vs[2].ToString(); | |||||
this.StrPwd = vs[3].ToString(); | |||||
} | |||||
public override Dictionary<string, DataTable> GetInstrumentData() | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
private string CreateConnectionString() | |||||
{ | |||||
return string.Format(""); | |||||
} | |||||
} | |||||
public class SQLiteInstrumentData : InstrumentData | |||||
{ | |||||
public string StrLocalPath { get; set; } | |||||
public string StrUser { get; set; } | |||||
public string StrPwd { get; set; } | |||||
public SQLiteInstrumentData(params object[] vs) | |||||
{ | |||||
this.StrLocalPath = vs[0].ToString(); | |||||
if (vs[1] != null) this.StrUser = vs[1].ToString(); | |||||
this.StrPwd = vs[2].ToString(); | |||||
} | |||||
public override Dictionary<string, DataTable> GetInstrumentData() | |||||
{ | |||||
SQLiteHelper.SetConnectionString(StrLocalPath, StrPwd); | |||||
return SQLiteHelper.ReadSQLiteTables(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class InstrumentDataOperation | |||||
{ | |||||
//需提前制定数据源类型 | |||||
protected DataSourceType dataSourceType = DataSourceType.Excel; | |||||
//获取数据 | |||||
public InstrumentDataOperation(DataSourceType dataSourceType) | |||||
{ | |||||
this.dataSourceType = dataSourceType; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,154 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
<PropertyGroup> | |||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
<ProjectGuid>{0F16F166-6646-4502-B22D-5FE5BFE92326}</ProjectGuid> | |||||
<OutputType>WinExe</OutputType> | |||||
<RootNamespace>CNAS_DBSync</RootNamespace> | |||||
<AssemblyName>CNAS_DBSync</AssemblyName> | |||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> | |||||
<FileAlignment>512</FileAlignment> | |||||
<Deterministic>true</Deterministic> | |||||
<NuGetPackageImportStamp> | |||||
</NuGetPackageImportStamp> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
<PlatformTarget>x86</PlatformTarget> | |||||
<DebugSymbols>true</DebugSymbols> | |||||
<DebugType>full</DebugType> | |||||
<Optimize>false</Optimize> | |||||
<OutputPath>..\dll\</OutputPath> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
<PlatformTarget>AnyCPU</PlatformTarget> | |||||
<DebugType>pdbonly</DebugType> | |||||
<Optimize>true</Optimize> | |||||
<OutputPath>bin\Release\</OutputPath> | |||||
<DefineConstants>TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\log4net.2.0.8\lib\net40-full\log4net.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> | |||||
<SpecificVersion>False</SpecificVersion> | |||||
<HintPath>..\dll\MySql.Data.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System" /> | |||||
<Reference Include="System.ComponentModel.DataAnnotations" /> | |||||
<Reference Include="System.configuration" /> | |||||
<Reference Include="System.Core" /> | |||||
<Reference Include="System.Data.SQLite, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Data.SQLite.Core.1.0.111.0\lib\net40\System.Data.SQLite.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Data.SQLite.EF6, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.111.0\lib\net40\System.Data.SQLite.EF6.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Data.SQLite.Linq, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.111.0\lib\net40\System.Data.SQLite.Linq.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Management" /> | |||||
<Reference Include="System.Xml.Linq" /> | |||||
<Reference Include="System.Data.DataSetExtensions" /> | |||||
<Reference Include="Microsoft.CSharp" /> | |||||
<Reference Include="System.Data" /> | |||||
<Reference Include="System.Deployment" /> | |||||
<Reference Include="System.Drawing" /> | |||||
<Reference Include="System.Windows.Forms" /> | |||||
<Reference Include="System.Xml" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Include="BLL\CnasDataCheck.cs" /> | |||||
<Compile Include="BLL\CnasDataOperation.cs" /> | |||||
<Compile Include="DAL\CnasDataOperationFact.cs" /> | |||||
<Compile Include="BLL\InstrumentCodeOperation.cs" /> | |||||
<Compile Include="BLL\InstrumentDataFact.cs" /> | |||||
<Compile Include="BLL\InstrumentDataOperation.cs" /> | |||||
<Compile Include="Common\MdbHelper.cs" /> | |||||
<Compile Include="Common\MySQLHelper.cs" /> | |||||
<Compile Include="Common\SQLDB2Helper.cs" /> | |||||
<Compile Include="Common\ExcelHelper.cs" /> | |||||
<Compile Include="Common\FileHelper.cs" /> | |||||
<Compile Include="Common\SQLiteHelper.cs" /> | |||||
<Compile Include="DAL\BaseDAL.cs" /> | |||||
<Compile Include="DAL\MySQLBaseDAL.cs" /> | |||||
<Compile Include="frmDatabaseParams.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="frmDatabaseParams.Designer.cs"> | |||||
<DependentUpon>frmDatabaseParams.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="frmInstrumentCode.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="frmInstrumentCode.Designer.cs"> | |||||
<DependentUpon>frmInstrumentCode.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="frmPrBar.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="frmPrBar.Designer.cs"> | |||||
<DependentUpon>frmPrBar.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="frmSyncParams.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="frmSyncParams.Designer.cs"> | |||||
<DependentUpon>frmSyncParams.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="Model\DataBaseInfo.cs" /> | |||||
<Compile Include="Model\InstrumentDataSourceInfo.cs" /> | |||||
<Compile Include="Model\SyncInstrumentItemInfo.cs" /> | |||||
<Compile Include="Model\SyncParamasInfo.cs" /> | |||||
<Compile Include="Program.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||||
<EmbeddedResource Include="frmDatabaseParams.resx"> | |||||
<DependentUpon>frmDatabaseParams.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="frmInstrumentCode.resx"> | |||||
<DependentUpon>frmInstrumentCode.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="frmPrBar.resx"> | |||||
<DependentUpon>frmPrBar.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="frmSyncParams.resx"> | |||||
<DependentUpon>frmSyncParams.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="Properties\Resources.resx"> | |||||
<Generator>ResXFileCodeGenerator</Generator> | |||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||||
<SubType>Designer</SubType> | |||||
</EmbeddedResource> | |||||
<Compile Include="Properties\Resources.Designer.cs"> | |||||
<AutoGen>True</AutoGen> | |||||
<DependentUpon>Resources.resx</DependentUpon> | |||||
</Compile> | |||||
<None Include="App.config" /> | |||||
<None Include="packages.config" /> | |||||
<None Include="Properties\Settings.settings"> | |||||
<Generator>SettingsSingleFileGenerator</Generator> | |||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput> | |||||
</None> | |||||
<Compile Include="Properties\Settings.Designer.cs"> | |||||
<AutoGen>True</AutoGen> | |||||
<DependentUpon>Settings.settings</DependentUpon> | |||||
<DesignTimeSharedInput>True</DesignTimeSharedInput> | |||||
</Compile> | |||||
</ItemGroup> | |||||
<ItemGroup /> | |||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
<Import Project="..\packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets')" /> | |||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> | |||||
<PropertyGroup> | |||||
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText> | |||||
</PropertyGroup> | |||||
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets'))" /> | |||||
</Target> | |||||
</Project> |
@@ -0,0 +1,128 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
using System.Data.OleDb; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public static class ExcelHelper | |||||
{ | |||||
private static log4net.ILog log= log4net.LogManager.GetLogger("ExcelHelper"); | |||||
/// <summary> | |||||
/// 读取Excel第一个工作表的内容 | |||||
/// </summary> | |||||
/// <param name="strPath"></param> | |||||
/// <returns></returns> | |||||
public static DataTable ReadExcelFirstSheetToTable(string strPath) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
try | |||||
{ | |||||
//连接字符串 | |||||
string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意 | |||||
//string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; //Office 07以下版本 | |||||
using (OleDbConnection conn = new OleDbConnection(connstring)) | |||||
{ | |||||
conn.Open(); | |||||
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字 | |||||
string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字 | |||||
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName); //查询字符串 | |||||
//string sql = string.Format("SELECT * FROM [{0}] WHERE [日期] is not null", firstSheetName); //查询字符串 | |||||
OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring); | |||||
DataSet set = new DataSet(); | |||||
ada.Fill(set); | |||||
return set.Tables[0]; | |||||
} | |||||
} | |||||
catch(Exception ex) | |||||
{ | |||||
//发生异常,写入日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 通过表名读取Excel中数据 | |||||
/// </summary> | |||||
/// <param name="strPath"></param> | |||||
/// <param name="strTableName"></param> | |||||
/// <returns></returns> | |||||
public static DataTable ReadExcelByNameToTable(string strPath,string strTableName) | |||||
{ | |||||
return null; | |||||
} | |||||
/// <summary> | |||||
/// 读取Excel中所有表的表名 | |||||
/// </summary> | |||||
/// <param name="strPath"></param> | |||||
/// <returns></returns> | |||||
public static Dictionary<string, DataTable> ReadExcelTableNameToTable(string strPath) | |||||
{ | |||||
Dictionary<string, DataTable> dictTables = new Dictionary<string, DataTable>(); | |||||
try | |||||
{ | |||||
//连接字符串 | |||||
string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意 | |||||
//string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; //Office 07以下版本 | |||||
using (OleDbConnection conn = new OleDbConnection(connstring)) | |||||
{ | |||||
conn.Open(); | |||||
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字 | |||||
string sql = ""; | |||||
OleDbDataAdapter ada = null; | |||||
foreach (DataRow dr in sheetsName.Rows) | |||||
{ | |||||
string strTableName = dr[2].ToString(); | |||||
sql = string.Format("SELECT * FROM [{0}]", strTableName); //查询字符串 | |||||
ada = new OleDbDataAdapter(sql, connstring); | |||||
DataSet set = new DataSet(); | |||||
ada.Fill(set); | |||||
DataTable dtSheetData = set.Tables[0]; | |||||
DataTable dtNormal = new DataTable(); | |||||
DataRow drCurrent = dtSheetData.Rows[0]; | |||||
//创建标准表结构 | |||||
foreach (DataColumn dc in dtSheetData.Columns) | |||||
{ | |||||
DataColumn dcReady = new DataColumn | |||||
{ | |||||
DataType = dc.DataType, | |||||
ColumnName = drCurrent[dc.ColumnName].ToString() | |||||
}; | |||||
dtNormal.Columns.Add(dcReady); | |||||
} | |||||
//向列表中添加数据 | |||||
for (int i = 1; i < dtSheetData.Rows.Count; i++) | |||||
{ | |||||
DataRow drNew = dtNormal.NewRow(); | |||||
for (int j = 0; j < dtSheetData.Columns.Count; j++) | |||||
{ | |||||
drNew[j] = dtSheetData.Rows[i][j]; | |||||
} | |||||
dtNormal.Rows.Add(drNew); | |||||
} | |||||
dictTables.Add(strTableName.Substring(0,strTableName.Length-1), dtNormal); | |||||
} | |||||
} | |||||
} | |||||
catch(Exception ex) | |||||
{ | |||||
//发生异常,写入日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return dictTables; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,59 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Xml.Serialization; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public static class FileHelper | |||||
{ | |||||
///// <summary> | |||||
///// 获取本地XML文件值 | |||||
///// </summary> | |||||
///// <param name="strPath"></param> | |||||
//public void GetLocalXMLFile(string strPath) | |||||
//{ | |||||
//} | |||||
///// <summary> | |||||
///// 保存本地XML文件值 | |||||
///// </summary> | |||||
///// <param name="strPath"></param> | |||||
//public void SaveLocalXMLFile(string strPath) | |||||
//{ | |||||
//} | |||||
/// <summary> | |||||
/// 获取当前dll所在目录 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
public static string getBasePath() | |||||
{ | |||||
//获取当前DLL 所在路径 | |||||
string dllpath = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; | |||||
if (dllpath != null && dllpath.Length > 0) dllpath = dllpath.Substring(8) + @"\"; | |||||
FileInfo tmpDllInfo = new FileInfo(dllpath); | |||||
dllpath = tmpDllInfo.DirectoryName; | |||||
dllpath = dllpath.Replace(tmpDllInfo.Directory.Name, ""); | |||||
return dllpath; | |||||
} | |||||
public static List<T> XmlToList<T>(string xml, string rootName) where T : class | |||||
{ | |||||
XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName)); | |||||
using (StringReader sr = new StringReader(xml)) | |||||
{ | |||||
List<T> list = serializer.Deserialize(sr) as List<T>; | |||||
return list; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,56 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Data.OleDb; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public static class MdbHelper | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("MdbHelper"); | |||||
/// <summary> | |||||
/// 读取Excel第一个工作表的内容 | |||||
/// </summary> | |||||
/// <param name="strPath"></param> | |||||
/// <returns></returns> | |||||
public static Dictionary<string, DataTable> ReadAccessTables(string strPath,string strUser,string strPwd) | |||||
{ | |||||
Dictionary<string, DataTable> dictTables = new Dictionary<string, DataTable>(); | |||||
try | |||||
{ | |||||
//连接字符串 | |||||
//string connstring = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"); | |||||
//string connstring = string.Format("Provider = Microsoft.Jet.OLEDB.4.0; Data Source={0}; User id={1};Jet OLEDB:Database Password={2}", strPath,strUser,strPwd); | |||||
string connstring = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Persist Security Info=False;Jet OLEDB:Database Password={1}",strPath,strPwd); | |||||
using (OleDbConnection conn = new OleDbConnection(connstring)) | |||||
{ | |||||
conn.Open(); | |||||
DataTable TablesName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字 | |||||
string sql = ""; | |||||
OleDbDataAdapter ada = null; | |||||
foreach (DataRow dr in TablesName.Rows) | |||||
{ | |||||
string strTableName = dr[2].ToString(); | |||||
sql = string.Format("SELECT * FROM [{0}]", strTableName); //查询字符串 | |||||
ada = new OleDbDataAdapter(sql, connstring); | |||||
DataSet set = new DataSet(); | |||||
ada.Fill(set); | |||||
dictTables.Add(strTableName, set.Tables[0]); | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//发生异常,写入日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return dictTables; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,458 @@ | |||||
using MySql.Data.MySqlClient; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Data; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public static class MySQLHelper | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("MySQLHelper"); | |||||
private static String mConnStr = null; | |||||
public static void InitConnectionString(string strServerIP,string strServerPort,string strServerHost,string strServerUser,string strServerPwd) | |||||
{ | |||||
mConnStr = "server=" + strServerIP + ";port=" + strServerPort + ";user=" + strServerUser + ";password=" + strServerPwd + ";database=" + strServerHost + ";CharSet=utf8"; | |||||
} | |||||
/// <summary> | |||||
/// 对SQLite数据库执行增删改操作,返回受影响的行数。 | |||||
/// </summary> | |||||
/// <param name="sql">要执行的增删改的SQL语句</param> | |||||
/// <returns></returns> | |||||
public static int ExecuteNonQuery(String sql) | |||||
{ | |||||
try | |||||
{ | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); | |||||
int rows = cmd.ExecuteNonQuery(); | |||||
transaction.Commit(); | |||||
cmd.Parameters.Clear(); | |||||
return rows; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 对数据库执行增删改操作,返回受影响的行数。 | |||||
/// </summary> | |||||
/// <param name="sql">要执行的增删改的SQL语句</param> | |||||
/// <returns></returns> | |||||
public static int ExecuteNonQuery(String sql, MySqlParameter[] cmdParams) | |||||
{ | |||||
try | |||||
{ | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); | |||||
int rows = cmd.ExecuteNonQuery(); | |||||
transaction.Commit(); | |||||
cmd.Parameters.Clear(); | |||||
return rows; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 对SQLite数据库执行操作,返回 返回第一行第一列数据 | |||||
/// </summary> | |||||
/// <param name="sql"></param> | |||||
/// <returns></returns> | |||||
public static int ExecuteScalar(String sql) | |||||
{ | |||||
try | |||||
{ | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
int line = 0; | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); | |||||
String str = cmd.ExecuteScalar().ToString(); | |||||
transaction.Commit(); | |||||
line = Convert.ToInt32(str); | |||||
cmd.Parameters.Clear(); | |||||
return line; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 对SQLite数据库执行操作,返回 返回第一行第一列数据 | |||||
/// </summary> | |||||
/// <param name="sql"></param> | |||||
/// <returns></returns> | |||||
public static int ExecuteScalar(String sql, MySqlParameter[] cmdParams) | |||||
{ | |||||
try | |||||
{ | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
int line = 0; | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); | |||||
String str = cmd.ExecuteScalar().ToString(); | |||||
transaction.Commit(); | |||||
line = Convert.ToInt32(str); | |||||
cmd.Parameters.Clear(); | |||||
return line; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 用执行的数据库连接执行一个返回数据集的sql命令 | |||||
/// </summary> | |||||
/// <param name="sql"></param> | |||||
/// <returns></returns> | |||||
public static MySqlDataReader ExecuteReader(String sql) | |||||
{ | |||||
try | |||||
{ | |||||
//创建一个MySqlConnection对象 | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
//创建一个MySqlCommand对象 | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); | |||||
MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); | |||||
transaction.Commit(); | |||||
cmd.Parameters.Clear(); | |||||
return reader; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查询返回Dtaset | |||||
/// </summary> | |||||
/// <param name="sql"></param> | |||||
/// <returns></returns> | |||||
public static DataSet ExecuteDataSet(String sql) | |||||
{ | |||||
try | |||||
{ | |||||
//创建一个MySqlConnection对象 | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
//创建一个MySqlCommand对象 | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); | |||||
MySqlDataAdapter adapter = new MySqlDataAdapter(); | |||||
adapter.SelectCommand = cmd; | |||||
DataSet ds = new DataSet(); | |||||
adapter.Fill(ds); | |||||
transaction.Commit(); | |||||
//清除参数 | |||||
cmd.Parameters.Clear(); | |||||
return ds; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查询返回Dtaset | |||||
/// </summary> | |||||
/// <param name="sql"></param> | |||||
/// <returns></returns> | |||||
public static DataSet ExecuteDataSet(String sql, MySqlParameter[] cmdParams) | |||||
{ | |||||
try | |||||
{ | |||||
//创建一个MySqlConnection对象 | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
MySqlTransaction transaction = connection.BeginTransaction(); | |||||
//创建一个MySqlCommand对象 | |||||
using (MySqlCommand cmd = new MySqlCommand()) | |||||
{ | |||||
try | |||||
{ | |||||
PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); | |||||
MySqlDataAdapter adapter = new MySqlDataAdapter(); | |||||
adapter.SelectCommand = cmd; | |||||
DataSet ds = new DataSet(); | |||||
adapter.Fill(ds); | |||||
transaction.Commit(); | |||||
//清除参数 | |||||
cmd.Parameters.Clear(); | |||||
return ds; | |||||
} | |||||
catch (MySqlException e1) | |||||
{ | |||||
try | |||||
{ | |||||
transaction.Rollback(); | |||||
} | |||||
catch (Exception e2) | |||||
{ | |||||
log.Error(e2.Message); | |||||
throw e2; | |||||
} | |||||
log.Error(e1.Message); | |||||
throw e1; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
log.Error(e.Message); | |||||
throw e; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 准备执行一个命令 | |||||
/// </summary> | |||||
/// <param name="cmd">sql命令</param> | |||||
/// <param name="conn">OleDb连接</param> | |||||
/// <param name="trans">OleDb事务</param> | |||||
/// <param name="cmdType">命令类型例如 存储过程或者文本</param> | |||||
/// <param name="cmdText">命令文本,例如:Select * from Products</param> | |||||
/// <param name="cmdParms">执行命令的参数</param> | |||||
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) | |||||
{ | |||||
if (conn.State != ConnectionState.Open) | |||||
conn.Open(); | |||||
cmd.Connection = conn; | |||||
cmd.CommandText = cmdText; | |||||
if (trans != null) | |||||
cmd.Transaction = trans; | |||||
cmd.CommandType = cmdType; | |||||
if (cmdParms != null) | |||||
{ | |||||
foreach (MySqlParameter parm in cmdParms) | |||||
cmd.Parameters.Add(parm); | |||||
} | |||||
} | |||||
public static bool TestConnectMySql() | |||||
{ | |||||
bool bIfSuccess = false; | |||||
try | |||||
{ | |||||
//创建一个MySqlConnection对象 | |||||
using (MySqlConnection connection = new MySqlConnection(mConnStr)) | |||||
{ | |||||
connection.Open(); | |||||
if (connection.State == System.Data.ConnectionState.Open) | |||||
bIfSuccess = true; | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
bIfSuccess = false; | |||||
} | |||||
return bIfSuccess; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,137 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Configuration; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data.Sql; | |||||
using System.Data.SqlClient; | |||||
using System.Data; | |||||
using System.Reflection; | |||||
using System.Collections; | |||||
using System.Data.Odbc; | |||||
using System.Data.OleDb; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
//数据库类 | |||||
public static class SQLDB2Helper | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("SQLDB2Helper"); | |||||
private static string connectionString = ""; | |||||
public static void createConnectString(string strHost,string strName,string strUser,string strPwd) | |||||
{ | |||||
//connectionString = string.Format("Provider=IBMDADB2;HostName={0}; Port=50000;Data Source={1};UID={2};PWD={3};",strHost,strName,strUser,strPwd); | |||||
connectionString = string.Format("Provider = IBMDADB2; HostName = {0}; Database = {1}; uid = {2}; pwd = {3}; protocol = TCPIP; port = 50000", strHost, strName, strUser, strPwd); | |||||
} | |||||
/// <summary> | |||||
/// 执行查询语句,获取表数据 | |||||
/// </summary> | |||||
/// <param name="strsql"></param> | |||||
/// <returns></returns> | |||||
public static DataTable getDB2Table(string strsql) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
using (OleDbConnection conn = new OleDbConnection(connectionString)) | |||||
{ | |||||
OleDbCommand cmd = new OleDbCommand(strsql, conn); | |||||
try | |||||
{ | |||||
conn.Open(); | |||||
OleDbDataAdapter adp = new OleDbDataAdapter(cmd); | |||||
DataSet ds = new DataSet(); | |||||
adp.Fill(ds); | |||||
dt = ds.Tables[0]; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//这里写日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
} | |||||
return dt; | |||||
} | |||||
//执行插入/更新语句,返回受影响的行数(无参数) | |||||
public static int ExequeryDB2Table(string strSql) | |||||
{ | |||||
int ireturn = 0; | |||||
using (OleDbConnection conn = new OleDbConnection(connectionString)) | |||||
{ | |||||
OleDbCommand cmd = new OleDbCommand(strSql, conn); | |||||
try | |||||
{ | |||||
conn.Open(); | |||||
ireturn=cmd.ExecuteNonQuery(); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//这里写日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
} | |||||
return ireturn; | |||||
} | |||||
//执行插入/更新语句,返回受影响的行数(有参数) | |||||
public static int ExequeryDB2Table(string strSql,params OleDbParameter[] parameters) | |||||
{ | |||||
int ireturn = 0; | |||||
using (OleDbConnection conn = new OleDbConnection(connectionString)) | |||||
{ | |||||
OleDbCommand cmd = new OleDbCommand(strSql, conn); | |||||
try | |||||
{ | |||||
conn.Open(); | |||||
cmd.CommandText = strSql; | |||||
if (parameters.Length != 0) | |||||
{ | |||||
cmd.Parameters.AddRange(parameters); | |||||
} | |||||
ireturn = cmd.ExecuteNonQuery(); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//这里写日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
} | |||||
return ireturn; | |||||
} | |||||
/// <summary> | |||||
/// 执行插入/更新语句,返回受影响的行数(有参数) | |||||
/// </summary> | |||||
public static bool TestCnasLink() | |||||
{ | |||||
bool bIfSuccess = true; | |||||
using (OleDbConnection conn = new OleDbConnection(connectionString)) | |||||
{ | |||||
try | |||||
{ | |||||
conn.Open(); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//这里写日志 | |||||
bIfSuccess = false; | |||||
log.Error(ex.Message); | |||||
} | |||||
} | |||||
return bIfSuccess; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,233 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data.SQLite; | |||||
using System.Data; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public static class SQLiteHelper | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("SQLiteHelper"); | |||||
private static string connectionString = string.Empty; | |||||
/// <summary> | |||||
/// 根据数据源、密码、版本号设置连接字符串。 | |||||
/// </summary> | |||||
/// <param name="datasource">数据源。</param> | |||||
/// <param name="password">密码。</param> | |||||
/// <param name="version">版本号(缺省为3)。</param> | |||||
public static void SetConnectionString(string datasource, string password, int version = 3) | |||||
{ | |||||
connectionString = string.Format("Data Source={0};Version={1};password={2}", | |||||
datasource, version, password); | |||||
} | |||||
/// <summary> | |||||
/// 创建一个数据库文件。如果存在同名数据库文件,则会覆盖。 | |||||
/// </summary> | |||||
/// <param name="dbName">数据库文件名。为null或空串时不创建。</param> | |||||
/// <param name="password">(可选)数据库密码,默认为空。</param> | |||||
/// <exception cref="Exception"></exception> | |||||
public static void CreateDB(string dbName) | |||||
{ | |||||
if (!string.IsNullOrEmpty(dbName)) | |||||
{ | |||||
try { SQLiteConnection.CreateFile(dbName); } | |||||
catch (Exception) { throw; } | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 对SQLite数据库执行增删改操作,返回受影响的行数。 | |||||
/// </summary> | |||||
/// <param name="sql">要执行的增删改的SQL语句。</param> | |||||
/// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> | |||||
/// <returns></returns> | |||||
/// <exception cref="Exception"></exception> | |||||
public static int ExecuteNonQuery(string sql, params SQLiteParameter[] parameters) | |||||
{ | |||||
int affectedRows = 0; | |||||
using (SQLiteConnection connection = new SQLiteConnection(connectionString)) | |||||
{ | |||||
using (SQLiteCommand command = new SQLiteCommand(connection)) | |||||
{ | |||||
try | |||||
{ | |||||
connection.Open(); | |||||
command.CommandText = sql; | |||||
if (parameters.Length != 0) | |||||
{ | |||||
command.Parameters.AddRange(parameters); | |||||
} | |||||
affectedRows = command.ExecuteNonQuery(); | |||||
} | |||||
catch (Exception) { throw; } | |||||
} | |||||
} | |||||
return affectedRows; | |||||
} | |||||
/// <summary> | |||||
/// 批量处理数据操作语句。 | |||||
/// </summary> | |||||
/// <param name="list">SQL语句集合。</param> | |||||
/// <exception cref="Exception"></exception> | |||||
public static void ExecuteNonQueryBatch(List<KeyValuePair<string, SQLiteParameter[]>> list) | |||||
{ | |||||
using (SQLiteConnection conn = new SQLiteConnection(connectionString)) | |||||
{ | |||||
try { conn.Open(); } | |||||
catch { throw; } | |||||
using (SQLiteTransaction tran = conn.BeginTransaction()) | |||||
{ | |||||
using (SQLiteCommand cmd = new SQLiteCommand(conn)) | |||||
{ | |||||
try | |||||
{ | |||||
foreach (var item in list) | |||||
{ | |||||
cmd.CommandText = item.Key; | |||||
if (item.Value != null) | |||||
{ | |||||
cmd.Parameters.AddRange(item.Value); | |||||
} | |||||
cmd.ExecuteNonQuery(); | |||||
} | |||||
tran.Commit(); | |||||
} | |||||
catch (Exception) { tran.Rollback(); throw; } | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 执行查询语句,并返回第一个结果。 | |||||
/// </summary> | |||||
/// <param name="sql">查询语句。</param> | |||||
/// <returns>查询结果。</returns> | |||||
/// <exception cref="Exception"></exception> | |||||
public static object ExecuteScalar(string sql, params SQLiteParameter[] parameters) | |||||
{ | |||||
using (SQLiteConnection conn = new SQLiteConnection(connectionString)) | |||||
{ | |||||
using (SQLiteCommand cmd = new SQLiteCommand(conn)) | |||||
{ | |||||
try | |||||
{ | |||||
conn.Open(); | |||||
cmd.CommandText = sql; | |||||
if (parameters.Length != 0) | |||||
{ | |||||
cmd.Parameters.AddRange(parameters); | |||||
} | |||||
return cmd.ExecuteScalar(); | |||||
} | |||||
catch (Exception) { throw; } | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 执行一个查询语句,返回一个包含查询结果的DataTable。 | |||||
/// </summary> | |||||
/// <param name="sql">要执行的查询语句。</param> | |||||
/// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> | |||||
/// <returns></returns> | |||||
/// <exception cref="Exception"></exception> | |||||
public static DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters) | |||||
{ | |||||
using (SQLiteConnection connection = new SQLiteConnection(connectionString)) | |||||
{ | |||||
using (SQLiteCommand command = new SQLiteCommand(sql, connection)) | |||||
{ | |||||
if (parameters.Length != 0) | |||||
{ | |||||
command.Parameters.AddRange(parameters); | |||||
} | |||||
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); | |||||
DataTable data = new DataTable(); | |||||
try { adapter.Fill(data); } | |||||
catch (Exception) { throw; } | |||||
return data; | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 执行一个查询语句,返回一个关联的SQLiteDataReader实例。 | |||||
/// </summary> | |||||
/// <param name="sql">要执行的查询语句。</param> | |||||
/// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> | |||||
/// <returns></returns> | |||||
/// <exception cref="Exception"></exception> | |||||
public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters) | |||||
{ | |||||
SQLiteConnection connection = new SQLiteConnection(connectionString); | |||||
SQLiteCommand command = new SQLiteCommand(sql, connection); | |||||
try | |||||
{ | |||||
if (parameters.Length != 0) | |||||
{ | |||||
command.Parameters.AddRange(parameters); | |||||
} | |||||
connection.Open(); | |||||
return command.ExecuteReader(CommandBehavior.CloseConnection); | |||||
} | |||||
catch (Exception) { throw; } | |||||
} | |||||
/// <summary> | |||||
/// 查询数据库中的所有数据类型信息。 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
/// <exception cref="Exception"></exception> | |||||
public static DataTable GetSchema() | |||||
{ | |||||
using (SQLiteConnection connection = new SQLiteConnection(connectionString)) | |||||
{ | |||||
try | |||||
{ | |||||
connection.Open(); | |||||
return connection.GetSchema("TABLES"); | |||||
} | |||||
catch (Exception) { throw; } | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 读取Excel第一个工作表的内容 | |||||
/// </summary> | |||||
/// <param name="strPath"></param> | |||||
/// <returns></returns> | |||||
public static Dictionary<string, DataTable> ReadSQLiteTables() | |||||
{ | |||||
Dictionary<string, DataTable> dictTables = new Dictionary<string, DataTable>(); | |||||
try | |||||
{ | |||||
string sql = ""; | |||||
DataTable TablesName = ExecuteQuery("select * from sqlite_master;", new SQLiteParameter[] { });//得到所有表 | |||||
foreach (DataRow dr in TablesName.Rows) | |||||
{ | |||||
string strTableName = dr[1].ToString(); | |||||
sql = string.Format("SELECT * FROM [{0}]", strTableName); //查询字符串 | |||||
dictTables.Add(strTableName, ExecuteQuery(sql, new SQLiteParameter[] { })); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//发生异常,写入日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return dictTables; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,107 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
using System.Data.OleDb; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class BaseDAL | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("BaseDAL"); | |||||
public void CreateConnectString(string strHost, string strName, string strUser, string strPwd) | |||||
{ | |||||
SQLDB2Helper.createConnectString(strHost, strName, strUser, strPwd); | |||||
} | |||||
//获取所有表单名称 | |||||
public DataTable GetTableNames(string strUser) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
string strSql = string.Format("SELECT TABNAME FROM SYSCAT.TABLES Where TABSCHEMA = '{0}'",strUser); | |||||
try | |||||
{ | |||||
dt= SQLDB2Helper.getDB2Table(strSql); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 获取某表的表结构 | |||||
/// </summary> | |||||
/// <param name="strTableName"></param> | |||||
/// <returns></returns> | |||||
public DataTable GetTableStruct(string strTableName) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
string strSql = string.Format("SELECT * FROM {0} Where 1=0", strTableName); | |||||
try | |||||
{ | |||||
dt = SQLDB2Helper.getDB2Table(strSql); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 逐行批量插入数据 | |||||
/// </summary> | |||||
/// <param name="dt"></param> | |||||
/// <returns></returns> | |||||
public int InsertCnasData(DataTable dt, List<SyncParamasInfo> syncParamasInfos) | |||||
{ | |||||
int iReturn = 0; | |||||
if (dt.Rows.Count <= 0) return 0; | |||||
try | |||||
{ | |||||
//构建SQL语句 | |||||
string strSql_part1 = ""; | |||||
string strSql_part2 = ""; | |||||
foreach (var item in syncParamasInfos) | |||||
{ | |||||
strSql_part1 += item.TargetField + ","; | |||||
strSql_part2 += "?,"; | |||||
} | |||||
string strSql = string.Format("insert into {0}({1}) values({2})",syncParamasInfos[0].TargetTable, strSql_part1.Substring(0, strSql_part1.Length - 1), strSql_part2.Substring(0, strSql_part2.Length - 1)); | |||||
foreach (DataRow dr in dt.Rows) | |||||
{ | |||||
OleDbParameter[] parameters = new OleDbParameter[syncParamasInfos.Count]; | |||||
for (int i = 0; i < syncParamasInfos.Count; i++) | |||||
{ | |||||
parameters[i] = new OleDbParameter(syncParamasInfos[i].TargetField, dr[syncParamasInfos[i].TargetField]); | |||||
} | |||||
//执行SQL语句 | |||||
iReturn += SQLDB2Helper.ExequeryDB2Table(strSql, parameters); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//此处添加错误日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return iReturn; | |||||
} | |||||
public bool LinkCnasTest() | |||||
{ | |||||
return SQLDB2Helper.TestCnasLink(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,124 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Configuration; | |||||
using System.Data; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class CnasDataOperationFact | |||||
{ | |||||
//从Config中获取目标数据库的的类型 | |||||
private static string strDataType = ConfigurationManager.AppSettings["TargetDBType"].ToString(); | |||||
public static ICnasDataOperation CnasDataOperation() | |||||
{ | |||||
ICnasDataOperation operation; | |||||
switch (strDataType) | |||||
{ | |||||
case "MySQL": | |||||
operation = new MySQLCNASDataOperation(); | |||||
break; | |||||
case "DB2": | |||||
default: | |||||
operation = new DB2CNASDataOperation(); | |||||
break; | |||||
} | |||||
return operation; | |||||
} | |||||
} | |||||
public interface ICnasDataOperation | |||||
{ | |||||
//测试连接 | |||||
bool TestConnect(string strHost, string strName, string strUser, string strPwd,string strPort); | |||||
//获取所有表名称 | |||||
DataTable GetAllCNASTablesName(SyncInstrumentItemInfo syncitem); | |||||
//获取第一张表的表结构 | |||||
DataTable GetCNASTablesStruct(string strTableName,SyncInstrumentItemInfo syncitem); | |||||
//向第一张表的表中插入数据 | |||||
int InsertDataToCNASTable(DataTable dt, SyncInstrumentItemInfo syncitem); | |||||
//获取所有表的数据类型和长度 | |||||
DataTable GetCNASTableTypeLenth(string strTableName, SyncInstrumentItemInfo syncitem); | |||||
} | |||||
public class MySQLCNASDataOperation : ICnasDataOperation | |||||
{ | |||||
public DataTable GetAllCNASTablesName(SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
MySQLBaseDAL mySQLBase = new MySQLBaseDAL(); | |||||
mySQLBase.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost,syncitem.SyncTargetDBInfo.DBPort,syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser,syncitem.SyncTargetDBInfo.DBPwd); | |||||
return mySQLBase.GetTableNames(syncitem.SyncTargetDBInfo.DBName); | |||||
} | |||||
public DataTable GetCNASTablesStruct(string strTableName, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
MySQLBaseDAL mySQLBase = new MySQLBaseDAL(); | |||||
mySQLBase.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBPort, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return mySQLBase.GetTableStruct(strTableName); | |||||
} | |||||
public DataTable GetCNASTableTypeLenth(string strTableName, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
MySQLBaseDAL mySQLBase = new MySQLBaseDAL(); | |||||
mySQLBase.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBPort, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return mySQLBase.GetTableTypeAndLenth(strTableName); | |||||
} | |||||
public int InsertDataToCNASTable(DataTable dt, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
MySQLBaseDAL mySQLBase = new MySQLBaseDAL(); | |||||
mySQLBase.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBPort, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return mySQLBase.InsertCnasData(dt,syncitem.LstSyncPramas); | |||||
} | |||||
public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | |||||
{ | |||||
MySQLBaseDAL mySQLBase = new MySQLBaseDAL(); | |||||
mySQLBase.CreateConnectString(strHost, strPort, strName, strUser, strPwd); | |||||
return mySQLBase.LinkCnasTest(); | |||||
} | |||||
} | |||||
public class DB2CNASDataOperation : ICnasDataOperation | |||||
{ | |||||
public DataTable GetAllCNASTablesName(SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
BaseDAL baseDAL = new BaseDAL(); | |||||
baseDAL.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return baseDAL.GetTableNames(syncitem.SyncTargetDBInfo.DBUser); | |||||
} | |||||
public DataTable GetCNASTablesStruct(string strTableName, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
BaseDAL baseDAL = new BaseDAL(); | |||||
baseDAL.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return baseDAL.GetTableStruct(strTableName); | |||||
} | |||||
public DataTable GetCNASTableTypeLenth(string strTableName, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public int InsertDataToCNASTable(DataTable dt, SyncInstrumentItemInfo syncitem) | |||||
{ | |||||
BaseDAL baseDAL = new BaseDAL(); | |||||
baseDAL.CreateConnectString(syncitem.SyncTargetDBInfo.DBHost, syncitem.SyncTargetDBInfo.DBName, syncitem.SyncTargetDBInfo.DBUser, syncitem.SyncTargetDBInfo.DBPwd); | |||||
return baseDAL.InsertCnasData(dt, syncitem.LstSyncPramas); | |||||
} | |||||
public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | |||||
{ | |||||
BaseDAL basedal = new BaseDAL(); | |||||
basedal.CreateConnectString(strHost, strName, strUser, strPwd); | |||||
return basedal.LinkCnasTest(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,126 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Data; | |||||
using MySql.Data.MySqlClient; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public class MySQLBaseDAL | |||||
{ | |||||
private static log4net.ILog log = log4net.LogManager.GetLogger("MySQLBaseDAL"); | |||||
public void CreateConnectString(string strIP,string strPort,string strName, string strUser, string strPwd) | |||||
{ | |||||
MySQLHelper.InitConnectionString(strIP,strPort,strName,strUser,strPwd); | |||||
} | |||||
//获取所有表单名称 | |||||
public DataTable GetTableNames(string strName) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
string strSql = string.Format("SELECT table_name as TABNAME FROM information_schema.TABLES WHERE table_schema='{0}'", strName); | |||||
try | |||||
{ | |||||
dt = MySQLHelper.ExecuteDataSet(strSql).Tables[0]; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 获取某表的表结构 | |||||
/// </summary> | |||||
/// <param name="strTableName"></param> | |||||
/// <returns></returns> | |||||
public DataTable GetTableStruct(string strTableName) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
string strSql = string.Format("SELECT * FROM {0} Where 1=0", strTableName); | |||||
try | |||||
{ | |||||
dt = MySQLHelper.ExecuteDataSet(strSql).Tables[0]; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 获取某表的表结构和类型长度 | |||||
/// </summary> | |||||
/// <param name="strTableName"></param> | |||||
/// <returns></returns> | |||||
public DataTable GetTableTypeAndLenth(string strTableName) | |||||
{ | |||||
DataTable dt = new DataTable(); | |||||
string strSql = string.Format("select COLUMN_NAME AS 'ColumnName',IS_NULLABLE AS 'IsNullable',DATA_TYPE AS 'DataType',CHARACTER_MAXIMUM_LENGTH AS 'CharMaxLenth',CHARACTER_OCTET_LENGTH AS 'CharOcterLenth',NUMERIC_PRECISION AS 'NumericPrecision',NUMERIC_SCALE AS 'NumericScale' FROM information_schema.COLUMNS WHERE TABLE_NAME LIKE '{0}'", strTableName); | |||||
try | |||||
{ | |||||
dt = MySQLHelper.ExecuteDataSet(strSql).Tables[0]; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
} | |||||
return dt; | |||||
} | |||||
/// <summary> | |||||
/// 逐行批量插入数据 | |||||
/// </summary> | |||||
/// <param name="dt"></param> | |||||
/// <returns></returns> | |||||
public int InsertCnasData(DataTable dt, List<SyncParamasInfo> syncParamasInfos) | |||||
{ | |||||
int iReturn = 0; | |||||
if (dt.Rows.Count <= 0) return 0; | |||||
try | |||||
{ | |||||
//构建SQL语句 | |||||
string strSql_part1 = ""; | |||||
string strSql_part2 = ""; | |||||
foreach (var item in syncParamasInfos) | |||||
{ | |||||
strSql_part1 += item.TargetField + ","; | |||||
strSql_part2 += string.Format("@{0},",item.TargetField); | |||||
} | |||||
string strSql = string.Format("insert into {0}({1}) values({2})", syncParamasInfos[0].TargetTable, strSql_part1.Substring(0, strSql_part1.Length - 1), strSql_part2.Substring(0, strSql_part2.Length - 1)); | |||||
foreach (DataRow dr in dt.Rows) | |||||
{ | |||||
MySqlParameter[] parameters = new MySqlParameter[syncParamasInfos.Count]; | |||||
for (int i = 0; i < syncParamasInfos.Count; i++) | |||||
{ | |||||
parameters[i] = new MySqlParameter(syncParamasInfos[i].TargetField, dr[syncParamasInfos[i].TargetField]); | |||||
} | |||||
//执行SQL语句 | |||||
iReturn += MySQLHelper.ExecuteNonQuery(strSql, parameters); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
//此处添加错误日志 | |||||
log.Error(ex.Message); | |||||
} | |||||
return iReturn; | |||||
} | |||||
public bool LinkCnasTest() | |||||
{ | |||||
return MySQLHelper.TestConnectMySql(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
/// <summary> | |||||
/// 本系统目标数据库信息 | |||||
/// </summary> | |||||
public class DataBaseInfo | |||||
{ | |||||
/// <summary> | |||||
/// 服务器 | |||||
/// </summary> | |||||
public string DBHost { get; set; } | |||||
/// <summary> | |||||
/// 数据库名称 | |||||
/// </summary> | |||||
public string DBName { get; set; } | |||||
/// <summary> | |||||
/// 用户名 | |||||
/// </summary> | |||||
public string DBUser { get; set; } | |||||
/// <summary> | |||||
/// 密码 | |||||
/// </summary> | |||||
public string DBPwd { get; set; } | |||||
/// <summary> | |||||
/// 端口 | |||||
/// </summary> | |||||
public string DBPort { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,45 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
/// <summary> | |||||
/// 数据源类型 | |||||
/// </summary> | |||||
public enum DataSourceType | |||||
{ | |||||
None, | |||||
Access, | |||||
Excel, | |||||
SQLLite, | |||||
SQL | |||||
} | |||||
/// <summary> | |||||
/// 仪表数据源类 | |||||
/// </summary> | |||||
public class InstrumentDataSourceInfo | |||||
{ | |||||
/// <summary> | |||||
/// 仪表数据源类型 | |||||
/// </summary> | |||||
public DataSourceType InstrumentDataSourceType { get; set; } | |||||
/// <summary> | |||||
/// 用户名 | |||||
/// </summary> | |||||
public string UserId { get; set; } | |||||
/// <summary> | |||||
/// 用户密码 | |||||
/// </summary> | |||||
public string UserPwd { get; set; } | |||||
/// <summary> | |||||
/// 数据源本地路径(只有数据源是本地文件时不为空) | |||||
/// </summary> | |||||
public string LocalPath { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
/// <summary> | |||||
/// 仪表类 | |||||
/// </summary> | |||||
public class SyncInstrumentItemInfo | |||||
{ | |||||
/// <summary> | |||||
/// 标识 | |||||
/// </summary> | |||||
public string GUID { get; set; } | |||||
/// <summary> | |||||
/// 仪表编号(库内唯一) | |||||
/// </summary> | |||||
public string Code { get; set; } | |||||
/// <summary> | |||||
/// 仪表同步数据源 | |||||
/// </summary> | |||||
public InstrumentDataSourceInfo SyncInstrumentDSInfo { get; set; } | |||||
/// <summary> | |||||
/// 仪表同步目标数据库 | |||||
/// </summary> | |||||
public DataBaseInfo SyncTargetDBInfo { get; set; } | |||||
/// <summary> | |||||
/// 映射字段集合 | |||||
/// </summary> | |||||
public List<SyncParamasInfo> LstSyncPramas { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
/// <summary> | |||||
/// 同步映射字段 | |||||
/// </summary> | |||||
public class SyncParamasInfo | |||||
{ | |||||
public string SourceTable { get; set; } | |||||
public string SourceField { get; set; } | |||||
public string TargetTable { get; set; } | |||||
public string TargetField { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Windows.Forms; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
static class Program | |||||
{ | |||||
/// <summary> | |||||
/// 应用程序的主入口点。 | |||||
/// </summary> | |||||
[STAThread] | |||||
static void Main() | |||||
{ | |||||
Application.EnableVisualStyles(); | |||||
Application.SetCompatibleTextRenderingDefault(false); | |||||
Application.Run(new frmSyncParams()); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using System.Reflection; | |||||
using System.Runtime.CompilerServices; | |||||
using System.Runtime.InteropServices; | |||||
// 有关程序集的一般信息由以下 | |||||
// 控制。更改这些特性值可修改 | |||||
// 与程序集关联的信息。 | |||||
[assembly: AssemblyTitle("CNAS_DBSync")] | |||||
[assembly: AssemblyDescription("")] | |||||
[assembly: AssemblyConfiguration("")] | |||||
[assembly: AssemblyCompany("")] | |||||
[assembly: AssemblyProduct("CNAS_DBSync")] | |||||
[assembly: AssemblyCopyright("Copyright © 2019")] | |||||
[assembly: AssemblyTrademark("")] | |||||
[assembly: AssemblyCulture("")] | |||||
// 将 ComVisible 设置为 false 会使此程序集中的类型 | |||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 | |||||
//请将此类型的 ComVisible 特性设置为 true。 | |||||
[assembly: ComVisible(false)] | |||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID | |||||
[assembly: Guid("0f16f166-6646-4502-b22d-5fe5bfe92326")] | |||||
// 程序集的版本信息由下列四个值组成: | |||||
// | |||||
// 主版本 | |||||
// 次版本 | |||||
// 生成号 | |||||
// 修订号 | |||||
// | |||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 | |||||
// 方法是按如下所示使用“*”: : | |||||
// [assembly: AssemblyVersion("1.0.*")] | |||||
[assembly: AssemblyVersion("1.0.0.0")] | |||||
[assembly: AssemblyFileVersion("1.0.0.0")] | |||||
//log4net从配置文件中读取配置 | |||||
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)] |
@@ -0,0 +1,71 @@ | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// 此代码由工具生成。 | |||||
// 运行时版本: 4.0.30319.42000 | |||||
// | |||||
// 对此文件的更改可能导致不正确的行为,如果 | |||||
// 重新生成代码,则所做更改将丢失。 | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace CNAS_DBSync.Properties | |||||
{ | |||||
/// <summary> | |||||
/// 强类型资源类,用于查找本地化字符串等。 | |||||
/// </summary> | |||||
// 此类是由 StronglyTypedResourceBuilder | |||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 | |||||
// 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen | |||||
// (以 /str 作为命令选项),或重新生成 VS 项目。 | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] | |||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
internal class Resources | |||||
{ | |||||
private static global::System.Resources.ResourceManager resourceMan; | |||||
private static global::System.Globalization.CultureInfo resourceCulture; | |||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||||
internal Resources() | |||||
{ | |||||
} | |||||
/// <summary> | |||||
/// 返回此类使用的缓存 ResourceManager 实例。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Resources.ResourceManager ResourceManager | |||||
{ | |||||
get | |||||
{ | |||||
if ((resourceMan == null)) | |||||
{ | |||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CNAS_DBSync.Properties.Resources", typeof(Resources).Assembly); | |||||
resourceMan = temp; | |||||
} | |||||
return resourceMan; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 覆盖当前线程的 CurrentUICulture 属性 | |||||
/// 使用此强类型的资源类的资源查找。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Globalization.CultureInfo Culture | |||||
{ | |||||
get | |||||
{ | |||||
return resourceCulture; | |||||
} | |||||
set | |||||
{ | |||||
resourceCulture = value; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,117 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -0,0 +1,30 @@ | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// This code was generated by a tool. | |||||
// Runtime Version:4.0.30319.42000 | |||||
// | |||||
// Changes to this file may cause incorrect behavior and will be lost if | |||||
// the code is regenerated. | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace CNAS_DBSync.Properties | |||||
{ | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] | |||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase | |||||
{ | |||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |||||
public static Settings Default | |||||
{ | |||||
get | |||||
{ | |||||
return defaultInstance; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,7 @@ | |||||
<?xml version='1.0' encoding='utf-8'?> | |||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> | |||||
<Profiles> | |||||
<Profile Name="(Default)" /> | |||||
</Profiles> | |||||
<Settings /> | |||||
</SettingsFile> |
@@ -0,0 +1,58 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<connectionStrings> | |||||
<add name="CoreDb" connectionString="Driver={IBM DB2 ODBC DRIVER};DataBase=SAMPLE; HostName=127.0.0.1; Protocol=TCPIP;Port=50000;Uid=db2admin;Pwd=123" /> | |||||
</connectionStrings> | |||||
<appSettings> | |||||
<add key="CoreDb" value="Provider=IBMDADB2;Data Source=SAMPLE;UID=db2admin;PWD=123;" /> | |||||
</appSettings> | |||||
<entityFramework> | |||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> | |||||
<parameters> | |||||
<parameter value="mssqllocaldb" /> | |||||
</parameters> | |||||
</defaultConnectionFactory> | |||||
<providers> | |||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> | |||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> | |||||
</providers> | |||||
</entityFramework> | |||||
<system.data> | |||||
<DbProviderFactories> | |||||
<remove invariant="System.Data.SQLite.EF6" /> | |||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> | |||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories> | |||||
</system.data> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
</configuration> |
@@ -0,0 +1,195 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<ArrayOfSyncInstrumentItemInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>a2065a7f-62fb-4f5d-8a94-c321b896cf53</GUID> | |||||
<Code>LDD-1</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>Excel</InstrumentDataSourceType> | |||||
<LocalPath>C:\Users\Li\Desktop\水分仪模拟数据.xls</LocalPath> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost>127.0.0.1</DBHost> | |||||
<DBName>SAMPLE</DBName> | |||||
<DBUser>DB2ADMIN</DBUser> | |||||
<DBPwd>123</DBPwd> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SerialNumber</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD</TargetTable> | |||||
<TargetField>PLANTCODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleID</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD</TargetTable> | |||||
<TargetField>COAL_CODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleName</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD</TargetTable> | |||||
<TargetField>TEST_DATE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Content</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD</TargetTable> | |||||
<TargetField>STANDARD_NAME</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Method</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD</TargetTable> | |||||
<TargetField>STANDARD_ID</TargetField> | |||||
</SyncParamasInfo> | |||||
</LstSyncPramas> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>f521c2d4-ab6b-450c-a2dd-ef7d4e6d9fd4</GUID> | |||||
<Code>SDD-2</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>Excel</InstrumentDataSourceType> | |||||
<LocalPath>C:\Users\Li\Desktop\水分仪模拟数据.xls</LocalPath> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost>127.0.0.1</DBHost> | |||||
<DBName>SAMPLE</DBName> | |||||
<DBUser>DB2ADMIN</DBUser> | |||||
<DBPwd>123</DBPwd> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SerialNumber</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD_SUB</TargetTable> | |||||
<TargetField>VESSEL_CODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleID</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD_SUB</TargetTable> | |||||
<TargetField>VESSEL_MASS</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleName</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD_SUB</TargetTable> | |||||
<TargetField>SAMPLING_MASS</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Content</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD_SUB</TargetTable> | |||||
<TargetField>MASS_AFTER_FIRING</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Method</SourceField> | |||||
<TargetTable>ASHEXAMINERECORD_SUB</TargetTable> | |||||
<TargetField>FIRST_FIRING_MASS</TargetField> | |||||
</SyncParamasInfo> | |||||
</LstSyncPramas> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>bc6bc9f0-4b2d-42d6-92dd-85a2afb2b8b8</GUID> | |||||
<Code>SDF-1</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>Excel</InstrumentDataSourceType> | |||||
<LocalPath>C:\Users\Li\Desktop\水分仪模拟数据.xls</LocalPath> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost>127.0.0.1</DBHost> | |||||
<DBName>SAMPLE</DBName> | |||||
<DBUser>DB2ADMIN</DBUser> | |||||
<DBPwd>123</DBPwd> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SerialNumber</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_DECIMAL</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleID</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_CHAR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleName</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_VARCHAR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Content</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_GRAPHIC</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Method</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_VARGRAPHIC</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Tare</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_DATE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Sample</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_TIMESTAMP</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Leftover</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_TIME</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Calibration</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_DOUBLE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Moisture</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_BLOB</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>TypeFlag</SourceField> | |||||
<TargetTable>DB2TEST</TargetTable> | |||||
<TargetField>T_CLOB</TargetField> | |||||
</SyncParamasInfo> | |||||
</LstSyncPramas> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>20aa5cdf-ded4-4972-91ba-124300a34f63</GUID> | |||||
<Code>1</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>None</InstrumentDataSourceType> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost /> | |||||
<DBName /> | |||||
<DBUser /> | |||||
<DBPwd /> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas /> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>a98d236d-c067-4fa4-ac63-6b188989cd01</GUID> | |||||
<Code>2</Code> | |||||
</SyncInstrumentItemInfo> | |||||
</ArrayOfSyncInstrumentItemInfo> |
@@ -0,0 +1,22 @@ | |||||
<?xml version="1.0"?> | |||||
<!-- | |||||
* | |||||
* System.Data.SQLite.dll.config - | |||||
* | |||||
* WARNING: This XML configuration file is intended for use within the NuGet | |||||
* package directories only. Please do not copy this file to any of | |||||
* the build output directories because it could interfere with the | |||||
* native library pre-loading feature. | |||||
* | |||||
* Written by Joe Mistachkin. | |||||
* Released to the public domain, use at your own risk! | |||||
* | |||||
--> | |||||
<configuration> | |||||
<appSettings> | |||||
<add key="PreLoadSQLite_BaseDirectory" | |||||
value="%PreLoadSQLite_AssemblyDirectory%\..\..\build\%PreLoadSQLite_TargetFramework%" /> | |||||
</appSettings> | |||||
<dllmap dll="SQLite.Interop" target="SQLite.Interop.dll" /> | |||||
</configuration> |
@@ -0,0 +1,577 @@ | |||||
namespace CNAS_DBSync | |||||
{ | |||||
partial class frmDatabaseParams | |||||
{ | |||||
/// <summary> | |||||
/// Required designer variable. | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// Clean up any resources being used. | |||||
/// </summary> | |||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region Windows Form Designer generated code | |||||
/// <summary> | |||||
/// Required method for Designer support - do not modify | |||||
/// the contents of this method with the code editor. | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
this.pnlAll = new System.Windows.Forms.Panel(); | |||||
this.pnlCenter = new System.Windows.Forms.Panel(); | |||||
this.tabParamas = new System.Windows.Forms.TabControl(); | |||||
this.tabInstrument = new System.Windows.Forms.TabPage(); | |||||
this.label14 = new System.Windows.Forms.Label(); | |||||
this.textBox2 = new System.Windows.Forms.TextBox(); | |||||
this.tabcDS = new System.Windows.Forms.TabControl(); | |||||
this.tabExcel = new System.Windows.Forms.TabPage(); | |||||
this.btnOpenFileExcel = new System.Windows.Forms.Button(); | |||||
this.label3 = new System.Windows.Forms.Label(); | |||||
this.txtInportExcel = new System.Windows.Forms.TextBox(); | |||||
this.tabAccess = new System.Windows.Forms.TabPage(); | |||||
this.txtAceessPwd = new System.Windows.Forms.TextBox(); | |||||
this.txtAccessUser = new System.Windows.Forms.TextBox(); | |||||
this.label15 = new System.Windows.Forms.Label(); | |||||
this.label16 = new System.Windows.Forms.Label(); | |||||
this.btnOpenFileAccess = new System.Windows.Forms.Button(); | |||||
this.label4 = new System.Windows.Forms.Label(); | |||||
this.txtAccessPath = new System.Windows.Forms.TextBox(); | |||||
this.tabSQLite = new System.Windows.Forms.TabPage(); | |||||
this.txtSqlitePwd = new System.Windows.Forms.TextBox(); | |||||
this.txtSqliteUser = new System.Windows.Forms.TextBox(); | |||||
this.label7 = new System.Windows.Forms.Label(); | |||||
this.label6 = new System.Windows.Forms.Label(); | |||||
this.btnOpenFileSQLite = new System.Windows.Forms.Button(); | |||||
this.label5 = new System.Windows.Forms.Label(); | |||||
this.txtSqlitePath = new System.Windows.Forms.TextBox(); | |||||
this.label2 = new System.Windows.Forms.Label(); | |||||
this.tabCnas = new System.Windows.Forms.TabPage(); | |||||
this.btnCNASTestLink = new System.Windows.Forms.Button(); | |||||
this.txtDBName = new System.Windows.Forms.TextBox(); | |||||
this.txtDBHost = new System.Windows.Forms.TextBox(); | |||||
this.label11 = new System.Windows.Forms.Label(); | |||||
this.label10 = new System.Windows.Forms.Label(); | |||||
this.txtDBPwd = new System.Windows.Forms.TextBox(); | |||||
this.txtDBUser = new System.Windows.Forms.TextBox(); | |||||
this.label8 = new System.Windows.Forms.Label(); | |||||
this.label9 = new System.Windows.Forms.Label(); | |||||
this.pnlBottom = new System.Windows.Forms.Panel(); | |||||
this.btnOK = new System.Windows.Forms.Button(); | |||||
this.pnlTop = new System.Windows.Forms.Panel(); | |||||
this.txtPort = new System.Windows.Forms.TextBox(); | |||||
this.label1 = new System.Windows.Forms.Label(); | |||||
this.pnlAll.SuspendLayout(); | |||||
this.pnlCenter.SuspendLayout(); | |||||
this.tabParamas.SuspendLayout(); | |||||
this.tabInstrument.SuspendLayout(); | |||||
this.tabcDS.SuspendLayout(); | |||||
this.tabExcel.SuspendLayout(); | |||||
this.tabAccess.SuspendLayout(); | |||||
this.tabSQLite.SuspendLayout(); | |||||
this.tabCnas.SuspendLayout(); | |||||
this.pnlBottom.SuspendLayout(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// pnlAll | |||||
// | |||||
this.pnlAll.Controls.Add(this.pnlCenter); | |||||
this.pnlAll.Controls.Add(this.pnlBottom); | |||||
this.pnlAll.Controls.Add(this.pnlTop); | |||||
this.pnlAll.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlAll.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlAll.Name = "pnlAll"; | |||||
this.pnlAll.Size = new System.Drawing.Size(612, 426); | |||||
this.pnlAll.TabIndex = 0; | |||||
// | |||||
// pnlCenter | |||||
// | |||||
this.pnlCenter.Controls.Add(this.tabParamas); | |||||
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlCenter.Location = new System.Drawing.Point(0, 10); | |||||
this.pnlCenter.Name = "pnlCenter"; | |||||
this.pnlCenter.Size = new System.Drawing.Size(612, 374); | |||||
this.pnlCenter.TabIndex = 4; | |||||
// | |||||
// tabParamas | |||||
// | |||||
this.tabParamas.Controls.Add(this.tabInstrument); | |||||
this.tabParamas.Controls.Add(this.tabCnas); | |||||
this.tabParamas.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.tabParamas.Location = new System.Drawing.Point(0, 0); | |||||
this.tabParamas.Name = "tabParamas"; | |||||
this.tabParamas.SelectedIndex = 0; | |||||
this.tabParamas.Size = new System.Drawing.Size(612, 374); | |||||
this.tabParamas.TabIndex = 1; | |||||
// | |||||
// tabInstrument | |||||
// | |||||
this.tabInstrument.Controls.Add(this.label14); | |||||
this.tabInstrument.Controls.Add(this.textBox2); | |||||
this.tabInstrument.Controls.Add(this.tabcDS); | |||||
this.tabInstrument.Controls.Add(this.label2); | |||||
this.tabInstrument.Location = new System.Drawing.Point(4, 22); | |||||
this.tabInstrument.Name = "tabInstrument"; | |||||
this.tabInstrument.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabInstrument.Size = new System.Drawing.Size(604, 348); | |||||
this.tabInstrument.TabIndex = 0; | |||||
this.tabInstrument.Text = "仪器数据源"; | |||||
this.tabInstrument.UseVisualStyleBackColor = true; | |||||
// | |||||
// label14 | |||||
// | |||||
this.label14.AutoSize = true; | |||||
this.label14.ForeColor = System.Drawing.Color.Red; | |||||
this.label14.Location = new System.Drawing.Point(287, 23); | |||||
this.label14.Name = "label14"; | |||||
this.label14.Size = new System.Drawing.Size(149, 12); | |||||
this.label14.TabIndex = 8; | |||||
this.label14.Text = "(暂时自动生成,不可更改)"; | |||||
// | |||||
// textBox2 | |||||
// | |||||
this.textBox2.Location = new System.Drawing.Point(76, 20); | |||||
this.textBox2.Name = "textBox2"; | |||||
this.textBox2.ReadOnly = true; | |||||
this.textBox2.Size = new System.Drawing.Size(205, 21); | |||||
this.textBox2.TabIndex = 7; | |||||
// | |||||
// tabcDS | |||||
// | |||||
this.tabcDS.Controls.Add(this.tabExcel); | |||||
this.tabcDS.Controls.Add(this.tabAccess); | |||||
this.tabcDS.Controls.Add(this.tabSQLite); | |||||
this.tabcDS.Location = new System.Drawing.Point(8, 65); | |||||
this.tabcDS.Name = "tabcDS"; | |||||
this.tabcDS.SelectedIndex = 0; | |||||
this.tabcDS.Size = new System.Drawing.Size(588, 277); | |||||
this.tabcDS.TabIndex = 6; | |||||
this.tabcDS.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabcDS_Selected); | |||||
// | |||||
// tabExcel | |||||
// | |||||
this.tabExcel.Controls.Add(this.btnOpenFileExcel); | |||||
this.tabExcel.Controls.Add(this.label3); | |||||
this.tabExcel.Controls.Add(this.txtInportExcel); | |||||
this.tabExcel.Location = new System.Drawing.Point(4, 22); | |||||
this.tabExcel.Name = "tabExcel"; | |||||
this.tabExcel.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabExcel.Size = new System.Drawing.Size(580, 251); | |||||
this.tabExcel.TabIndex = 0; | |||||
this.tabExcel.Text = "Excel"; | |||||
this.tabExcel.UseVisualStyleBackColor = true; | |||||
// | |||||
// btnOpenFileExcel | |||||
// | |||||
this.btnOpenFileExcel.Location = new System.Drawing.Point(410, 80); | |||||
this.btnOpenFileExcel.Name = "btnOpenFileExcel"; | |||||
this.btnOpenFileExcel.Size = new System.Drawing.Size(60, 23); | |||||
this.btnOpenFileExcel.TabIndex = 6; | |||||
this.btnOpenFileExcel.Text = "浏览"; | |||||
this.btnOpenFileExcel.UseVisualStyleBackColor = true; | |||||
this.btnOpenFileExcel.Click += new System.EventHandler(this.btnOpenFileExcel_Click); | |||||
// | |||||
// label3 | |||||
// | |||||
this.label3.AutoSize = true; | |||||
this.label3.Location = new System.Drawing.Point(14, 83); | |||||
this.label3.Name = "label3"; | |||||
this.label3.Size = new System.Drawing.Size(41, 12); | |||||
this.label3.TabIndex = 5; | |||||
this.label3.Text = "路径:"; | |||||
// | |||||
// txtInportExcel | |||||
// | |||||
this.txtInportExcel.Location = new System.Drawing.Point(64, 80); | |||||
this.txtInportExcel.Name = "txtInportExcel"; | |||||
this.txtInportExcel.Size = new System.Drawing.Size(329, 21); | |||||
this.txtInportExcel.TabIndex = 5; | |||||
// | |||||
// tabAccess | |||||
// | |||||
this.tabAccess.Controls.Add(this.txtAceessPwd); | |||||
this.tabAccess.Controls.Add(this.txtAccessUser); | |||||
this.tabAccess.Controls.Add(this.label15); | |||||
this.tabAccess.Controls.Add(this.label16); | |||||
this.tabAccess.Controls.Add(this.btnOpenFileAccess); | |||||
this.tabAccess.Controls.Add(this.label4); | |||||
this.tabAccess.Controls.Add(this.txtAccessPath); | |||||
this.tabAccess.Location = new System.Drawing.Point(4, 22); | |||||
this.tabAccess.Name = "tabAccess"; | |||||
this.tabAccess.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabAccess.Size = new System.Drawing.Size(580, 251); | |||||
this.tabAccess.TabIndex = 1; | |||||
this.tabAccess.Text = "Access"; | |||||
this.tabAccess.UseVisualStyleBackColor = true; | |||||
// | |||||
// txtAceessPwd | |||||
// | |||||
this.txtAceessPwd.Location = new System.Drawing.Point(66, 109); | |||||
this.txtAceessPwd.Name = "txtAceessPwd"; | |||||
this.txtAceessPwd.PasswordChar = '*'; | |||||
this.txtAceessPwd.Size = new System.Drawing.Size(329, 21); | |||||
this.txtAceessPwd.TabIndex = 17; | |||||
// | |||||
// txtAccessUser | |||||
// | |||||
this.txtAccessUser.Location = new System.Drawing.Point(66, 65); | |||||
this.txtAccessUser.Name = "txtAccessUser"; | |||||
this.txtAccessUser.Size = new System.Drawing.Size(329, 21); | |||||
this.txtAccessUser.TabIndex = 16; | |||||
// | |||||
// label15 | |||||
// | |||||
this.label15.AutoSize = true; | |||||
this.label15.Location = new System.Drawing.Point(16, 109); | |||||
this.label15.Name = "label15"; | |||||
this.label15.Size = new System.Drawing.Size(41, 12); | |||||
this.label15.TabIndex = 15; | |||||
this.label15.Text = "密码:"; | |||||
// | |||||
// label16 | |||||
// | |||||
this.label16.AutoSize = true; | |||||
this.label16.Location = new System.Drawing.Point(6, 65); | |||||
this.label16.Name = "label16"; | |||||
this.label16.Size = new System.Drawing.Size(53, 12); | |||||
this.label16.TabIndex = 14; | |||||
this.label16.Text = "用户名:"; | |||||
// | |||||
// btnOpenFileAccess | |||||
// | |||||
this.btnOpenFileAccess.Location = new System.Drawing.Point(412, 21); | |||||
this.btnOpenFileAccess.Name = "btnOpenFileAccess"; | |||||
this.btnOpenFileAccess.Size = new System.Drawing.Size(60, 23); | |||||
this.btnOpenFileAccess.TabIndex = 9; | |||||
this.btnOpenFileAccess.Text = "浏览"; | |||||
this.btnOpenFileAccess.UseVisualStyleBackColor = true; | |||||
this.btnOpenFileAccess.Click += new System.EventHandler(this.btnOpenFileAccess_Click); | |||||
// | |||||
// label4 | |||||
// | |||||
this.label4.AutoSize = true; | |||||
this.label4.Location = new System.Drawing.Point(16, 24); | |||||
this.label4.Name = "label4"; | |||||
this.label4.Size = new System.Drawing.Size(41, 12); | |||||
this.label4.TabIndex = 7; | |||||
this.label4.Text = "路径:"; | |||||
// | |||||
// txtAccessPath | |||||
// | |||||
this.txtAccessPath.Location = new System.Drawing.Point(66, 21); | |||||
this.txtAccessPath.Name = "txtAccessPath"; | |||||
this.txtAccessPath.Size = new System.Drawing.Size(329, 21); | |||||
this.txtAccessPath.TabIndex = 8; | |||||
// | |||||
// tabSQLite | |||||
// | |||||
this.tabSQLite.Controls.Add(this.txtSqlitePwd); | |||||
this.tabSQLite.Controls.Add(this.txtSqliteUser); | |||||
this.tabSQLite.Controls.Add(this.label7); | |||||
this.tabSQLite.Controls.Add(this.label6); | |||||
this.tabSQLite.Controls.Add(this.btnOpenFileSQLite); | |||||
this.tabSQLite.Controls.Add(this.label5); | |||||
this.tabSQLite.Controls.Add(this.txtSqlitePath); | |||||
this.tabSQLite.Location = new System.Drawing.Point(4, 22); | |||||
this.tabSQLite.Name = "tabSQLite"; | |||||
this.tabSQLite.Size = new System.Drawing.Size(580, 251); | |||||
this.tabSQLite.TabIndex = 2; | |||||
this.tabSQLite.Text = "SQLLite"; | |||||
this.tabSQLite.UseVisualStyleBackColor = true; | |||||
// | |||||
// txtSqlitePwd | |||||
// | |||||
this.txtSqlitePwd.Location = new System.Drawing.Point(81, 115); | |||||
this.txtSqlitePwd.Name = "txtSqlitePwd"; | |||||
this.txtSqlitePwd.PasswordChar = '*'; | |||||
this.txtSqlitePwd.Size = new System.Drawing.Size(316, 21); | |||||
this.txtSqlitePwd.TabIndex = 13; | |||||
// | |||||
// txtSqliteUser | |||||
// | |||||
this.txtSqliteUser.Location = new System.Drawing.Point(81, 71); | |||||
this.txtSqliteUser.Name = "txtSqliteUser"; | |||||
this.txtSqliteUser.Size = new System.Drawing.Size(316, 21); | |||||
this.txtSqliteUser.TabIndex = 12; | |||||
// | |||||
// label7 | |||||
// | |||||
this.label7.AutoSize = true; | |||||
this.label7.Location = new System.Drawing.Point(18, 115); | |||||
this.label7.Name = "label7"; | |||||
this.label7.Size = new System.Drawing.Size(41, 12); | |||||
this.label7.TabIndex = 11; | |||||
this.label7.Text = "密码:"; | |||||
// | |||||
// label6 | |||||
// | |||||
this.label6.AutoSize = true; | |||||
this.label6.Location = new System.Drawing.Point(18, 71); | |||||
this.label6.Name = "label6"; | |||||
this.label6.Size = new System.Drawing.Size(53, 12); | |||||
this.label6.TabIndex = 10; | |||||
this.label6.Text = "用户名:"; | |||||
// | |||||
// btnOpenFileSQLite | |||||
// | |||||
this.btnOpenFileSQLite.Location = new System.Drawing.Point(414, 23); | |||||
this.btnOpenFileSQLite.Name = "btnOpenFileSQLite"; | |||||
this.btnOpenFileSQLite.Size = new System.Drawing.Size(60, 23); | |||||
this.btnOpenFileSQLite.TabIndex = 9; | |||||
this.btnOpenFileSQLite.Text = "浏览"; | |||||
this.btnOpenFileSQLite.UseVisualStyleBackColor = true; | |||||
this.btnOpenFileSQLite.Click += new System.EventHandler(this.btnOpenFileSQLite_Click); | |||||
// | |||||
// label5 | |||||
// | |||||
this.label5.AutoSize = true; | |||||
this.label5.Location = new System.Drawing.Point(18, 26); | |||||
this.label5.Name = "label5"; | |||||
this.label5.Size = new System.Drawing.Size(41, 12); | |||||
this.label5.TabIndex = 7; | |||||
this.label5.Text = "路径:"; | |||||
// | |||||
// txtSqlitePath | |||||
// | |||||
this.txtSqlitePath.Location = new System.Drawing.Point(81, 23); | |||||
this.txtSqlitePath.Name = "txtSqlitePath"; | |||||
this.txtSqlitePath.Size = new System.Drawing.Size(316, 21); | |||||
this.txtSqlitePath.TabIndex = 8; | |||||
// | |||||
// label2 | |||||
// | |||||
this.label2.AutoSize = true; | |||||
this.label2.Location = new System.Drawing.Point(14, 23); | |||||
this.label2.Name = "label2"; | |||||
this.label2.Size = new System.Drawing.Size(53, 12); | |||||
this.label2.TabIndex = 4; | |||||
this.label2.Text = "进程名:"; | |||||
// | |||||
// tabCnas | |||||
// | |||||
this.tabCnas.Controls.Add(this.txtPort); | |||||
this.tabCnas.Controls.Add(this.label1); | |||||
this.tabCnas.Controls.Add(this.btnCNASTestLink); | |||||
this.tabCnas.Controls.Add(this.txtDBName); | |||||
this.tabCnas.Controls.Add(this.txtDBHost); | |||||
this.tabCnas.Controls.Add(this.label11); | |||||
this.tabCnas.Controls.Add(this.label10); | |||||
this.tabCnas.Controls.Add(this.txtDBPwd); | |||||
this.tabCnas.Controls.Add(this.txtDBUser); | |||||
this.tabCnas.Controls.Add(this.label8); | |||||
this.tabCnas.Controls.Add(this.label9); | |||||
this.tabCnas.Location = new System.Drawing.Point(4, 22); | |||||
this.tabCnas.Name = "tabCnas"; | |||||
this.tabCnas.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabCnas.Size = new System.Drawing.Size(604, 348); | |||||
this.tabCnas.TabIndex = 1; | |||||
this.tabCnas.Text = "CNAS数据库"; | |||||
this.tabCnas.UseVisualStyleBackColor = true; | |||||
// | |||||
// btnCNASTestLink | |||||
// | |||||
this.btnCNASTestLink.Location = new System.Drawing.Point(444, 237); | |||||
this.btnCNASTestLink.Name = "btnCNASTestLink"; | |||||
this.btnCNASTestLink.Size = new System.Drawing.Size(79, 24); | |||||
this.btnCNASTestLink.TabIndex = 22; | |||||
this.btnCNASTestLink.Text = "测试连接"; | |||||
this.btnCNASTestLink.UseVisualStyleBackColor = true; | |||||
this.btnCNASTestLink.Click += new System.EventHandler(this.btnCNASTestLink_Click); | |||||
// | |||||
// txtDBName | |||||
// | |||||
this.txtDBName.Location = new System.Drawing.Point(96, 73); | |||||
this.txtDBName.Name = "txtDBName"; | |||||
this.txtDBName.Size = new System.Drawing.Size(316, 21); | |||||
this.txtDBName.TabIndex = 21; | |||||
// | |||||
// txtDBHost | |||||
// | |||||
this.txtDBHost.Location = new System.Drawing.Point(96, 27); | |||||
this.txtDBHost.Name = "txtDBHost"; | |||||
this.txtDBHost.Size = new System.Drawing.Size(316, 21); | |||||
this.txtDBHost.TabIndex = 20; | |||||
// | |||||
// label11 | |||||
// | |||||
this.label11.AutoSize = true; | |||||
this.label11.Location = new System.Drawing.Point(51, 77); | |||||
this.label11.Name = "label11"; | |||||
this.label11.Size = new System.Drawing.Size(41, 12); | |||||
this.label11.TabIndex = 19; | |||||
this.label11.Text = "实例:"; | |||||
// | |||||
// label10 | |||||
// | |||||
this.label10.AutoSize = true; | |||||
this.label10.Location = new System.Drawing.Point(40, 30); | |||||
this.label10.Name = "label10"; | |||||
this.label10.Size = new System.Drawing.Size(53, 12); | |||||
this.label10.TabIndex = 18; | |||||
this.label10.Text = "服务器:"; | |||||
// | |||||
// txtDBPwd | |||||
// | |||||
this.txtDBPwd.Location = new System.Drawing.Point(96, 164); | |||||
this.txtDBPwd.Name = "txtDBPwd"; | |||||
this.txtDBPwd.PasswordChar = '*'; | |||||
this.txtDBPwd.Size = new System.Drawing.Size(316, 21); | |||||
this.txtDBPwd.TabIndex = 17; | |||||
// | |||||
// txtDBUser | |||||
// | |||||
this.txtDBUser.Location = new System.Drawing.Point(96, 120); | |||||
this.txtDBUser.Name = "txtDBUser"; | |||||
this.txtDBUser.Size = new System.Drawing.Size(316, 21); | |||||
this.txtDBUser.TabIndex = 16; | |||||
// | |||||
// label8 | |||||
// | |||||
this.label8.AutoSize = true; | |||||
this.label8.Location = new System.Drawing.Point(51, 168); | |||||
this.label8.Name = "label8"; | |||||
this.label8.Size = new System.Drawing.Size(41, 12); | |||||
this.label8.TabIndex = 15; | |||||
this.label8.Text = "密码:"; | |||||
// | |||||
// label9 | |||||
// | |||||
this.label9.AutoSize = true; | |||||
this.label9.Location = new System.Drawing.Point(39, 124); | |||||
this.label9.Name = "label9"; | |||||
this.label9.Size = new System.Drawing.Size(53, 12); | |||||
this.label9.TabIndex = 14; | |||||
this.label9.Text = "用户名:"; | |||||
// | |||||
// pnlBottom | |||||
// | |||||
this.pnlBottom.Controls.Add(this.btnOK); | |||||
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.pnlBottom.Location = new System.Drawing.Point(0, 384); | |||||
this.pnlBottom.Name = "pnlBottom"; | |||||
this.pnlBottom.Size = new System.Drawing.Size(612, 42); | |||||
this.pnlBottom.TabIndex = 3; | |||||
// | |||||
// btnOK | |||||
// | |||||
this.btnOK.Location = new System.Drawing.Point(522, 4); | |||||
this.btnOK.Name = "btnOK"; | |||||
this.btnOK.Size = new System.Drawing.Size(75, 35); | |||||
this.btnOK.TabIndex = 0; | |||||
this.btnOK.Text = "确认"; | |||||
this.btnOK.UseVisualStyleBackColor = true; | |||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click); | |||||
// | |||||
// pnlTop | |||||
// | |||||
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.pnlTop.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlTop.Name = "pnlTop"; | |||||
this.pnlTop.Size = new System.Drawing.Size(612, 10); | |||||
this.pnlTop.TabIndex = 2; | |||||
// | |||||
// txtPort | |||||
// | |||||
this.txtPort.Location = new System.Drawing.Point(96, 205); | |||||
this.txtPort.Name = "txtPort"; | |||||
this.txtPort.PasswordChar = '*'; | |||||
this.txtPort.Size = new System.Drawing.Size(316, 21); | |||||
this.txtPort.TabIndex = 24; | |||||
// | |||||
// label1 | |||||
// | |||||
this.label1.AutoSize = true; | |||||
this.label1.Location = new System.Drawing.Point(51, 209); | |||||
this.label1.Name = "label1"; | |||||
this.label1.Size = new System.Drawing.Size(41, 12); | |||||
this.label1.TabIndex = 23; | |||||
this.label1.Text = "端口:"; | |||||
// | |||||
// frmDatabaseParams | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(612, 426); | |||||
this.Controls.Add(this.pnlAll); | |||||
this.MaximizeBox = false; | |||||
this.MinimizeBox = false; | |||||
this.Name = "frmDatabaseParams"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; | |||||
this.Text = "仪表数据库配置"; | |||||
this.Load += new System.EventHandler(this.frmDatabaseParams_Load); | |||||
this.pnlAll.ResumeLayout(false); | |||||
this.pnlCenter.ResumeLayout(false); | |||||
this.tabParamas.ResumeLayout(false); | |||||
this.tabInstrument.ResumeLayout(false); | |||||
this.tabInstrument.PerformLayout(); | |||||
this.tabcDS.ResumeLayout(false); | |||||
this.tabExcel.ResumeLayout(false); | |||||
this.tabExcel.PerformLayout(); | |||||
this.tabAccess.ResumeLayout(false); | |||||
this.tabAccess.PerformLayout(); | |||||
this.tabSQLite.ResumeLayout(false); | |||||
this.tabSQLite.PerformLayout(); | |||||
this.tabCnas.ResumeLayout(false); | |||||
this.tabCnas.PerformLayout(); | |||||
this.pnlBottom.ResumeLayout(false); | |||||
this.ResumeLayout(false); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.Panel pnlAll; | |||||
private System.Windows.Forms.Panel pnlCenter; | |||||
private System.Windows.Forms.TabControl tabParamas; | |||||
private System.Windows.Forms.TabPage tabInstrument; | |||||
private System.Windows.Forms.Label label14; | |||||
private System.Windows.Forms.TextBox textBox2; | |||||
private System.Windows.Forms.TabControl tabcDS; | |||||
private System.Windows.Forms.TabPage tabExcel; | |||||
private System.Windows.Forms.Button btnOpenFileExcel; | |||||
private System.Windows.Forms.Label label3; | |||||
private System.Windows.Forms.TextBox txtInportExcel; | |||||
private System.Windows.Forms.TabPage tabAccess; | |||||
private System.Windows.Forms.TextBox txtAceessPwd; | |||||
private System.Windows.Forms.TextBox txtAccessUser; | |||||
private System.Windows.Forms.Label label15; | |||||
private System.Windows.Forms.Label label16; | |||||
private System.Windows.Forms.Button btnOpenFileAccess; | |||||
private System.Windows.Forms.Label label4; | |||||
private System.Windows.Forms.TabPage tabSQLite; | |||||
private System.Windows.Forms.TextBox txtSqlitePwd; | |||||
private System.Windows.Forms.TextBox txtSqliteUser; | |||||
private System.Windows.Forms.Label label7; | |||||
private System.Windows.Forms.Label label6; | |||||
private System.Windows.Forms.Button btnOpenFileSQLite; | |||||
private System.Windows.Forms.Label label5; | |||||
private System.Windows.Forms.TextBox txtSqlitePath; | |||||
private System.Windows.Forms.Label label2; | |||||
private System.Windows.Forms.TabPage tabCnas; | |||||
private System.Windows.Forms.Button btnCNASTestLink; | |||||
private System.Windows.Forms.TextBox txtDBName; | |||||
private System.Windows.Forms.TextBox txtDBHost; | |||||
private System.Windows.Forms.Label label11; | |||||
private System.Windows.Forms.Label label10; | |||||
private System.Windows.Forms.TextBox txtDBPwd; | |||||
private System.Windows.Forms.TextBox txtDBUser; | |||||
private System.Windows.Forms.Label label8; | |||||
private System.Windows.Forms.Label label9; | |||||
private System.Windows.Forms.Panel pnlBottom; | |||||
private System.Windows.Forms.Button btnOK; | |||||
private System.Windows.Forms.Panel pnlTop; | |||||
private System.Windows.Forms.TextBox txtAccessPath; | |||||
private System.Windows.Forms.TextBox txtPort; | |||||
private System.Windows.Forms.Label label1; | |||||
} | |||||
} |
@@ -0,0 +1,259 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.ComponentModel; | |||||
using System.Data; | |||||
using System.Drawing; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
using System.Xml.Serialization; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public delegate void InstrumentItemDataHanlder(Dictionary<string,DataTable> dictInstrument); | |||||
public partial class frmDatabaseParams : Form | |||||
{ | |||||
public SyncInstrumentItemInfo syncInstrumentItem = new SyncInstrumentItemInfo(); | |||||
public Dictionary<string, DataTable> dictInstrument = new Dictionary<string, DataTable>(); | |||||
public DataBaseInfo dataBaseInfo = new DataBaseInfo(); | |||||
public InstumentCodeHanlder InstrumentDelegate; | |||||
public InstrumentItemDataHanlder InstrumentItemData; | |||||
public frmDatabaseParams(SyncInstrumentItemInfo syncInstrumentItem) | |||||
{ | |||||
InitializeComponent(); | |||||
this.syncInstrumentItem = syncInstrumentItem; | |||||
} | |||||
private void frmDatabaseParams_Load(object sender, EventArgs e) | |||||
{ | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo == null) | |||||
syncInstrumentItem.SyncInstrumentDSInfo = new InstrumentDataSourceInfo(); | |||||
//如果有旧值,加载旧的值 | |||||
switch (syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType) | |||||
{ | |||||
case DataSourceType.Access: | |||||
this.txtAccessPath.Text = syncInstrumentItem.SyncInstrumentDSInfo.LocalPath; | |||||
this.txtAccessUser.Text = syncInstrumentItem.SyncInstrumentDSInfo.UserId; | |||||
this.txtAceessPwd.Text = syncInstrumentItem.SyncInstrumentDSInfo.UserPwd; | |||||
break; | |||||
case DataSourceType.Excel: | |||||
this.txtInportExcel.Text = syncInstrumentItem.SyncInstrumentDSInfo.LocalPath; | |||||
break; | |||||
case DataSourceType.SQLLite: | |||||
this.txtSqlitePath.Text= syncInstrumentItem.SyncInstrumentDSInfo.LocalPath; | |||||
this.txtSqliteUser.Text = syncInstrumentItem.SyncInstrumentDSInfo.UserId; | |||||
this.txtSqlitePwd.Text = syncInstrumentItem.SyncInstrumentDSInfo.UserPwd; | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
//加载旧的CNAS数据库信息 | |||||
if (syncInstrumentItem.SyncTargetDBInfo == null) | |||||
syncInstrumentItem.SyncTargetDBInfo = new DataBaseInfo(); | |||||
this.txtDBHost.Text = syncInstrumentItem.SyncTargetDBInfo.DBHost; | |||||
this.txtDBName.Text = syncInstrumentItem.SyncTargetDBInfo.DBName; | |||||
this.txtDBUser.Text = syncInstrumentItem.SyncTargetDBInfo.DBUser; | |||||
this.txtDBPwd.Text = syncInstrumentItem.SyncTargetDBInfo.DBPwd; | |||||
this.txtPort.Text= syncInstrumentItem.SyncTargetDBInfo.DBPort; | |||||
} | |||||
private void btnOK_Click(object sender, EventArgs e) | |||||
{ | |||||
//点击确定按钮 | |||||
InstrumentData instrumentData = null; | |||||
switch (syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType) | |||||
{ | |||||
case DataSourceType.Access: | |||||
syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = this.txtAccessPath.Text.Trim(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserId = this.txtAccessUser.Text.Trim(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = this.txtAceessPwd.Text.Trim(); | |||||
instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType, new object[] { syncInstrumentItem.SyncInstrumentDSInfo.LocalPath, syncInstrumentItem.SyncInstrumentDSInfo.UserId, syncInstrumentItem.SyncInstrumentDSInfo.UserPwd }); | |||||
dictInstrument = instrumentData.GetInstrumentData(); | |||||
break; | |||||
case DataSourceType.SQLLite: | |||||
syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = this.txtSqlitePath.Text.Trim(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserId = this.txtSqliteUser.Text.Trim(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = this.txtSqlitePwd.Text.Trim(); | |||||
instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType, new object[] { syncInstrumentItem.SyncInstrumentDSInfo.LocalPath, syncInstrumentItem.SyncInstrumentDSInfo.UserId, syncInstrumentItem.SyncInstrumentDSInfo.UserPwd }); | |||||
dictInstrument = instrumentData.GetInstrumentData(); | |||||
break; | |||||
case DataSourceType.Excel: | |||||
default: | |||||
instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType, new object[] { syncInstrumentItem.SyncInstrumentDSInfo.LocalPath }); | |||||
dictInstrument = instrumentData.GetInstrumentData(); | |||||
break; | |||||
} | |||||
//目标库的信息 | |||||
syncInstrumentItem.SyncTargetDBInfo.DBHost = this.txtDBHost.Text.Trim(); | |||||
syncInstrumentItem.SyncTargetDBInfo.DBName = this.txtDBName.Text.Trim(); | |||||
syncInstrumentItem.SyncTargetDBInfo.DBUser = this.txtDBUser.Text.Trim(); | |||||
syncInstrumentItem.SyncTargetDBInfo.DBPwd = this.txtDBPwd.Text.Trim(); | |||||
syncInstrumentItem.SyncTargetDBInfo.DBPort = this.txtPort.Text.Trim(); | |||||
this.InstrumentDelegate(syncInstrumentItem); | |||||
this.InstrumentItemData(dictInstrument); | |||||
this.Close(); | |||||
} | |||||
private void btnOpenFileExcel_Click(object sender, EventArgs e) | |||||
{ | |||||
if (syncInstrumentItem.Code == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo == null) | |||||
syncInstrumentItem.SyncInstrumentDSInfo = new InstrumentDataSourceInfo(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType = DataSourceType.Excel; | |||||
OpenFileDialog openFile = new OpenFileDialog | |||||
{ | |||||
Filter = "Excel(*.xlsx)|*.xlsx|Excel(*.xls)|*.xls", | |||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop), | |||||
Multiselect = false | |||||
}; | |||||
if (openFile.ShowDialog() == DialogResult.Cancel) return; | |||||
this.txtInportExcel.Text = syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = openFile.FileName; | |||||
string fileType = System.IO.Path.GetExtension(openFile.FileName); | |||||
if (string.IsNullOrEmpty(fileType)) return; | |||||
} | |||||
private void tabcDS_Selected(object sender, TabControlEventArgs e) | |||||
{ | |||||
//切换的时候,检查其他类型数据源是否有值,如果有值,将提示删除旧值才能配置新值 | |||||
if (e.TabPage == tabExcel) | |||||
{ | |||||
//检查tabAccess页面是否为空 //检查tabSQLite页面是否为空 | |||||
if (!CheckAccessControl() || !CheckSQLiteControl()) | |||||
{ | |||||
if (MessageBox.Show("其他数据源存在已保存数据,继续将删除这些值,是否继续", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) | |||||
{ | |||||
this.txtAccessPath.Text = ""; | |||||
this.txtAccessUser.Text = ""; | |||||
this.txtAceessPwd.Text = ""; | |||||
this.txtSqliteUser.Text = ""; | |||||
this.txtSqlitePath.Text = ""; | |||||
this.txtSqlitePwd.Text = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserId = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = ""; | |||||
} | |||||
} | |||||
syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType = DataSourceType.Excel; | |||||
} | |||||
if (e.TabPage == tabAccess) | |||||
{ | |||||
//检查tabAccess页面是否为空 //检查tabSQLite页面是否为空 | |||||
if (!CheckExcelControl() || !CheckSQLiteControl()) | |||||
{ | |||||
if (MessageBox.Show("其他数据源存在已保存数据,继续将删除这些值,是否继续", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) | |||||
{ | |||||
this.txtAccessPath.Text = ""; | |||||
this.txtAccessUser.Text = ""; | |||||
this.txtAceessPwd.Text = ""; | |||||
this.txtSqliteUser.Text = ""; | |||||
this.txtSqlitePath.Text = ""; | |||||
this.txtSqlitePwd.Text = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserId = ""; | |||||
syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = ""; | |||||
} | |||||
} | |||||
syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType = DataSourceType.Access; | |||||
} | |||||
} | |||||
private bool CheckExcelControl() | |||||
{ | |||||
if (this.txtInportExcel.Text != "") | |||||
return false; | |||||
else | |||||
return true; | |||||
} | |||||
private bool CheckAccessControl() | |||||
{ | |||||
if (this.txtAccessPath.Text != "" && this.txtAccessUser.Text != "" && this.txtAceessPwd.Text != "") | |||||
return false; | |||||
else | |||||
return true; | |||||
} | |||||
private bool CheckSQLiteControl() | |||||
{ | |||||
if (this.txtSqlitePath.Text != "" && this.txtSqliteUser.Text != "" && this.txtSqlitePwd.Text != "") | |||||
return false; | |||||
else | |||||
return true; | |||||
} | |||||
private void btnCNASTestLink_Click(object sender, EventArgs e) | |||||
{ | |||||
if(CnasDataOperationFact.CnasDataOperation().TestConnect(this.txtDBHost.Text.Trim(), this.txtDBName.Text.Trim(), this.txtDBUser.Text.Trim(), this.txtDBPwd.Text.Trim(),this.txtPort.Text.Trim())) | |||||
MessageBox.Show("连接成功!"); | |||||
else | |||||
MessageBox.Show("连接失败!"); | |||||
} | |||||
private void btnOpenFileAccess_Click(object sender, EventArgs e) | |||||
{ | |||||
if (syncInstrumentItem.Code == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo == null) | |||||
syncInstrumentItem.SyncInstrumentDSInfo = new InstrumentDataSourceInfo(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType = DataSourceType.Access; | |||||
OpenFileDialog openFile = new OpenFileDialog | |||||
{ | |||||
Filter = "Microsoft Access(*.mdb)|*.mdb", | |||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop), | |||||
Multiselect = false | |||||
}; | |||||
if (openFile.ShowDialog() == DialogResult.Cancel) return; | |||||
this.txtAccessPath.Text = syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = openFile.FileName; | |||||
string fileType = System.IO.Path.GetExtension(openFile.FileName); | |||||
if (string.IsNullOrEmpty(fileType)) return; | |||||
} | |||||
private void btnOpenFileSQLite_Click(object sender, EventArgs e) | |||||
{ | |||||
if (syncInstrumentItem.Code == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo == null) | |||||
syncInstrumentItem.SyncInstrumentDSInfo = new InstrumentDataSourceInfo(); | |||||
syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType = DataSourceType.SQLLite; | |||||
OpenFileDialog openFile = new OpenFileDialog | |||||
{ | |||||
Filter = "SQLite(*.db)|*.db", | |||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop), | |||||
Multiselect = false | |||||
}; | |||||
if (openFile.ShowDialog() == DialogResult.Cancel) return; | |||||
this.txtSqlitePath.Text = syncInstrumentItem.SyncInstrumentDSInfo.LocalPath = openFile.FileName; | |||||
string fileType = System.IO.Path.GetExtension(openFile.FileName); | |||||
if (string.IsNullOrEmpty(fileType)) return; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,120 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -0,0 +1,74 @@ | |||||
namespace CNAS_DBSync | |||||
{ | |||||
partial class frmInstrumentCode | |||||
{ | |||||
/// <summary> | |||||
/// Required designer variable. | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// Clean up any resources being used. | |||||
/// </summary> | |||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region Windows Form Designer generated code | |||||
/// <summary> | |||||
/// Required method for Designer support - do not modify | |||||
/// the contents of this method with the code editor. | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
this.txtCode = new System.Windows.Forms.TextBox(); | |||||
this.btnOK = new System.Windows.Forms.Button(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// txtCode | |||||
// | |||||
this.txtCode.Location = new System.Drawing.Point(21, 23); | |||||
this.txtCode.Name = "txtCode"; | |||||
this.txtCode.Size = new System.Drawing.Size(292, 21); | |||||
this.txtCode.TabIndex = 0; | |||||
// | |||||
// btnOK | |||||
// | |||||
this.btnOK.Location = new System.Drawing.Point(334, 23); | |||||
this.btnOK.Name = "btnOK"; | |||||
this.btnOK.Size = new System.Drawing.Size(75, 23); | |||||
this.btnOK.TabIndex = 1; | |||||
this.btnOK.Text = "确定"; | |||||
this.btnOK.UseVisualStyleBackColor = true; | |||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click); | |||||
// | |||||
// frmInstrumentCode | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(432, 66); | |||||
this.Controls.Add(this.btnOK); | |||||
this.Controls.Add(this.txtCode); | |||||
this.MaximizeBox = false; | |||||
this.MinimizeBox = false; | |||||
this.Name = "frmInstrumentCode"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; | |||||
this.Text = "请填写仪器编号"; | |||||
this.ResumeLayout(false); | |||||
this.PerformLayout(); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.TextBox txtCode; | |||||
private System.Windows.Forms.Button btnOK; | |||||
} | |||||
} |
@@ -0,0 +1,75 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.ComponentModel; | |||||
using System.Data; | |||||
using System.Drawing; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public delegate void InstumentCodeHanlder(SyncInstrumentItemInfo Instrumentitem); | |||||
public partial class frmInstrumentCode : Form | |||||
{ | |||||
public List<SyncInstrumentItemInfo> lstSyncInstrument = new List<SyncInstrumentItemInfo>(); | |||||
public InstumentCodeHanlder InstrumentDelegate; | |||||
public string strOldCode = ""; | |||||
public frmInstrumentCode(List<SyncInstrumentItemInfo> lstSyncInstrument) | |||||
{ | |||||
InitializeComponent(); | |||||
this.lstSyncInstrument = lstSyncInstrument; | |||||
} | |||||
public frmInstrumentCode(List<SyncInstrumentItemInfo> lstSyncInstrument,string strOldCode=null) | |||||
{ | |||||
InitializeComponent(); | |||||
this.lstSyncInstrument = lstSyncInstrument; | |||||
this.strOldCode=this.txtCode.Text=strOldCode; | |||||
} | |||||
private void btnOK_Click(object sender, EventArgs e) | |||||
{ | |||||
if (this.txtCode.Text.Trim() == strOldCode) //此时没有修改任何内容 | |||||
{ | |||||
return; | |||||
} | |||||
int iMessage = new InstrumentCodeOperation().CheckInstrumentCode(this.txtCode.Text.Trim(),lstSyncInstrument); | |||||
if (iMessage <= 0) | |||||
{ | |||||
switch (iMessage) | |||||
{ | |||||
case 0: | |||||
MessageBox.Show("输入不允许为空!请重新输入!"); | |||||
break; | |||||
case -1: | |||||
MessageBox.Show("输入含有特殊字符!请重新输入!"); | |||||
break; | |||||
case -2: | |||||
MessageBox.Show("仪器编码不允许重复!请重新输入!"); | |||||
break; | |||||
} | |||||
this.txtCode.Text = ""; | |||||
return; | |||||
} | |||||
//传输输入到父界面 | |||||
SyncInstrumentItemInfo syncinstrument = new SyncInstrumentItemInfo(); | |||||
syncinstrument.GUID = Guid.NewGuid().ToString(); | |||||
syncinstrument.Code = this.txtCode.Text.Trim(); | |||||
this.InstrumentDelegate(syncinstrument); | |||||
//关闭界面 | |||||
this.Close(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,120 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -0,0 +1,203 @@ | |||||
namespace CNAS_DBSync | |||||
{ | |||||
partial class frmPrBar | |||||
{ | |||||
/// <summary> | |||||
/// Required designer variable. | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// Clean up any resources being used. | |||||
/// </summary> | |||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region Windows Form Designer generated code | |||||
/// <summary> | |||||
/// Required method for Designer support - do not modify | |||||
/// the contents of this method with the code editor. | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmPrBar)); | |||||
this.panel1 = new System.Windows.Forms.Panel(); | |||||
this.btnStart = new System.Windows.Forms.Button(); | |||||
this.btnGoon = new System.Windows.Forms.Button(); | |||||
this.btnStop = new System.Windows.Forms.Button(); | |||||
this.btnPause = new System.Windows.Forms.Button(); | |||||
this.lblCount = new System.Windows.Forms.Label(); | |||||
this.progressBar1 = new System.Windows.Forms.ProgressBar(); | |||||
this.lblMsg = new System.Windows.Forms.Label(); | |||||
this.lblPercentage = new System.Windows.Forms.Label(); | |||||
this.pictureBoxCancel = new System.Windows.Forms.PictureBox(); | |||||
this.panel1.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCancel)).BeginInit(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// panel1 | |||||
// | |||||
this.panel1.BackColor = System.Drawing.SystemColors.Control; | |||||
this.panel1.Controls.Add(this.btnStart); | |||||
this.panel1.Controls.Add(this.btnGoon); | |||||
this.panel1.Controls.Add(this.btnStop); | |||||
this.panel1.Controls.Add(this.btnPause); | |||||
this.panel1.Controls.Add(this.lblCount); | |||||
this.panel1.Controls.Add(this.progressBar1); | |||||
this.panel1.Controls.Add(this.lblMsg); | |||||
this.panel1.Controls.Add(this.lblPercentage); | |||||
this.panel1.Controls.Add(this.pictureBoxCancel); | |||||
this.panel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.panel1.Location = new System.Drawing.Point(1, 2); | |||||
this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.panel1.Name = "panel1"; | |||||
this.panel1.Size = new System.Drawing.Size(331, 96); | |||||
this.panel1.TabIndex = 2; | |||||
// | |||||
// btnStart | |||||
// | |||||
this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Popup; | |||||
this.btnStart.Image = ((System.Drawing.Image)(resources.GetObject("btnStart.Image"))); | |||||
this.btnStart.Location = new System.Drawing.Point(4, 70); | |||||
this.btnStart.Name = "btnStart"; | |||||
this.btnStart.Size = new System.Drawing.Size(75, 23); | |||||
this.btnStart.TabIndex = 8; | |||||
this.btnStart.Text = "开始"; | |||||
this.btnStart.TextAlign = System.Drawing.ContentAlignment.MiddleRight; | |||||
this.btnStart.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; | |||||
this.btnStart.UseVisualStyleBackColor = true; | |||||
this.btnStart.Click += new System.EventHandler(this.btnStart_Click); | |||||
// | |||||
// btnGoon | |||||
// | |||||
this.btnGoon.FlatStyle = System.Windows.Forms.FlatStyle.Popup; | |||||
this.btnGoon.Image = ((System.Drawing.Image)(resources.GetObject("btnGoon.Image"))); | |||||
this.btnGoon.Location = new System.Drawing.Point(169, 70); | |||||
this.btnGoon.Name = "btnGoon"; | |||||
this.btnGoon.Size = new System.Drawing.Size(75, 23); | |||||
this.btnGoon.TabIndex = 7; | |||||
this.btnGoon.Text = "继续"; | |||||
this.btnGoon.TextAlign = System.Drawing.ContentAlignment.MiddleRight; | |||||
this.btnGoon.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; | |||||
this.btnGoon.UseVisualStyleBackColor = true; | |||||
this.btnGoon.Click += new System.EventHandler(this.btnGoon_Click); | |||||
// | |||||
// btnStop | |||||
// | |||||
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Popup; | |||||
this.btnStop.Image = ((System.Drawing.Image)(resources.GetObject("btnStop.Image"))); | |||||
this.btnStop.Location = new System.Drawing.Point(251, 70); | |||||
this.btnStop.Name = "btnStop"; | |||||
this.btnStop.Size = new System.Drawing.Size(75, 23); | |||||
this.btnStop.TabIndex = 6; | |||||
this.btnStop.Text = "停止"; | |||||
this.btnStop.TextAlign = System.Drawing.ContentAlignment.MiddleRight; | |||||
this.btnStop.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; | |||||
this.btnStop.UseVisualStyleBackColor = true; | |||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click); | |||||
// | |||||
// btnPause | |||||
// | |||||
this.btnPause.FlatStyle = System.Windows.Forms.FlatStyle.Popup; | |||||
this.btnPause.Image = ((System.Drawing.Image)(resources.GetObject("btnPause.Image"))); | |||||
this.btnPause.Location = new System.Drawing.Point(87, 70); | |||||
this.btnPause.Name = "btnPause"; | |||||
this.btnPause.Size = new System.Drawing.Size(75, 23); | |||||
this.btnPause.TabIndex = 5; | |||||
this.btnPause.Text = "暂停"; | |||||
this.btnPause.TextAlign = System.Drawing.ContentAlignment.MiddleRight; | |||||
this.btnPause.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; | |||||
this.btnPause.UseVisualStyleBackColor = true; | |||||
this.btnPause.Click += new System.EventHandler(this.btnPause_Click); | |||||
// | |||||
// lblCount | |||||
// | |||||
this.lblCount.Location = new System.Drawing.Point(239, 17); | |||||
this.lblCount.Name = "lblCount"; | |||||
this.lblCount.Size = new System.Drawing.Size(87, 21); | |||||
this.lblCount.TabIndex = 4; | |||||
this.lblCount.Text = "1/1"; | |||||
this.lblCount.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
// | |||||
// progressBar1 | |||||
// | |||||
this.progressBar1.Location = new System.Drawing.Point(4, 41); | |||||
this.progressBar1.Name = "progressBar1"; | |||||
this.progressBar1.Size = new System.Drawing.Size(322, 23); | |||||
this.progressBar1.TabIndex = 3; | |||||
// | |||||
// lblMsg | |||||
// | |||||
this.lblMsg.Location = new System.Drawing.Point(3, 17); | |||||
this.lblMsg.Name = "lblMsg"; | |||||
this.lblMsg.Size = new System.Drawing.Size(230, 21); | |||||
this.lblMsg.TabIndex = 1; | |||||
this.lblMsg.Text = "准备就绪"; | |||||
this.lblMsg.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; | |||||
// | |||||
// lblPercentage | |||||
// | |||||
this.lblPercentage.AutoSize = true; | |||||
this.lblPercentage.ForeColor = System.Drawing.Color.Black; | |||||
this.lblPercentage.Location = new System.Drawing.Point(231, 28); | |||||
this.lblPercentage.Name = "lblPercentage"; | |||||
this.lblPercentage.Size = new System.Drawing.Size(12, 17); | |||||
this.lblPercentage.TabIndex = 3; | |||||
this.lblPercentage.Text = " "; | |||||
this.lblPercentage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
// | |||||
// pictureBoxCancel | |||||
// | |||||
this.pictureBoxCancel.Location = new System.Drawing.Point(308, 5); | |||||
this.pictureBoxCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.pictureBoxCancel.Name = "pictureBoxCancel"; | |||||
this.pictureBoxCancel.Size = new System.Drawing.Size(14, 13); | |||||
this.pictureBoxCancel.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; | |||||
this.pictureBoxCancel.TabIndex = 2; | |||||
this.pictureBoxCancel.TabStop = false; | |||||
this.pictureBoxCancel.Visible = false; | |||||
// | |||||
// frmPrBar | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(332, 100); | |||||
this.ControlBox = false; | |||||
this.Controls.Add(this.panel1); | |||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; | |||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); | |||||
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.Name = "frmPrBar"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
this.Text = " "; | |||||
this.TopMost = true; | |||||
this.panel1.ResumeLayout(false); | |||||
this.panel1.PerformLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCancel)).EndInit(); | |||||
this.ResumeLayout(false); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.Panel panel1; | |||||
public System.Windows.Forms.Label lblCount; | |||||
private System.Windows.Forms.ProgressBar progressBar1; | |||||
public System.Windows.Forms.Label lblMsg; | |||||
private System.Windows.Forms.Label lblPercentage; | |||||
private System.Windows.Forms.PictureBox pictureBoxCancel; | |||||
private System.Windows.Forms.Button btnPause; | |||||
private System.Windows.Forms.Button btnGoon; | |||||
private System.Windows.Forms.Button btnStop; | |||||
private System.Windows.Forms.Button btnStart; | |||||
} | |||||
} |
@@ -0,0 +1,354 @@ | |||||
using System; | |||||
using System.Threading; | |||||
using System.Windows.Forms; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public partial class frmPrBar : Form | |||||
{ | |||||
/// <summary> | |||||
/// 显示百分比(例:30%)或完成数(例:138/2000) | |||||
/// </summary> | |||||
private static bool _ShowPercentage; | |||||
/// <summary> | |||||
/// 构造函数 | |||||
/// </summary> | |||||
/// <param name="title">窗体标题</param> | |||||
/// <param name="customText">滚动条上方显示的文字提示</param> | |||||
/// <param name="taskCount">总任务数</param> | |||||
/// <param name="showPercentage">显示百分比(例:30%)或完成数(例:138/2000)</param> | |||||
/// <param name="showClose">是否显示关闭按钮</param> | |||||
/// <param name="showCustomButton">是否显示开始/暂停/继续/停止按钮</param> | |||||
public frmPrBar(string title, string customText, int taskCount, bool showPercentage, bool showClose, bool showCustomButton) | |||||
{ | |||||
InitializeComponent(); | |||||
this.Text = title; | |||||
SetText(customText); | |||||
//pictureBoxCancel.Visible = showCustomClose; | |||||
_ShowPercentage = showPercentage; | |||||
this.ControlBox = showClose; | |||||
btnStart.Visible = showCustomButton; | |||||
btnPause.Visible = showCustomButton; | |||||
btnGoon.Visible = showCustomButton; | |||||
btnStop.Visible = showCustomButton; | |||||
ProgressBarService.Status = ProgressBarRunStatus.None; | |||||
this.progressBar1.Maximum = taskCount; | |||||
this.progressBar1.Value = 0; | |||||
} | |||||
protected override void WndProc(ref Message m) | |||||
{ | |||||
const int WM_SYSCOMMAND = 0x0112; | |||||
const int SC_CLOSE = 0xF060; | |||||
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE) | |||||
{ | |||||
//Application.ExitThread(); | |||||
//ProgressBarService.CloseBarForm(); | |||||
ProgressBarService.Status = ProgressBarRunStatus.Close; | |||||
return; | |||||
} | |||||
base.WndProc(ref m); | |||||
} | |||||
/// <summary> | |||||
/// 委托修改等待窗显示的文字 | |||||
/// </summary> | |||||
/// <param name="text"></param> | |||||
private delegate void SetTextHandler(string text); | |||||
public void SetText(string text) | |||||
{ | |||||
if (lblMsg.InvokeRequired) | |||||
this.Invoke(new SetTextHandler(SetText), text); | |||||
else | |||||
{ | |||||
if (text.ToUpper() == "CLOSE") | |||||
{ | |||||
this.Close(); | |||||
this.Dispose(); | |||||
} | |||||
else | |||||
lblMsg.Text = text; | |||||
} | |||||
} | |||||
private delegate void UpdateUI(int step); | |||||
/// <summary> | |||||
/// 更新UI | |||||
/// </summary> | |||||
/// <param name="step"></param> | |||||
public void UpdataUIStatus(int step) | |||||
{ | |||||
try | |||||
{ | |||||
if (this.IsDisposed || !this.IsHandleCreated) | |||||
return; | |||||
if (InvokeRequired) | |||||
{ | |||||
this.Invoke(new UpdateUI(delegate (int s) | |||||
{ | |||||
this.progressBar1.Value = s; | |||||
//this.progressBar1.Value += s; | |||||
if (_ShowPercentage) | |||||
this.lblCount.Text = (this.progressBar1.Value * 100 / this.progressBar1.Maximum).ToString() + "%"; | |||||
else | |||||
this.lblCount.Text = this.progressBar1.Value.ToString() + "/" + this.progressBar1.Maximum.ToString(); | |||||
if (this.progressBar1.Value == this.progressBar1.Maximum) | |||||
this.Close(); | |||||
}), step); | |||||
} | |||||
else | |||||
{ | |||||
if (this.progressBar1.Value >= this.progressBar1.Maximum) | |||||
this.progressBar1.Value = 0; | |||||
this.progressBar1.Value = step; | |||||
//this.progressBar1.Value += step; | |||||
if (_ShowPercentage) | |||||
this.lblCount.Text = (this.progressBar1.Value * 100 / this.progressBar1.Maximum).ToString() + "%"; | |||||
else | |||||
this.lblCount.Text = this.progressBar1.Value.ToString() + "/" + this.progressBar1.Maximum.ToString(); | |||||
} | |||||
} | |||||
catch (Exception ex) { } | |||||
} | |||||
/// <summary> | |||||
/// 开始 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnStart_Click(object sender, EventArgs e) | |||||
{ | |||||
ProgressBarService.Status = ProgressBarRunStatus.Start; | |||||
btnStart.Enabled = false; | |||||
btnPause.Enabled = true; | |||||
btnGoon.Enabled = true; | |||||
btnStop.Enabled = true; | |||||
this.ControlBox = false; | |||||
} | |||||
/// <summary> | |||||
/// 暂停 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnPause_Click(object sender, EventArgs e) | |||||
{ | |||||
//ProgressBarService.PauseProgress(); | |||||
ProgressBarService.Status = ProgressBarRunStatus.Pause; | |||||
btnStart.Enabled = false; | |||||
btnPause.Enabled = false; | |||||
btnGoon.Enabled = true; | |||||
btnStop.Enabled = true; | |||||
this.ControlBox = false; | |||||
} | |||||
/// <summary> | |||||
/// 继续 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnGoon_Click(object sender, EventArgs e) | |||||
{ | |||||
ProgressBarService.Status = ProgressBarRunStatus.GoOn; | |||||
btnStart.Enabled = false; | |||||
btnPause.Enabled = true; | |||||
btnGoon.Enabled = false; | |||||
btnStop.Enabled = true; | |||||
this.ControlBox = false; | |||||
} | |||||
/// <summary> | |||||
/// 停止 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnStop_Click(object sender, EventArgs e) | |||||
{ | |||||
ProgressBarService.Status = ProgressBarRunStatus.Stop; | |||||
btnStart.Enabled = true; | |||||
btnPause.Enabled = false; | |||||
btnGoon.Enabled = false; | |||||
btnStop.Enabled = false; | |||||
this.ControlBox = true; | |||||
} | |||||
} | |||||
public class ProgressBarService | |||||
{ | |||||
private Thread thred = null; | |||||
private frmPrBar bar = null; | |||||
public ProgressBarService() { } | |||||
private static ProgressBarService _instance; | |||||
private static readonly Object syncLock = new Object(); | |||||
public static ProgressBarService Instance | |||||
{ | |||||
get | |||||
{ | |||||
if (ProgressBarService._instance == null) | |||||
{ | |||||
lock (syncLock) | |||||
{ | |||||
if (ProgressBarService._instance == null) | |||||
{ | |||||
ProgressBarService._instance = new ProgressBarService(); | |||||
} | |||||
} | |||||
} | |||||
return ProgressBarService._instance; | |||||
} | |||||
} | |||||
#region 创建等待窗口 | |||||
/// <summary> | |||||
/// 创建等待窗口并写入提示文字 | |||||
/// </summary> | |||||
/// <param name="title">标题</param> | |||||
/// <param name="str">提示文字</param> | |||||
/// <param name="Count">步长</param> | |||||
/// <param name="showPercentage">显示百分比(例:30%)或完成数(例:138/2000).默认false显示完成数</param> | |||||
/// <param name="showClose">是否显示关闭窗口按钮(true显示;false隐藏),不传值默认fasle</param> | |||||
/// <param name="showCustomButton">是否显示开始/暂停/继续/停止按钮(true显示;false隐藏),不传值默认fasle</param> | |||||
public static void CreateBarForm(string title, string text, int Count, bool showPercentage = false, bool showClose = false, bool showCustomButton = false) | |||||
{ | |||||
ProgressBarService.Instance.CreateForm(title, text, Count, showPercentage, showClose, showCustomButton); | |||||
} | |||||
int tid1 = 0; | |||||
private void CreateForm(string title, string text, int Count, bool showPercentage, bool showClose, bool showCustomButton) | |||||
{ | |||||
int tid2 = Thread.CurrentThread.ManagedThreadId; | |||||
if (tid1 == tid2) | |||||
return; | |||||
tid1 = tid2; | |||||
if (thred != null) | |||||
{ | |||||
try | |||||
{ | |||||
thred = null; | |||||
bar = null; | |||||
} | |||||
catch (Exception) | |||||
{ | |||||
} | |||||
} | |||||
thred = new Thread(new ThreadStart(delegate () | |||||
{ | |||||
bar = new frmPrBar(title, text, Count, showPercentage, showClose, showCustomButton); | |||||
System.Windows.Forms.Application.Run(bar); | |||||
})); | |||||
thred.Start(); | |||||
} | |||||
#endregion | |||||
#region 关闭等待窗口 | |||||
/// <summary> | |||||
/// 关闭窗口 | |||||
/// </summary> | |||||
public static void CloseBarForm() | |||||
{ | |||||
ProgressBarService.Instance.CloseForm(); | |||||
} | |||||
private void CloseForm() | |||||
{ | |||||
tid1 = 0; | |||||
if (thred != null) | |||||
{ | |||||
try | |||||
{ | |||||
bar.SetText("CLOSE"); | |||||
thred = null; | |||||
bar = null; | |||||
} | |||||
catch (Exception) { } | |||||
} | |||||
} | |||||
#endregion | |||||
#region 修改等待窗体的提示文字 | |||||
/// <summary> | |||||
/// 修改提示文字 | |||||
/// </summary> | |||||
/// <param name="text">提示文字</param> | |||||
public static void SetBarFormCaption(string text) | |||||
{ | |||||
ProgressBarService.Instance.SetFormCaption(text); | |||||
} | |||||
private void SetFormCaption(string text) | |||||
{ | |||||
if (bar != null) | |||||
{ | |||||
try | |||||
{ | |||||
bar.SetText(text); | |||||
} | |||||
catch (Exception) { } | |||||
} | |||||
} | |||||
#endregion | |||||
#region 更新进度条 | |||||
/// <summary> | |||||
/// 更新进度 | |||||
/// </summary> | |||||
/// <param name="step"></param> | |||||
public static void UpdateProgress(int step) | |||||
{ | |||||
ProgressBarService.Instance.SetProgress(step); | |||||
} | |||||
private void SetProgress(int step) | |||||
{ | |||||
if (bar != null) | |||||
{ | |||||
try | |||||
{ | |||||
bar.UpdataUIStatus(step); | |||||
} | |||||
catch (Exception) { } | |||||
} | |||||
} | |||||
#endregion | |||||
#region 进度条运行状态 | |||||
public static ProgressBarRunStatus Status { get; set; } | |||||
#endregion | |||||
} | |||||
public enum ProgressBarRunStatus | |||||
{ | |||||
/// <summary> | |||||
/// 无操作 | |||||
/// </summary> | |||||
None, | |||||
/// <summary> | |||||
/// 开始 | |||||
/// </summary> | |||||
Start, | |||||
/// <summary> | |||||
/// 暂停 | |||||
/// </summary> | |||||
Pause, | |||||
/// <summary> | |||||
/// 继续 | |||||
/// </summary> | |||||
GoOn, | |||||
/// <summary> | |||||
/// 停止 | |||||
/// </summary> | |||||
Stop, | |||||
/// <summary> | |||||
/// 关闭 | |||||
/// </summary> | |||||
Close | |||||
} | |||||
} |
@@ -0,0 +1,263 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |||||
<data name="btnStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 | |||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJ | |||||
TUUH3wIYEh0dQxlfkQAAAtRJREFUOE9lkWtIk2EUxw+kQVCBqNhmiAO7aqJiaZltXrYwEyyClAQhJIS+ | |||||
ZS2xMC+BSrS5MmuyoiivUzfnbm5ZTaRc9sEp3mI6lwVaGUQf+mKeznlNsTrw33Oec/6/5znPXtgY4TdN | |||||
EFZlhMON/aAZ9gEiCuKca9xjz38hrjaBss8DSQ1OgCJdYNJdZ3L2k8GrZ1rdj1icc03okUfZNyIw61HQ | |||||
OgQZTS8hTmWT5D57rS3sHftaaH+P5xxeQZxzjXpNcWqbhL0FbUOrsKjCCPFqO+ytM0ecbnU786xTmG2b | |||||
RbltDjNtfmFVkLjGPfI8Zy8zzMKOGwaAi483y3QD2hzjOCqsPlTY/XjK5sUcqxfllPNeEPVyesZRpnNp | |||||
mRHYWJUdom9ZkzOah5cUZi8eJ6Ocbq51+9HgmcE827Sw5zqLPexlhlk40fEODtQ7rsg6POu3Z9DId0YX | |||||
ceXXMg55P2KxY0p4xtoU7GWGWZiizxStcTbK9GMot/J76QBaNSML9AVXw7fwBUterE7CHvYywyy8op99 | |||||
Ksc9afsoZlp8mGn1Y7plDus3HOBZ+okXXPN0sF/wsJcZZiFZNwC7ai2XjjwdxnQTvY9gmdknTLC8soLW | |||||
Dz/wbP88plGde+xJIS8zzEJEpQHCy7sSE+67Pks7JzCtdxalvT4sd39C7cQ3zKK3y2ifTocKPfKwdycx | |||||
zELQ5TaAQm1AVI1Zc+jhGzzWOYlS4wzKCUoz0bg9sygjcY177GEvMwIbrGwHUZkeQpRtoj11lp7EpkFM | |||||
afHgUf0kpnZOY2oXiXKucY897GWGWSEiqwwgvkaFkmaRpKJbHXPbvpjwYAAP0m0szmNU9kVJpUEVXNIi | |||||
El/XC8xfkU//aLj6LUBI1NZt8vO5oXmljaKiGou4qMYcml/WsD2r+CSIY7eElXbAfuP3P9Q/ERgZy0sA | |||||
KZi0mxRPiiNFkYJIm0KqXbSsBcBvK2YMb8wajUQAAAAASUVORK5CYII= | |||||
</value> | |||||
</data> | |||||
<data name="btnGoon.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 | |||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJ | |||||
TUUH3wIYEh0dQxlfkQAAAuhJREFUOE9lkWtIk3EUxg+UQVCBqNhmiIJdNVGxtEQ3L5u3BAkDRUEpPwh9 | |||||
y1piUV4Ck2gmmaWse961TXdVM51Iafah5WUquk2lD96SJCkrOJ3zqmF14Nn/2TnP77z/d4Ot5XGjDdyL | |||||
NHCisgvKB+2AiILYc49nnPmvxMVtoGi3QEhFJ0C2yinkbmdo4tO+yyl1A49Y7LknzCijaP8gMH8qo64f | |||||
oqu7IUBp9E5+8aYqUzu0mGmawPSOSUHsuUez6oAyozdnM+r712FRgQYCy0xwqFTnebpuoDPVMIaJRhvK | |||||
jQ6UbYg993hGmVecZYZZ2HtdDXD+yQ6pqrcqSTOCcoMdZaZplG9oq+dZUusISlXmKmYE1l9pAt9bhtDo | |||||
msEluW4S40wOTDfSLQxTGEvQpucF/J0znGWGWUhofA9H73RckjZaUEZPiKcF6uEZfNxvxTN05ebhWXw2 | |||||
YMUUw/j6bSjDWWaYhTH6m3zLOyulTUO0wIFx9L4905/x++pXNI9O4cinBfy2uoo95M+ZxjCGF1CWGWah | |||||
hz4OKzvuSRo+YozejrG0pHt6CX/9WMOh+RWcWFjBn2traJlbwZyeaYzW2ZGzzDALoape2H9Tf+Hk80GM | |||||
aptEOS0x2hZRa1vG9K4Z1NmWUG9fxrSuWYzSO4RMGGWZYRY8C9Xgca0lOOi+eV7SPIrR2inMej2D8fQq | |||||
kVo7ZnXPYgJ5KflIrQ05w9l9xDALzhfrATKrtvuU6MqPP3yLEc1WjNBMoqTVhtI2G0bQyV6imRJmnOEs | |||||
MwLromgAUX4TuCrqRQdL9a3B1X0YVmvB8CYrhreMr4s893jGGc4yw6xQXkVqEF+hRm6NyLvgZZnfbdNc | |||||
0INePEZPY7H3U5rmvAvVSpfcWpH4apPA/FVp9It6lL0DcPXZtVt2NtktNa9SlF2iF2eX6NzS8iv2xOec | |||||
ArH/Tve8Rjii+bJB/VNOXv58bCe5kA6QAkkBJB+SM2mba7GZjs0C+A0Zsg4rupc/VgAAAABJRU5ErkJg | |||||
gg== | |||||
</value> | |||||
</data> | |||||
<data name="btnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 | |||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJ | |||||
TUUH3wIYEh0dQxlfkQAAAn1JREFUOE9lkV1IU3EYxl9Ig6ACmWKbIQ7sUxMVS0uWS92iTJDoQkkQxIsg | |||||
6CJriUX5ESyJtiSzJiuK8nPapu7juBU5sdLWRSamhW16Yxh2EdT12/85OunYC79z/jzv89vh7NC/k3Rz | |||||
iBKbXHS4/RW1hiLEzDI4I8MOnf9G0zxEppEpym0LENXYY3PvBfJKno5fOdM9+RjgjEzeiY5p5KPsrE9l | |||||
9wQVdbymTItPW/b8ra1qeHqlSvrKZ/3zMjgjE7uOTKtPi25lz8SqrG5wUZZVor0t7uTT3ZOBcu8cl/jC | |||||
bPQtsGENnJFhJzov0YUDl3bccBKdf7JZbx+zlbpm2OiNsFFaZMMGkGFXOjjDenvQBkd2MywSpd325hV1 | |||||
hn4a3fN8XBRBtTSnIJqjgy4cuHSy7wMduOu/rO+bWn86GImsKIjm6KALBy7Nic+U1hpo1zum2eDF+4qS | |||||
IPj9j4Jojg66cODSqLjss/jvF/R+4mJPhIu9izKjS78VRHN00IUDl/LsY7TrlufikWchLhwS7+dZkNn4 | |||||
A9EcnXzRhQOXkhudlHR9ICf7QfBHQf9nPjYc5kJ3hC+8WVKADDt00N0pHLgUd6mHqMoWk2p2tx569I6P | |||||
9s9ygesb6wbDCpBhhw66cGRXZeoldb2D4k096j0tnsGcjnHO75pinWOWdQNfVhFnZNihgy4cuPKkNDlJ | |||||
c1UEtZ1qbcMLa/odaTn74RgfFE8DOKdbpGVto9Oiqu1Sa645ZEcxFeIfTbK+J4pP3brNUF2WUF7Xrq4x | |||||
ezQ1ZndCRX3b9hPnTpEmY0tiXR/td/1aszZMbEoGbjEClWC3IEuQKUgVxAk2xTcHxS06RH8B4+wLlXF9 | |||||
8lIAAAAASUVORK5CYII= | |||||
</value> | |||||
</data> | |||||
<data name="btnPause.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 | |||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH3gwKEAoh5A2BPgAAAHhJREFU | |||||
OE/tkssJgDAQRKO24N0WbcaTFQjakwetQ+fBBhZCQEnw5MCDZWY/hyRUUzefr0jkwtaR9RJZ0ItJbGIU | |||||
jUGNR0aPTTlhikEc4hKriFep8cjosSknTAt3QfMi4gJqPLJ/wRcLip6x+CNBvApZL1EMnlJJIdz2xC/o | |||||
PlMuvwAAAABJRU5ErkJggg== | |||||
</value> | |||||
</data> | |||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAB5yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJ | |||||
o/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJ | |||||
o/95yaP/ecmj/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/2/Fnf/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt | |||||
4f/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt4f/T7eH/0+3h/9Pt | |||||
4f/T7eH/0+3h/9Pt4f/T7eH/asOZ/ympbf8pqW3/lNS2//////////////////////////////////// | |||||
//////////////////////////////////////////////////////////////////////////////// | |||||
//////////////////////////////////+P0rL/Kalt/ympbf+U1Lb//////1u9j/9Ds3//Q7N//0Oz | |||||
f/9Ds3//Q7N//0Ozf/9Ds3//Q7N//0Ozf/9Ds3//Q7N//0Ozf/9Ds3//Q7N//0Ozf/9Ds3//Q7N//0Oz | |||||
f/9Ds3//Q7N//0Ozf/9Ds3//Q7N//0Ozf/9yxp///////4/Ssv8pqW3/Kalt/5TUtv//////Q7N//ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/16+kf//////j9Ky/ympbf8pqW3/lNS2//// | |||||
//9Ds3//Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf/V7uL/1u7j/0u2hP8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Xr6R//////+P0rL/Kalt/ymp | |||||
bf+U1Lb//////0Ozf/8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt//3+/v//////U7qK/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf9evpH//////4/S | |||||
sv8pqW3/Kalt/5TUtv//////Q7N//ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3//f7+//// | |||||
//9Tuor/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/16+ | |||||
kf//////j9Ky/ympbf8pqW3/lNS2//////9Ds3//Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf/9/v7//////1O6iv8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Xr6R//////+P0rL/Kalt/ympbf+U1Lb//////0Ozf/8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt//3+/v//////U7qK/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf9evpH//////4/Ssv8pqW3/Kalt/5TUtv//////Q7N//ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3//f7+//////9Tuor/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/16+kf//////j9Ky/ympbf8pqW3/lNS2//////9Ds3//Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf/9/v7//////1i8jf8vq3H/L6tx/yqpbv8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Xr6R//////+P0rL/Kalt/ympbf+U1Lb//////0Oz | |||||
f/8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt//3+/v///////////////////////P39/9vw | |||||
5/+a1rr/O7B5/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf9evpH//////4/Ssv8pqW3/Kalt/5TU | |||||
tv//////Q7N//ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3//f7+///////5/Pv/+Pz6//n8 | |||||
+v/+/v7////////////v+PT/Xb6Q/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/16+kf//////j9Ky/ymp | |||||
bf8pqW3/lNS2//////9Ds3//Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf/9/v7//////1O6 | |||||
iv8pqW3/Kalt/zStdf9rw5r/2e/l///////z+vf/RrSB/ympbf8pqW3/Kalt/ympbf8pqW3/Xr6R//// | |||||
//+P0rL/Kalt/ympbf+U1Lb//////0Ozf/8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt//3+ | |||||
/v//////U7qK/ympbf8pqW3/Kalt/ympbf8zrXT/3/Lp//////+w38n/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf9evpH//////4/Ssv8pqW3/Kalt/5TUtv//////Q7N//ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3//f7+//////9Tuor/Kalt/ympbf8pqW3/Kalt/ympbf+CzKr///////D59f8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/16+kf//////j9Ky/ympbf8pqW3/lNS2//////9Ds3//Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf/9/v7//////1O6iv8pqW3/Kalt/ympbf8pqW3/Kalt/1++kf///////////zSt | |||||
dP8pqW3/Kalt/ympbf8pqW3/Xr6R//////+P0rL/Kalt/ympbf+U1Lb//////0Ozf/8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt//3+/v//////U7qK/ympbf8pqW3/Kalt/ympbf8pqW3/bcSb//// | |||||
///+/v7/L6tx/ympbf8pqW3/Kalt/ympbf9evpH//////4/Ssv8pqW3/Kalt/5TUtv//////Q7N//ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3//f7+//////9Tuor/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf+04cz//////+Hy6v8pqW3/Kalt/ympbf8pqW3/Kalt/16+kf//////j9Ky/ympbf8pqW3/lNS2//// | |||||
//9Ds3//Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf/9/v7//////1O6iv8pqW3/Kalt/ymp | |||||
bf84r3f/nNe7//7+/v//////jtGy/ympbf8pqW3/Kalt/ympbf8pqW3/Xr6R//////+P0rL/Kalt/ymp | |||||
bf+S07X//////0Ozf/8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt//3+/v//////3PHn/9Tt | |||||
4f/U7eH/3/Lp//z9/f///////////8bo2P8uq3D/Kalt/ympbf8pqW3/Kalt/ympbf9evpH//////4/S | |||||
sv8pqW3/Kalt/3rJpP//////SraD/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3//f7+//// | |||||
/////////////////////////v7+/+Pz7P+L0LD/Lapv/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/16+ | |||||
kf//////j9Ky/ympbf8pqW3/QrN+//7+/v+a1rr/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf9Xu4z/WLyN/1i8jf9YvI3/WLyN/1O6iv89sXr/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Xr6R//////+P0rL/Kalt/0CyfP8pqW3/vOTR//j8+v9RuYj/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf9evpH//////4/Ssv8pqW3/mta6/ympbf9GtIH/8/r3/+r28f9RuYj/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/16+kf//////j9Ky/ympbf/7/fz/UbmI/ympbf9lwZb/9/z6//T6 | |||||
+P+Jz6//Nq52/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Xr6R//////+P0rL/Kalt///////d8ej/QLJ8/ymp | |||||
bf9TuYn/2O/k//////////////////////////////////////////////////////////////////// | |||||
/////////////////////////////////////////////////////////////4/Ssv8pqW3///////// | |||||
///d8ej/Q7N//ympbf8qqW7/acKY/6rcxf/O693/2/Dm/9zx5//c8ef/3PHn/9zx5//c8ef/3PHn/9zx | |||||
5//c8ef/3PHn/9zx5//c8ef/3PHn/9zx5//c8ef/3PHn/9zx5//c8ef/3PHn/9zx5//c8Of/bMSa/ymp | |||||
bf/////////////////4/Pr/jdGx/zmveP8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ympbf8pqW3/Kalt/ymp | |||||
bf8pqW3/Kalt////////////////////////////+Pz6/7zk0f+Q0rP/ecmj/3nJo/95yaP/ecmj/3nJ | |||||
o/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJo/95yaP/ecmj/3nJ | |||||
o/95yaP/ecmj/3nJo/95yaP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= | |||||
</value> | |||||
</data> | |||||
</root> |
@@ -0,0 +1,785 @@ | |||||
namespace CNAS_DBSync | |||||
{ | |||||
partial class frmSyncParams | |||||
{ | |||||
/// <summary> | |||||
/// 必需的设计器变量。 | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// 清理所有正在使用的资源。 | |||||
/// </summary> | |||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region Windows 窗体设计器生成的代码 | |||||
/// <summary> | |||||
/// 设计器支持所需的方法 - 不要修改 | |||||
/// 使用代码编辑器修改此方法的内容。 | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
this.components = new System.ComponentModel.Container(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSyncParams)); | |||||
this.pnlAll = new System.Windows.Forms.Panel(); | |||||
this.panel3 = new System.Windows.Forms.Panel(); | |||||
this.pnlRigh = new System.Windows.Forms.Panel(); | |||||
this.panel5 = new System.Windows.Forms.Panel(); | |||||
this.groupBox2 = new System.Windows.Forms.GroupBox(); | |||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); | |||||
this.tabMapping = new System.Windows.Forms.TabControl(); | |||||
this.tabPage5 = new System.Windows.Forms.TabPage(); | |||||
this.dgvMapping = new System.Windows.Forms.DataGridView(); | |||||
this.InstrumentField = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.CnasField = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.cmsMapping = new System.Windows.Forms.ContextMenuStrip(this.components); | |||||
this.btnDelMap = new System.Windows.Forms.ToolStripMenuItem(); | |||||
this.tabControl1 = new System.Windows.Forms.TabControl(); | |||||
this.tabPage6 = new System.Windows.Forms.TabPage(); | |||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer(); | |||||
this.dgvInstruDS = new System.Windows.Forms.DataGridView(); | |||||
this.InstruFieldName = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.InstruDataType = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.pnlleft = new System.Windows.Forms.Panel(); | |||||
this.cbxInstrument = new System.Windows.Forms.ComboBox(); | |||||
this.label12 = new System.Windows.Forms.Label(); | |||||
this.dgvCnas = new System.Windows.Forms.DataGridView(); | |||||
this.CNASFieldName = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.CnasDataType = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.pnlRight = new System.Windows.Forms.Panel(); | |||||
this.cbxCnas = new System.Windows.Forms.ComboBox(); | |||||
this.label13 = new System.Windows.Forms.Label(); | |||||
this.panel1 = new System.Windows.Forms.Panel(); | |||||
this.panel7 = new System.Windows.Forms.Panel(); | |||||
this.btnLoadDBData = new System.Windows.Forms.Button(); | |||||
this.btnAddMapping = new System.Windows.Forms.Button(); | |||||
this.btnDatabaseConfig = new System.Windows.Forms.Button(); | |||||
this.panel2 = new System.Windows.Forms.Panel(); | |||||
this.groupBox1 = new System.Windows.Forms.GroupBox(); | |||||
this.panel10 = new System.Windows.Forms.Panel(); | |||||
this.dgvInstrument = new System.Windows.Forms.DataGridView(); | |||||
this.Code = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
this.panel9 = new System.Windows.Forms.Panel(); | |||||
this.btnAdd = new System.Windows.Forms.Button(); | |||||
this.btnDel = new System.Windows.Forms.Button(); | |||||
this.panel8 = new System.Windows.Forms.Panel(); | |||||
this.label1 = new System.Windows.Forms.Label(); | |||||
this.btnSave = new System.Windows.Forms.Button(); | |||||
this.panel11 = new System.Windows.Forms.Panel(); | |||||
this.panel12 = new System.Windows.Forms.Panel(); | |||||
this.panel4 = new System.Windows.Forms.Panel(); | |||||
this.panel13 = new System.Windows.Forms.Panel(); | |||||
this.panel6 = new System.Windows.Forms.Panel(); | |||||
this.pnlAll.SuspendLayout(); | |||||
this.panel3.SuspendLayout(); | |||||
this.pnlRigh.SuspendLayout(); | |||||
this.panel5.SuspendLayout(); | |||||
this.groupBox2.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); | |||||
this.splitContainer1.Panel1.SuspendLayout(); | |||||
this.splitContainer1.Panel2.SuspendLayout(); | |||||
this.splitContainer1.SuspendLayout(); | |||||
this.tabMapping.SuspendLayout(); | |||||
this.tabPage5.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvMapping)).BeginInit(); | |||||
this.cmsMapping.SuspendLayout(); | |||||
this.tabControl1.SuspendLayout(); | |||||
this.tabPage6.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); | |||||
this.splitContainer2.Panel1.SuspendLayout(); | |||||
this.splitContainer2.Panel2.SuspendLayout(); | |||||
this.splitContainer2.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvInstruDS)).BeginInit(); | |||||
this.pnlleft.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).BeginInit(); | |||||
this.pnlRight.SuspendLayout(); | |||||
this.panel1.SuspendLayout(); | |||||
this.panel7.SuspendLayout(); | |||||
this.groupBox1.SuspendLayout(); | |||||
this.panel10.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvInstrument)).BeginInit(); | |||||
this.panel9.SuspendLayout(); | |||||
this.panel8.SuspendLayout(); | |||||
this.panel11.SuspendLayout(); | |||||
this.panel12.SuspendLayout(); | |||||
this.panel4.SuspendLayout(); | |||||
this.panel13.SuspendLayout(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// pnlAll | |||||
// | |||||
this.pnlAll.Controls.Add(this.panel3); | |||||
this.pnlAll.Controls.Add(this.panel2); | |||||
this.pnlAll.Controls.Add(this.groupBox1); | |||||
this.pnlAll.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlAll.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlAll.Name = "pnlAll"; | |||||
this.pnlAll.Size = new System.Drawing.Size(796, 463); | |||||
this.pnlAll.TabIndex = 0; | |||||
// | |||||
// panel3 | |||||
// | |||||
this.panel3.Controls.Add(this.pnlRigh); | |||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.panel3.Location = new System.Drawing.Point(156, 0); | |||||
this.panel3.Name = "panel3"; | |||||
this.panel3.Size = new System.Drawing.Size(640, 463); | |||||
this.panel3.TabIndex = 5; | |||||
// | |||||
// pnlRigh | |||||
// | |||||
this.pnlRigh.Controls.Add(this.panel5); | |||||
this.pnlRigh.Controls.Add(this.panel1); | |||||
this.pnlRigh.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlRigh.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlRigh.Name = "pnlRigh"; | |||||
this.pnlRigh.Size = new System.Drawing.Size(640, 463); | |||||
this.pnlRigh.TabIndex = 5; | |||||
// | |||||
// panel5 | |||||
// | |||||
this.panel5.Controls.Add(this.groupBox2); | |||||
this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.panel5.Location = new System.Drawing.Point(0, 0); | |||||
this.panel5.Name = "panel5"; | |||||
this.panel5.Size = new System.Drawing.Size(640, 422); | |||||
this.panel5.TabIndex = 4; | |||||
// | |||||
// groupBox2 | |||||
// | |||||
this.groupBox2.Controls.Add(this.splitContainer1); | |||||
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.groupBox2.Location = new System.Drawing.Point(0, 0); | |||||
this.groupBox2.Name = "groupBox2"; | |||||
this.groupBox2.Size = new System.Drawing.Size(640, 422); | |||||
this.groupBox2.TabIndex = 1; | |||||
this.groupBox2.TabStop = false; | |||||
this.groupBox2.Text = "详情"; | |||||
// | |||||
// splitContainer1 | |||||
// | |||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.splitContainer1.Location = new System.Drawing.Point(3, 19); | |||||
this.splitContainer1.Name = "splitContainer1"; | |||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; | |||||
// | |||||
// splitContainer1.Panel1 | |||||
// | |||||
this.splitContainer1.Panel1.Controls.Add(this.tabMapping); | |||||
// | |||||
// splitContainer1.Panel2 | |||||
// | |||||
this.splitContainer1.Panel2.Controls.Add(this.tabControl1); | |||||
this.splitContainer1.Size = new System.Drawing.Size(634, 400); | |||||
this.splitContainer1.SplitterDistance = 199; | |||||
this.splitContainer1.TabIndex = 2; | |||||
// | |||||
// tabMapping | |||||
// | |||||
this.tabMapping.Controls.Add(this.tabPage5); | |||||
this.tabMapping.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.tabMapping.Location = new System.Drawing.Point(0, 0); | |||||
this.tabMapping.Name = "tabMapping"; | |||||
this.tabMapping.SelectedIndex = 0; | |||||
this.tabMapping.Size = new System.Drawing.Size(634, 199); | |||||
this.tabMapping.TabIndex = 0; | |||||
// | |||||
// tabPage5 | |||||
// | |||||
this.tabPage5.Controls.Add(this.dgvMapping); | |||||
this.tabPage5.Location = new System.Drawing.Point(4, 26); | |||||
this.tabPage5.Name = "tabPage5"; | |||||
this.tabPage5.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabPage5.Size = new System.Drawing.Size(626, 169); | |||||
this.tabPage5.TabIndex = 1; | |||||
this.tabPage5.Text = "映射表"; | |||||
this.tabPage5.UseVisualStyleBackColor = true; | |||||
// | |||||
// dgvMapping | |||||
// | |||||
this.dgvMapping.AllowUserToAddRows = false; | |||||
this.dgvMapping.BackgroundColor = System.Drawing.Color.White; | |||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; | |||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
this.dgvMapping.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; | |||||
this.dgvMapping.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
this.dgvMapping.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { | |||||
this.InstrumentField, | |||||
this.CnasField}); | |||||
this.dgvMapping.ContextMenuStrip = this.cmsMapping; | |||||
this.dgvMapping.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.dgvMapping.Location = new System.Drawing.Point(3, 3); | |||||
this.dgvMapping.MultiSelect = false; | |||||
this.dgvMapping.Name = "dgvMapping"; | |||||
this.dgvMapping.ReadOnly = true; | |||||
this.dgvMapping.RowHeadersVisible = false; | |||||
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
this.dgvMapping.RowsDefaultCellStyle = dataGridViewCellStyle2; | |||||
this.dgvMapping.RowTemplate.Height = 23; | |||||
this.dgvMapping.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; | |||||
this.dgvMapping.Size = new System.Drawing.Size(620, 163); | |||||
this.dgvMapping.TabIndex = 0; | |||||
// | |||||
// InstrumentField | |||||
// | |||||
this.InstrumentField.DataPropertyName = "SourceField"; | |||||
this.InstrumentField.HeaderText = "仪器数据列"; | |||||
this.InstrumentField.Name = "InstrumentField"; | |||||
this.InstrumentField.ReadOnly = true; | |||||
this.InstrumentField.Width = 305; | |||||
// | |||||
// CnasField | |||||
// | |||||
this.CnasField.DataPropertyName = "TargetField"; | |||||
this.CnasField.HeaderText = "CNAS数据列"; | |||||
this.CnasField.Name = "CnasField"; | |||||
this.CnasField.ReadOnly = true; | |||||
this.CnasField.Width = 305; | |||||
// | |||||
// cmsMapping | |||||
// | |||||
this.cmsMapping.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||||
this.btnDelMap}); | |||||
this.cmsMapping.Name = "cmsMapping"; | |||||
this.cmsMapping.Size = new System.Drawing.Size(101, 26); | |||||
// | |||||
// btnDelMap | |||||
// | |||||
this.btnDelMap.Name = "btnDelMap"; | |||||
this.btnDelMap.Size = new System.Drawing.Size(100, 22); | |||||
this.btnDelMap.Text = "移除"; | |||||
this.btnDelMap.Click += new System.EventHandler(this.btnDelMap_Click); | |||||
// | |||||
// tabControl1 | |||||
// | |||||
this.tabControl1.Controls.Add(this.tabPage6); | |||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.tabControl1.Location = new System.Drawing.Point(0, 0); | |||||
this.tabControl1.Name = "tabControl1"; | |||||
this.tabControl1.SelectedIndex = 0; | |||||
this.tabControl1.Size = new System.Drawing.Size(634, 197); | |||||
this.tabControl1.TabIndex = 1; | |||||
// | |||||
// tabPage6 | |||||
// | |||||
this.tabPage6.Controls.Add(this.splitContainer2); | |||||
this.tabPage6.Location = new System.Drawing.Point(4, 26); | |||||
this.tabPage6.Name = "tabPage6"; | |||||
this.tabPage6.Padding = new System.Windows.Forms.Padding(3); | |||||
this.tabPage6.Size = new System.Drawing.Size(626, 167); | |||||
this.tabPage6.TabIndex = 1; | |||||
this.tabPage6.Text = "字段"; | |||||
this.tabPage6.UseVisualStyleBackColor = true; | |||||
// | |||||
// splitContainer2 | |||||
// | |||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.splitContainer2.Location = new System.Drawing.Point(3, 3); | |||||
this.splitContainer2.Name = "splitContainer2"; | |||||
// | |||||
// splitContainer2.Panel1 | |||||
// | |||||
this.splitContainer2.Panel1.Controls.Add(this.dgvInstruDS); | |||||
this.splitContainer2.Panel1.Controls.Add(this.pnlleft); | |||||
// | |||||
// splitContainer2.Panel2 | |||||
// | |||||
this.splitContainer2.Panel2.Controls.Add(this.dgvCnas); | |||||
this.splitContainer2.Panel2.Controls.Add(this.pnlRight); | |||||
this.splitContainer2.Size = new System.Drawing.Size(620, 161); | |||||
this.splitContainer2.SplitterDistance = 307; | |||||
this.splitContainer2.TabIndex = 1; | |||||
// | |||||
// dgvInstruDS | |||||
// | |||||
this.dgvInstruDS.AllowUserToAddRows = false; | |||||
this.dgvInstruDS.BackgroundColor = System.Drawing.Color.White; | |||||
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control; | |||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
this.dgvInstruDS.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; | |||||
this.dgvInstruDS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
this.dgvInstruDS.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { | |||||
this.InstruFieldName, | |||||
this.InstruDataType}); | |||||
this.dgvInstruDS.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.dgvInstruDS.Location = new System.Drawing.Point(0, 34); | |||||
this.dgvInstruDS.Name = "dgvInstruDS"; | |||||
this.dgvInstruDS.ReadOnly = true; | |||||
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
this.dgvInstruDS.RowsDefaultCellStyle = dataGridViewCellStyle4; | |||||
this.dgvInstruDS.RowTemplate.Height = 23; | |||||
this.dgvInstruDS.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; | |||||
this.dgvInstruDS.Size = new System.Drawing.Size(307, 127); | |||||
this.dgvInstruDS.TabIndex = 1; | |||||
// | |||||
// InstruFieldName | |||||
// | |||||
this.InstruFieldName.DataPropertyName = "InstruFieldName"; | |||||
this.InstruFieldName.HeaderText = "列名"; | |||||
this.InstruFieldName.Name = "InstruFieldName"; | |||||
this.InstruFieldName.ReadOnly = true; | |||||
this.InstruFieldName.Width = 150; | |||||
// | |||||
// InstruDataType | |||||
// | |||||
this.InstruDataType.DataPropertyName = "InstruDataType"; | |||||
this.InstruDataType.HeaderText = "数据类型"; | |||||
this.InstruDataType.Name = "InstruDataType"; | |||||
this.InstruDataType.ReadOnly = true; | |||||
// | |||||
// pnlleft | |||||
// | |||||
this.pnlleft.Controls.Add(this.cbxInstrument); | |||||
this.pnlleft.Controls.Add(this.label12); | |||||
this.pnlleft.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.pnlleft.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlleft.Name = "pnlleft"; | |||||
this.pnlleft.Size = new System.Drawing.Size(307, 34); | |||||
this.pnlleft.TabIndex = 0; | |||||
// | |||||
// cbxInstrument | |||||
// | |||||
this.cbxInstrument.FormattingEnabled = true; | |||||
this.cbxInstrument.Location = new System.Drawing.Point(104, 6); | |||||
this.cbxInstrument.Name = "cbxInstrument"; | |||||
this.cbxInstrument.Size = new System.Drawing.Size(144, 25); | |||||
this.cbxInstrument.TabIndex = 1; | |||||
this.cbxInstrument.SelectedIndexChanged += new System.EventHandler(this.cbxInstrument_SelectedIndexChanged); | |||||
// | |||||
// label12 | |||||
// | |||||
this.label12.AutoSize = true; | |||||
this.label12.Location = new System.Drawing.Point(3, 10); | |||||
this.label12.Name = "label12"; | |||||
this.label12.Size = new System.Drawing.Size(104, 17); | |||||
this.label12.TabIndex = 0; | |||||
this.label12.Text = "仪器数据源表名:"; | |||||
// | |||||
// dgvCnas | |||||
// | |||||
this.dgvCnas.AllowUserToAddRows = false; | |||||
this.dgvCnas.BackgroundColor = System.Drawing.Color.White; | |||||
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control; | |||||
dataGridViewCellStyle5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
this.dgvCnas.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5; | |||||
this.dgvCnas.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
this.dgvCnas.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { | |||||
this.CNASFieldName, | |||||
this.CnasDataType}); | |||||
this.dgvCnas.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.dgvCnas.Location = new System.Drawing.Point(0, 34); | |||||
this.dgvCnas.Name = "dgvCnas"; | |||||
this.dgvCnas.ReadOnly = true; | |||||
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
this.dgvCnas.RowsDefaultCellStyle = dataGridViewCellStyle6; | |||||
this.dgvCnas.RowTemplate.Height = 23; | |||||
this.dgvCnas.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; | |||||
this.dgvCnas.Size = new System.Drawing.Size(309, 127); | |||||
this.dgvCnas.TabIndex = 2; | |||||
// | |||||
// CNASFieldName | |||||
// | |||||
this.CNASFieldName.DataPropertyName = "CnasFieldName"; | |||||
this.CNASFieldName.HeaderText = "列名"; | |||||
this.CNASFieldName.Name = "CNASFieldName"; | |||||
this.CNASFieldName.ReadOnly = true; | |||||
this.CNASFieldName.Width = 150; | |||||
// | |||||
// CnasDataType | |||||
// | |||||
this.CnasDataType.DataPropertyName = "CnasDataType"; | |||||
this.CnasDataType.HeaderText = "数据类型"; | |||||
this.CnasDataType.Name = "CnasDataType"; | |||||
this.CnasDataType.ReadOnly = true; | |||||
// | |||||
// pnlRight | |||||
// | |||||
this.pnlRight.Controls.Add(this.cbxCnas); | |||||
this.pnlRight.Controls.Add(this.label13); | |||||
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.pnlRight.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlRight.Name = "pnlRight"; | |||||
this.pnlRight.Size = new System.Drawing.Size(309, 34); | |||||
this.pnlRight.TabIndex = 0; | |||||
// | |||||
// cbxCnas | |||||
// | |||||
this.cbxCnas.FormattingEnabled = true; | |||||
this.cbxCnas.Location = new System.Drawing.Point(122, 6); | |||||
this.cbxCnas.Name = "cbxCnas"; | |||||
this.cbxCnas.Size = new System.Drawing.Size(149, 25); | |||||
this.cbxCnas.TabIndex = 2; | |||||
this.cbxCnas.SelectedIndexChanged += new System.EventHandler(this.cbxCnas_SelectedIndexChanged); | |||||
// | |||||
// label13 | |||||
// | |||||
this.label13.AutoSize = true; | |||||
this.label13.Location = new System.Drawing.Point(3, 10); | |||||
this.label13.Name = "label13"; | |||||
this.label13.Size = new System.Drawing.Size(113, 17); | |||||
this.label13.TabIndex = 1; | |||||
this.label13.Text = "CNAS数据库表名:"; | |||||
// | |||||
// panel1 | |||||
// | |||||
this.panel1.Controls.Add(this.panel7); | |||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.panel1.Location = new System.Drawing.Point(0, 422); | |||||
this.panel1.Name = "panel1"; | |||||
this.panel1.Size = new System.Drawing.Size(640, 41); | |||||
this.panel1.TabIndex = 3; | |||||
// | |||||
// panel7 | |||||
// | |||||
this.panel7.Controls.Add(this.btnLoadDBData); | |||||
this.panel7.Controls.Add(this.btnAddMapping); | |||||
this.panel7.Controls.Add(this.btnDatabaseConfig); | |||||
this.panel7.Dock = System.Windows.Forms.DockStyle.Right; | |||||
this.panel7.Location = new System.Drawing.Point(272, 0); | |||||
this.panel7.Name = "panel7"; | |||||
this.panel7.Size = new System.Drawing.Size(368, 41); | |||||
this.panel7.TabIndex = 5; | |||||
// | |||||
// btnLoadDBData | |||||
// | |||||
this.btnLoadDBData.Location = new System.Drawing.Point(169, 3); | |||||
this.btnLoadDBData.Name = "btnLoadDBData"; | |||||
this.btnLoadDBData.Size = new System.Drawing.Size(79, 23); | |||||
this.btnLoadDBData.TabIndex = 4; | |||||
this.btnLoadDBData.Text = "加载数据"; | |||||
this.btnLoadDBData.UseVisualStyleBackColor = true; | |||||
this.btnLoadDBData.Click += new System.EventHandler(this.btnLoadDBData_Click); | |||||
// | |||||
// btnAddMapping | |||||
// | |||||
this.btnAddMapping.Location = new System.Drawing.Point(84, 3); | |||||
this.btnAddMapping.Name = "btnAddMapping"; | |||||
this.btnAddMapping.Size = new System.Drawing.Size(79, 23); | |||||
this.btnAddMapping.TabIndex = 2; | |||||
this.btnAddMapping.Text = "新增映射"; | |||||
this.btnAddMapping.UseVisualStyleBackColor = true; | |||||
this.btnAddMapping.Click += new System.EventHandler(this.btnAddMapping_Click); | |||||
// | |||||
// btnDatabaseConfig | |||||
// | |||||
this.btnDatabaseConfig.Location = new System.Drawing.Point(254, 3); | |||||
this.btnDatabaseConfig.Name = "btnDatabaseConfig"; | |||||
this.btnDatabaseConfig.Size = new System.Drawing.Size(79, 23); | |||||
this.btnDatabaseConfig.TabIndex = 3; | |||||
this.btnDatabaseConfig.Text = "配置数据库"; | |||||
this.btnDatabaseConfig.UseVisualStyleBackColor = true; | |||||
this.btnDatabaseConfig.Click += new System.EventHandler(this.btnDatabaseConfig_Click); | |||||
// | |||||
// panel2 | |||||
// | |||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Left; | |||||
this.panel2.Location = new System.Drawing.Point(146, 0); | |||||
this.panel2.Name = "panel2"; | |||||
this.panel2.Size = new System.Drawing.Size(10, 463); | |||||
this.panel2.TabIndex = 4; | |||||
// | |||||
// groupBox1 | |||||
// | |||||
this.groupBox1.Controls.Add(this.panel10); | |||||
this.groupBox1.Controls.Add(this.panel9); | |||||
this.groupBox1.Controls.Add(this.panel8); | |||||
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Left; | |||||
this.groupBox1.Location = new System.Drawing.Point(0, 0); | |||||
this.groupBox1.Name = "groupBox1"; | |||||
this.groupBox1.Size = new System.Drawing.Size(146, 463); | |||||
this.groupBox1.TabIndex = 0; | |||||
this.groupBox1.TabStop = false; | |||||
this.groupBox1.Text = "仪器"; | |||||
// | |||||
// panel10 | |||||
// | |||||
this.panel10.Controls.Add(this.dgvInstrument); | |||||
this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.panel10.Location = new System.Drawing.Point(3, 45); | |||||
this.panel10.Name = "panel10"; | |||||
this.panel10.Size = new System.Drawing.Size(140, 369); | |||||
this.panel10.TabIndex = 6; | |||||
// | |||||
// dgvInstrument | |||||
// | |||||
this.dgvInstrument.AllowUserToAddRows = false; | |||||
this.dgvInstrument.BackgroundColor = System.Drawing.Color.White; | |||||
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control; | |||||
dataGridViewCellStyle7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
this.dgvInstrument.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle7; | |||||
this.dgvInstrument.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
this.dgvInstrument.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { | |||||
this.Code}); | |||||
this.dgvInstrument.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.dgvInstrument.Location = new System.Drawing.Point(0, 0); | |||||
this.dgvInstrument.MultiSelect = false; | |||||
this.dgvInstrument.Name = "dgvInstrument"; | |||||
this.dgvInstrument.ReadOnly = true; | |||||
this.dgvInstrument.RowHeadersVisible = false; | |||||
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
this.dgvInstrument.RowsDefaultCellStyle = dataGridViewCellStyle8; | |||||
this.dgvInstrument.RowTemplate.Height = 23; | |||||
this.dgvInstrument.Size = new System.Drawing.Size(140, 369); | |||||
this.dgvInstrument.TabIndex = 0; | |||||
this.dgvInstrument.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvInstrument_CellDoubleClick); | |||||
this.dgvInstrument.SelectionChanged += new System.EventHandler(this.dgvInstrument_SelectionChanged); | |||||
// | |||||
// Code | |||||
// | |||||
this.Code.DataPropertyName = "Code"; | |||||
this.Code.HeaderText = "仪器编号"; | |||||
this.Code.Name = "Code"; | |||||
this.Code.ReadOnly = true; | |||||
this.Code.Width = 135; | |||||
// | |||||
// panel9 | |||||
// | |||||
this.panel9.Controls.Add(this.btnAdd); | |||||
this.panel9.Controls.Add(this.btnDel); | |||||
this.panel9.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.panel9.Location = new System.Drawing.Point(3, 414); | |||||
this.panel9.Name = "panel9"; | |||||
this.panel9.Size = new System.Drawing.Size(140, 46); | |||||
this.panel9.TabIndex = 5; | |||||
// | |||||
// btnAdd | |||||
// | |||||
this.btnAdd.Location = new System.Drawing.Point(3, 11); | |||||
this.btnAdd.Name = "btnAdd"; | |||||
this.btnAdd.Size = new System.Drawing.Size(58, 23); | |||||
this.btnAdd.TabIndex = 1; | |||||
this.btnAdd.Text = "新增"; | |||||
this.btnAdd.UseVisualStyleBackColor = true; | |||||
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); | |||||
// | |||||
// btnDel | |||||
// | |||||
this.btnDel.Location = new System.Drawing.Point(68, 11); | |||||
this.btnDel.Name = "btnDel"; | |||||
this.btnDel.Size = new System.Drawing.Size(58, 23); | |||||
this.btnDel.TabIndex = 2; | |||||
this.btnDel.Text = "删除"; | |||||
this.btnDel.UseVisualStyleBackColor = true; | |||||
this.btnDel.Click += new System.EventHandler(this.btnDel_Click); | |||||
// | |||||
// panel8 | |||||
// | |||||
this.panel8.Controls.Add(this.label1); | |||||
this.panel8.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.panel8.Location = new System.Drawing.Point(3, 19); | |||||
this.panel8.Name = "panel8"; | |||||
this.panel8.Size = new System.Drawing.Size(140, 26); | |||||
this.panel8.TabIndex = 4; | |||||
// | |||||
// label1 | |||||
// | |||||
this.label1.AutoSize = true; | |||||
this.label1.Location = new System.Drawing.Point(4, 5); | |||||
this.label1.Name = "label1"; | |||||
this.label1.Size = new System.Drawing.Size(68, 17); | |||||
this.label1.TabIndex = 3; | |||||
this.label1.Text = "当前选中:"; | |||||
// | |||||
// btnSave | |||||
// | |||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.btnSave.Location = new System.Drawing.Point(18, 4); | |||||
this.btnSave.Name = "btnSave"; | |||||
this.btnSave.Size = new System.Drawing.Size(82, 35); | |||||
this.btnSave.TabIndex = 3; | |||||
this.btnSave.Text = "保存"; | |||||
this.btnSave.UseVisualStyleBackColor = true; | |||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click); | |||||
// | |||||
// panel11 | |||||
// | |||||
this.panel11.Controls.Add(this.panel12); | |||||
this.panel11.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.panel11.Location = new System.Drawing.Point(0, 465); | |||||
this.panel11.Name = "panel11"; | |||||
this.panel11.Size = new System.Drawing.Size(796, 43); | |||||
this.panel11.TabIndex = 1; | |||||
// | |||||
// panel12 | |||||
// | |||||
this.panel12.Controls.Add(this.btnSave); | |||||
this.panel12.Dock = System.Windows.Forms.DockStyle.Right; | |||||
this.panel12.Location = new System.Drawing.Point(682, 0); | |||||
this.panel12.Name = "panel12"; | |||||
this.panel12.Size = new System.Drawing.Size(114, 43); | |||||
this.panel12.TabIndex = 0; | |||||
// | |||||
// panel4 | |||||
// | |||||
this.panel4.Controls.Add(this.panel13); | |||||
this.panel4.Controls.Add(this.panel6); | |||||
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.panel4.Location = new System.Drawing.Point(0, 0); | |||||
this.panel4.Name = "panel4"; | |||||
this.panel4.Size = new System.Drawing.Size(796, 465); | |||||
this.panel4.TabIndex = 2; | |||||
// | |||||
// panel13 | |||||
// | |||||
this.panel13.Controls.Add(this.pnlAll); | |||||
this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.panel13.Location = new System.Drawing.Point(0, 0); | |||||
this.panel13.Name = "panel13"; | |||||
this.panel13.Size = new System.Drawing.Size(796, 463); | |||||
this.panel13.TabIndex = 2; | |||||
// | |||||
// panel6 | |||||
// | |||||
this.panel6.BackColor = System.Drawing.SystemColors.ControlDark; | |||||
this.panel6.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.panel6.Location = new System.Drawing.Point(0, 463); | |||||
this.panel6.Name = "panel6"; | |||||
this.panel6.Size = new System.Drawing.Size(796, 2); | |||||
this.panel6.TabIndex = 1; | |||||
// | |||||
// frmSyncParams | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(796, 508); | |||||
this.Controls.Add(this.panel4); | |||||
this.Controls.Add(this.panel11); | |||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); | |||||
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.Name = "frmSyncParams"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
this.Text = "仪器数据上传工具"; | |||||
this.Load += new System.EventHandler(this.frmSyncParams_Load); | |||||
this.pnlAll.ResumeLayout(false); | |||||
this.panel3.ResumeLayout(false); | |||||
this.pnlRigh.ResumeLayout(false); | |||||
this.panel5.ResumeLayout(false); | |||||
this.groupBox2.ResumeLayout(false); | |||||
this.splitContainer1.Panel1.ResumeLayout(false); | |||||
this.splitContainer1.Panel2.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); | |||||
this.splitContainer1.ResumeLayout(false); | |||||
this.tabMapping.ResumeLayout(false); | |||||
this.tabPage5.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvMapping)).EndInit(); | |||||
this.cmsMapping.ResumeLayout(false); | |||||
this.tabControl1.ResumeLayout(false); | |||||
this.tabPage6.ResumeLayout(false); | |||||
this.splitContainer2.Panel1.ResumeLayout(false); | |||||
this.splitContainer2.Panel2.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); | |||||
this.splitContainer2.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvInstruDS)).EndInit(); | |||||
this.pnlleft.ResumeLayout(false); | |||||
this.pnlleft.PerformLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).EndInit(); | |||||
this.pnlRight.ResumeLayout(false); | |||||
this.pnlRight.PerformLayout(); | |||||
this.panel1.ResumeLayout(false); | |||||
this.panel7.ResumeLayout(false); | |||||
this.groupBox1.ResumeLayout(false); | |||||
this.panel10.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvInstrument)).EndInit(); | |||||
this.panel9.ResumeLayout(false); | |||||
this.panel8.ResumeLayout(false); | |||||
this.panel8.PerformLayout(); | |||||
this.panel11.ResumeLayout(false); | |||||
this.panel12.ResumeLayout(false); | |||||
this.panel4.ResumeLayout(false); | |||||
this.panel13.ResumeLayout(false); | |||||
this.ResumeLayout(false); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.Panel pnlAll; | |||||
private System.Windows.Forms.GroupBox groupBox2; | |||||
private System.Windows.Forms.GroupBox groupBox1; | |||||
private System.Windows.Forms.Button btnSave; | |||||
private System.Windows.Forms.Button btnDel; | |||||
private System.Windows.Forms.Button btnAdd; | |||||
private System.Windows.Forms.Label label1; | |||||
private System.Windows.Forms.SplitContainer splitContainer2; | |||||
private System.Windows.Forms.DataGridView dgvInstruDS; | |||||
private System.Windows.Forms.Panel pnlleft; | |||||
private System.Windows.Forms.ComboBox cbxInstrument; | |||||
private System.Windows.Forms.Label label12; | |||||
private System.Windows.Forms.DataGridView dgvCnas; | |||||
private System.Windows.Forms.Panel pnlRight; | |||||
private System.Windows.Forms.ComboBox cbxCnas; | |||||
private System.Windows.Forms.Label label13; | |||||
private System.Windows.Forms.Button btnAddMapping; | |||||
private System.Windows.Forms.TabControl tabMapping; | |||||
private System.Windows.Forms.TabPage tabPage5; | |||||
private System.Windows.Forms.DataGridView dgvInstrument; | |||||
private System.Windows.Forms.DataGridView dgvMapping; | |||||
private System.Windows.Forms.ContextMenuStrip cmsMapping; | |||||
private System.Windows.Forms.ToolStripMenuItem btnDelMap; | |||||
private System.Windows.Forms.Panel panel3; | |||||
private System.Windows.Forms.TabControl tabControl1; | |||||
private System.Windows.Forms.TabPage tabPage6; | |||||
private System.Windows.Forms.Panel panel1; | |||||
private System.Windows.Forms.Button btnDatabaseConfig; | |||||
private System.Windows.Forms.Panel panel2; | |||||
private System.Windows.Forms.Panel pnlRigh; | |||||
private System.Windows.Forms.SplitContainer splitContainer1; | |||||
private System.Windows.Forms.Panel panel5; | |||||
private System.Windows.Forms.Button btnLoadDBData; | |||||
private System.Windows.Forms.Panel panel7; | |||||
private System.Windows.Forms.Panel panel10; | |||||
private System.Windows.Forms.Panel panel9; | |||||
private System.Windows.Forms.Panel panel8; | |||||
private System.Windows.Forms.Panel panel11; | |||||
private System.Windows.Forms.Panel panel12; | |||||
private System.Windows.Forms.Panel panel4; | |||||
private System.Windows.Forms.Panel panel13; | |||||
private System.Windows.Forms.Panel panel6; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn Code; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn InstrumentField; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn CnasField; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn InstruFieldName; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn InstruDataType; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn CNASFieldName; | |||||
private System.Windows.Forms.DataGridViewTextBoxColumn CnasDataType; | |||||
} | |||||
} | |||||
@@ -0,0 +1,532 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.ComponentModel; | |||||
using System.Data; | |||||
using System.Drawing; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
using System.Xml.Linq; | |||||
using System.Xml.Serialization; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public delegate void ReferenceChangeSyncParamHanlder(SyncInstrumentItemInfo syncInstrumentItem); | |||||
public partial class frmSyncParams : Form | |||||
{ | |||||
public List<SyncInstrumentItemInfo> lstSyncInstrument = new List<SyncInstrumentItemInfo>(); | |||||
public SyncInstrumentItemInfo currentSyncItem = new SyncInstrumentItemInfo(); | |||||
public Dictionary<string, DataTable> dictInstruTables = new Dictionary<string, DataTable>(); | |||||
private log4net.ILog log = log4net.LogManager.GetLogger("frmSyncParams"); | |||||
private SyncInstrumentItemInfo syncInstrumentItem; | |||||
private string strMode = ""; | |||||
public ReferenceChangeSyncParamHanlder ParamsChangedDelegate; | |||||
//public frmSyncParams() | |||||
//{ | |||||
// InitializeComponent(); | |||||
// dgvInstrument.AutoGenerateColumns = false; | |||||
// dgvInstrument.RowHeadersVisible = false; | |||||
// dgvInstruDS.AutoGenerateColumns = false; | |||||
// dgvInstruDS.RowHeadersVisible = false; | |||||
// dgvCnas.AutoGenerateColumns = false; | |||||
// dgvCnas.RowHeadersVisible = false; | |||||
// dgvMapping.AutoGenerateColumns = false; | |||||
// dgvMapping.RowHeadersVisible = false; | |||||
//} | |||||
public frmSyncParams(SyncInstrumentItemInfo syncInstrumentItem=null) | |||||
{ | |||||
InitializeComponent(); | |||||
dgvInstrument.AutoGenerateColumns = false; | |||||
dgvInstrument.RowHeadersVisible = false; | |||||
dgvInstruDS.AutoGenerateColumns = false; | |||||
dgvInstruDS.RowHeadersVisible = false; | |||||
dgvCnas.AutoGenerateColumns = false; | |||||
dgvCnas.RowHeadersVisible = false; | |||||
dgvMapping.AutoGenerateColumns = false; | |||||
dgvMapping.RowHeadersVisible = false; | |||||
if (syncInstrumentItem != null) | |||||
{ | |||||
strMode = "Reference"; | |||||
this.syncInstrumentItem = syncInstrumentItem; | |||||
this.btnAdd.Visible = false; | |||||
this.btnDel.Visible = false; | |||||
} | |||||
} | |||||
private void frmSyncParams_Load(object sender, EventArgs e) | |||||
{ | |||||
if (syncInstrumentItem == null) | |||||
{//读取本地文件中存储的配置信息 | |||||
XmlSerializer serializer = new XmlSerializer(lstSyncInstrument.GetType()); | |||||
FileStream stream = new FileStream(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml", FileMode.Open); | |||||
lstSyncInstrument = (List<SyncInstrumentItemInfo>)serializer.Deserialize(stream); | |||||
stream.Close(); | |||||
} | |||||
else | |||||
{ | |||||
lstSyncInstrument = new List<SyncInstrumentItemInfo>() { syncInstrumentItem }; | |||||
} | |||||
//绑定数据源,填写相关内容 | |||||
if(lstSyncInstrument.Count!=0) | |||||
dgvInstrument.DataSource = new BindingList<SyncInstrumentItemInfo>(lstSyncInstrument); | |||||
} | |||||
/// <summary> | |||||
/// 保存当前设置到本地 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnSave_Click(object sender, EventArgs e) | |||||
{ | |||||
//将配置好的信息存储到本地文件中 | |||||
try | |||||
{ | |||||
if (strMode == "Reference") | |||||
{ | |||||
////使用Linq To XML 直接修改存储,不能直接全部保存,会覆盖其他操作 | |||||
//XDocument doc = XDocument.Load(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml"); | |||||
//var query = from p in doc.Elements("SyncInstrumentItemInfo") | |||||
// where p.Element("GUID").Value == syncInstrumentItem.GUID | |||||
// select p; | |||||
//XElement item = query.SingleOrDefault(); | |||||
//if (item != null) | |||||
//{ | |||||
//} | |||||
//1.先加载所有数据 2.替换当前数据 3.重新保存 | |||||
List<SyncInstrumentItemInfo> lstDB = new List<SyncInstrumentItemInfo>(); | |||||
XmlSerializer serializer = new XmlSerializer(lstDB.GetType()); | |||||
FileStream stream = new FileStream(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml", FileMode.Open); | |||||
lstDB = (List<SyncInstrumentItemInfo>)serializer.Deserialize(stream); | |||||
stream.Close(); | |||||
var item = lstDB.Where(p => p.GUID == syncInstrumentItem.GUID).SingleOrDefault(); | |||||
if (item != null) | |||||
{ | |||||
item = syncInstrumentItem; | |||||
} | |||||
else | |||||
{ | |||||
lstDB.Add(syncInstrumentItem); | |||||
} | |||||
TextWriter writer = new StreamWriter(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml"); | |||||
serializer.Serialize(writer, lstDB); | |||||
writer.Close(); | |||||
this.ParamsChangedDelegate(syncInstrumentItem); | |||||
} | |||||
else | |||||
{ | |||||
XmlSerializer serializer = new XmlSerializer(lstSyncInstrument.GetType()); | |||||
TextWriter writer = new StreamWriter(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml"); | |||||
serializer.Serialize(writer, lstSyncInstrument); | |||||
writer.Close(); | |||||
} | |||||
MessageBox.Show("保存成功!"); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageBox.Show("保存失败!错误信息为:"+ex.Message.ToString()); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 新增仪器 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnAdd_Click(object sender, EventArgs e) | |||||
{ | |||||
frmInstrumentCode frmCode = new frmInstrumentCode(lstSyncInstrument); | |||||
frmCode.InstrumentDelegate = delegate(SyncInstrumentItemInfo Instrumentitem) | |||||
{ | |||||
lstSyncInstrument.Add(Instrumentitem); | |||||
}; | |||||
frmCode.ShowDialog(); | |||||
//绑定数据 | |||||
dgvInstrument.DataSource = new BindingList<SyncInstrumentItemInfo>(lstSyncInstrument); | |||||
} | |||||
/// <summary> | |||||
/// 删除仪器 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnDel_Click(object sender, EventArgs e) | |||||
{ | |||||
if (dgvInstrument.Rows.Count <= 0) return; | |||||
//当前选中行 | |||||
string strInstrumentCode = this.dgvInstrument.Rows[this.dgvInstrument.CurrentRow.Index].Cells[0].Value.ToString(); | |||||
//找到数据源中数据,删除 | |||||
var lstitem = lstSyncInstrument.Where(s => s.Code == strInstrumentCode).ToList<SyncInstrumentItemInfo>(); | |||||
if (lstitem == null) | |||||
return; | |||||
else if (lstitem.Count >= 1) | |||||
{ | |||||
foreach (var item in lstitem) | |||||
{ | |||||
lstSyncInstrument.Remove(item); | |||||
} | |||||
} | |||||
//绑定数据 | |||||
dgvInstrument.DataSource = new BindingList<SyncInstrumentItemInfo>(); | |||||
dgvInstrument.DataSource = new BindingList<SyncInstrumentItemInfo>(lstSyncInstrument); | |||||
} | |||||
//双击单元格时,触发修改 | |||||
private void dgvInstrument_CellDoubleClick(object sender, DataGridViewCellEventArgs e) | |||||
{ | |||||
if (dgvInstrument.Rows.Count <= 0) return; | |||||
//当前选中单元格 | |||||
string strInstrumentCode = this.dgvInstrument.Rows[this.dgvInstrument.CurrentRow.Index].Cells[0].Value.ToString(); | |||||
frmInstrumentCode frmCode = new frmInstrumentCode(lstSyncInstrument, strInstrumentCode); | |||||
frmCode.InstrumentDelegate = delegate (SyncInstrumentItemInfo Instrumentitem) | |||||
{ | |||||
var lstInstrument = lstSyncInstrument.Where(s => s.Code == strInstrumentCode).ToList<SyncInstrumentItemInfo>(); | |||||
if (lstInstrument.Count == 1) | |||||
{ | |||||
lstInstrument[0].Code = Instrumentitem.Code; | |||||
} | |||||
}; | |||||
frmCode.ShowDialog(); | |||||
//绑定数据 | |||||
dgvInstrument.DataSource = new BindingList<SyncInstrumentItemInfo>(lstSyncInstrument); | |||||
} | |||||
private void dgvInstrument_SelectionChanged(object sender, EventArgs e) | |||||
{ | |||||
if (dgvInstrument.Rows.Count <= 0) return; | |||||
if (dgvInstrument.Rows[dgvInstrument.CurrentRow.Index].Cells[0].Value == null) return; | |||||
//当前选中单元格 | |||||
string strInstrumentCode = this.dgvInstrument.Rows[this.dgvInstrument.CurrentRow.Index].Cells[0].Value.ToString(); | |||||
var lstInstrument = lstSyncInstrument.Where(s => s.Code == strInstrumentCode).ToList<SyncInstrumentItemInfo>(); | |||||
if (lstInstrument.Count == 1) | |||||
{ | |||||
currentSyncItem = lstInstrument[0]; | |||||
if (currentSyncItem.SyncInstrumentDSInfo != null&& currentSyncItem.SyncInstrumentDSInfo.InstrumentDataSourceType!=DataSourceType.None) | |||||
{ | |||||
dgvMapping.DataSource = new BindingList<SyncParamasInfo>(currentSyncItem.LstSyncPramas); | |||||
} | |||||
else | |||||
{ | |||||
cbxCnas.DataSource = null; | |||||
cbxInstrument.DataSource = null; | |||||
dgvInstruDS.DataSource = null; | |||||
dgvCnas.DataSource = null; | |||||
dgvMapping.DataSource = new BindingList<SyncParamasInfo>(); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
cbxCnas.DataSource = null; | |||||
cbxInstrument.DataSource = null; | |||||
dgvInstruDS.DataSource = null; | |||||
dgvCnas.DataSource = null; | |||||
dgvMapping.DataSource =new BindingList<SyncParamasInfo>(); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 切换选中表时发生 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void cbxInstrument_SelectedIndexChanged(object sender, EventArgs e) | |||||
{ | |||||
if (cbxInstrument.SelectedValue == null) return; | |||||
string strTableName_Instru = cbxInstrument.SelectedValue.ToString(); | |||||
if (dictInstruTables.ContainsKey(strTableName_Instru)) | |||||
{ | |||||
DataTable dt = dictInstruTables[strTableName_Instru]; | |||||
if (dt != null && dt.Rows.Count > 0) | |||||
{ | |||||
//DataRow drColumn = dt.Rows[0]; //第一行是列名 | |||||
DataTable dtInstruShow = new DataTable(); | |||||
dtInstruShow.Columns.Add("InstruFieldName"); | |||||
dtInstruShow.Columns.Add("InstruDataType"); | |||||
//foreach (DataColumn dc in dt.Columns) | |||||
//{ | |||||
// dtInstruShow.Rows.Add(new object[] { drColumn[dc.ColumnName] }); | |||||
//} | |||||
foreach (DataColumn dc in dt.Columns) | |||||
{ | |||||
dtInstruShow.Rows.Add(new object[] { dc.ColumnName,dc.DataType}); | |||||
} | |||||
dgvInstruDS.DataSource = dtInstruShow; | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 切换表时发生 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void cbxCnas_SelectedIndexChanged(object sender, EventArgs e) | |||||
{ | |||||
if (cbxCnas.Text == null) return; | |||||
string strTableName_Cnas = cbxCnas.Text.ToString(); | |||||
//从数据库中加载数据表结构 | |||||
//DataTable dtTableStruct = SQLDB2Helper.getDB2Table(string.Format("SELECT * FROM {0} Where 1=0", strTableName_Cnas)); | |||||
DataTable dtTableStruct = CnasDataOperationFact.CnasDataOperation().GetCNASTablesStruct(strTableName_Cnas,currentSyncItem); | |||||
if (dtTableStruct != null) | |||||
{ | |||||
DataTable dtCnasShow = new DataTable(); | |||||
dtCnasShow.Columns.Add("CnasFieldName"); | |||||
dtCnasShow.Columns.Add("CnasDataType"); | |||||
foreach (DataColumn dc in dtTableStruct.Columns) | |||||
{ | |||||
dtCnasShow.Rows.Add(new object[] { dc.ColumnName ,dc.DataType}); | |||||
} | |||||
dgvCnas.DataSource = dtCnasShow; | |||||
} | |||||
} | |||||
//增加映射 | |||||
private void btnAddMapping_Click(object sender, EventArgs e) | |||||
{ | |||||
if (cbxInstrument.SelectedValue == null) return; | |||||
if (cbxCnas.SelectedValue == null) return; | |||||
if (dgvInstruDS.Rows.Count <= 0) return; | |||||
if (dgvCnas.Rows.Count <= 0) return; | |||||
SyncParamasInfo syncParamas = new SyncParamasInfo(); | |||||
if (currentSyncItem.LstSyncPramas == null) currentSyncItem.LstSyncPramas = new List<SyncParamasInfo>(); | |||||
//检测选中表是否跟已有映射数据一致,如果不一致,则不允许继续 | |||||
var lst = currentSyncItem.LstSyncPramas.Where(s=>s.SourceTable== cbxInstrument.SelectedValue.ToString()&&s.TargetTable== cbxCnas.SelectedValue.ToString()).ToList<SyncParamasInfo>(); | |||||
if (currentSyncItem.LstSyncPramas.Count > 0 && lst.Count <= 0) | |||||
{ | |||||
MessageBox.Show("已存在不同表单映射数据,无法添加!"); | |||||
return; | |||||
} | |||||
//检测是否已经存在这个数据(不允许存在重复数据) | |||||
lst = currentSyncItem.LstSyncPramas.Where(s => s.SourceField == dgvInstruDS.Rows[dgvInstruDS.CurrentCell.RowIndex].Cells[0].Value.ToString()&&s.SourceTable== cbxInstrument.SelectedValue.ToString()).ToList<SyncParamasInfo>(); | |||||
if (lst.Count > 0) | |||||
{ | |||||
MessageBox.Show("仪器数据库字段已分配,请重新选择!"); | |||||
return; | |||||
} | |||||
lst = currentSyncItem.LstSyncPramas.Where(s => s.TargetTable == cbxCnas.SelectedValue.ToString() && s.TargetField == dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells[0].Value.ToString()).ToList<SyncParamasInfo>(); | |||||
if (lst.Count > 0) | |||||
{ | |||||
MessageBox.Show("CNAS数据库字段已分配,请重新选择!"); | |||||
return; | |||||
} | |||||
if (dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells[0].Value.ToString().ToUpper() == "ID") | |||||
{ | |||||
MessageBox.Show("该字段为CNAS数据库保留字段,不允许插入数据,请重新选择!"); | |||||
return; | |||||
} | |||||
//仪器表名和选中行 | |||||
syncParamas.SourceTable = cbxInstrument.SelectedValue.ToString(); | |||||
syncParamas.SourceField = dgvInstruDS.Rows[dgvInstruDS.CurrentCell.RowIndex].Cells[0].Value.ToString(); | |||||
//CNAS表名和选中行 | |||||
syncParamas.TargetTable = cbxCnas.SelectedValue.ToString(); | |||||
syncParamas.TargetField = dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells[0].Value.ToString(); | |||||
//绑定数据 | |||||
if (currentSyncItem.LstSyncPramas == null) currentSyncItem.LstSyncPramas = new List<SyncParamasInfo>(); | |||||
currentSyncItem.LstSyncPramas.Add(syncParamas); | |||||
dgvMapping.DataSource= new BindingList<SyncParamasInfo>(currentSyncItem.LstSyncPramas); | |||||
} | |||||
/// <summary> | |||||
/// 删除映射 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnDelMap_Click(object sender, EventArgs e) | |||||
{ | |||||
//当前选中项 | |||||
string strSourceField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["InstrumentField"].Value.ToString(); | |||||
string strTargetField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["CnasField"].Value.ToString(); | |||||
var lstDelItems = currentSyncItem.LstSyncPramas.Where(s => s.SourceField == strSourceField && s.TargetField == strTargetField).ToList<SyncParamasInfo>(); | |||||
if (lstDelItems.Count > 0) | |||||
{ | |||||
foreach (var item in lstDelItems) | |||||
{ | |||||
currentSyncItem.LstSyncPramas.Remove(item); | |||||
} | |||||
dgvMapping.DataSource = new BindingList<SyncParamasInfo>(currentSyncItem.LstSyncPramas); | |||||
} | |||||
} | |||||
private void btnRun_Click(object sender, EventArgs e) | |||||
{ | |||||
////根据映射字段获取准备上传的所有数据 | |||||
//if (!dictInstruTables.ContainsKey(currentSyncItem.LstSyncPramas[0].SourceTable)) return; | |||||
//DataTable dtReadySource = dictInstruTables[currentSyncItem.LstSyncPramas[0].SourceTable]; | |||||
//if (dtReadySource == null || dtReadySource.Rows.Count <= 0) return; | |||||
////构建准备插入的数据 | |||||
//DataTable dtTarget = CnasDataOperationFact.CnasDataOperation().GetCNASTablesStruct(currentSyncItem.LstSyncPramas[0].TargetTable,currentSyncItem); | |||||
//foreach (DataRow drSource in dtReadySource.Rows) | |||||
//{ | |||||
// DataRow drNewTarget = dtTarget.NewRow(); | |||||
// //遍历映射表,把所有字段插入到目标表中 | |||||
// foreach (var item in currentSyncItem.LstSyncPramas) | |||||
// { | |||||
// var strSourceField = item.SourceField; | |||||
// var strTargetField = item.TargetField; | |||||
// //当列名存在于数据表中时才能继续 | |||||
// if (dtReadySource.Columns.Contains(strSourceField) && dtTarget.Columns.Contains(strTargetField)) | |||||
// { | |||||
// drNewTarget[strTargetField] = drSource[strSourceField]; | |||||
// } | |||||
// } | |||||
// dtTarget.Rows.Add(drNewTarget); | |||||
//} | |||||
////执行插入 | |||||
//int iReturn = CnasDataOperationFact.CnasDataOperation().InsertDataToCNASTable(dtTarget, currentSyncItem); | |||||
//if (iReturn>0) | |||||
// MessageBox.Show("上传完成!"); | |||||
//else | |||||
// MessageBox.Show("上传过程中发生异常,请联系管理员!"); | |||||
} | |||||
/// <summary> | |||||
/// 配置数据库界面 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnDatabaseConfig_Click(object sender, EventArgs e) | |||||
{ | |||||
frmDatabaseParams frmDatabase = new frmDatabaseParams(currentSyncItem); | |||||
frmDatabase.InstrumentDelegate = delegate (SyncInstrumentItemInfo Instrumentitem) | |||||
{ | |||||
this.currentSyncItem = Instrumentitem; | |||||
}; | |||||
frmDatabase.InstrumentItemData = delegate (Dictionary<string, DataTable> dict) | |||||
{ | |||||
this.dictInstruTables = dict; | |||||
}; | |||||
frmDatabase.ShowDialog(); | |||||
LoadSourceAndTargetData(); | |||||
} | |||||
private void btnLoadDBData_Click(object sender, EventArgs e) | |||||
{ | |||||
int iReturn=LoadSourceAndTargetData(true); | |||||
switch (iReturn) | |||||
{ | |||||
case -1: | |||||
MessageBox.Show("未能成功获取仪器数据库配置信息,请配置后重试!"); | |||||
break; | |||||
case -2: | |||||
MessageBox.Show("未能成功获取CNAS数据库配置信息,请配置后重试!"); | |||||
break; | |||||
case -3: | |||||
MessageBox.Show("未能成功获取仪器数据信息,请配置后重试!"); | |||||
break; | |||||
case -4: | |||||
MessageBox.Show("未能成功获取CNAS数据信息,请配置后重试!"); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
public int LoadSourceAndTargetData(bool bIfLoading=false) | |||||
{ | |||||
//检查配置信息 | |||||
if (currentSyncItem.SyncInstrumentDSInfo == null || currentSyncItem.SyncInstrumentDSInfo.LocalPath ==null|| currentSyncItem.SyncInstrumentDSInfo.LocalPath == "") return -1; | |||||
if (currentSyncItem.SyncTargetDBInfo == null) return -2; | |||||
//是否需要重新加载来源库 | |||||
if (bIfLoading) | |||||
{ | |||||
if (currentSyncItem.SyncInstrumentDSInfo.LocalPath != null && currentSyncItem.SyncInstrumentDSInfo.LocalPath != "") | |||||
{ | |||||
InstrumentData instrumentData = InstrumentDataFact.CreateInstrumentDataSource(currentSyncItem.SyncInstrumentDSInfo.InstrumentDataSourceType, new object[] { currentSyncItem.SyncInstrumentDSInfo.LocalPath, currentSyncItem.SyncInstrumentDSInfo.UserId, currentSyncItem.SyncInstrumentDSInfo.UserPwd }); | |||||
dictInstruTables = instrumentData.GetInstrumentData(); | |||||
} | |||||
} | |||||
if (dictInstruTables.Count <= 0) return -3; | |||||
//绑定ComboBox | |||||
List<string> lstTableName = new List<string>(); | |||||
foreach (var item in dictInstruTables) | |||||
{ | |||||
lstTableName.Add(item.Key); | |||||
} | |||||
cbxInstrument.DataSource = lstTableName; | |||||
cbxInstrument.ValueMember = ""; | |||||
//获取CNAS配置的数据库连接信息 | |||||
DataTable dtCNAS = CnasDataOperationFact.CnasDataOperation().GetAllCNASTablesName(currentSyncItem); | |||||
if (dtCNAS != null && dtCNAS.Rows.Count > 0) | |||||
{ | |||||
List<string> lstCnasTables = new List<string>(); | |||||
foreach (DataRow dr in dtCNAS.Rows) | |||||
{ | |||||
lstCnasTables.Add(dr["TABNAME"].ToString()); | |||||
} | |||||
cbxCnas.DataSource = lstCnasTables; | |||||
cbxCnas.ValueMember = ""; | |||||
} | |||||
else | |||||
return -4; | |||||
return 1; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,194 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<metadata name="InstrumentField.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="CnasField.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="cmsMapping.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||||
<value>17, 17</value> | |||||
</metadata> | |||||
<metadata name="InstruFieldName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="InstruDataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="CNASFieldName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="CnasDataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="Code.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>True</value> | |||||
</metadata> | |||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
<value>25</value> | |||||
</metadata> | |||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAABILAAASCwAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAAAAI+PjwBnZ2cAISEhAA0NDQsLCwscBgYGKB8e | |||||
GzhQTEZ2Ozk0aQwMChwAAAAHAAAABwAAAAMAAAAAkZGRAP///wAAAAAAAAAAAAAAAAAAAAAAHBwcACUl | |||||
JQAlJSUAVVVVAJWVlRRWVlZPFRUVjRISErsMDAzVBgYG3yAfHeZnY138UlBL+BYWFMVbWlmfWVhWcgIC | |||||
ASYZGRkDLy8vANPT0wAAAAAAAAAAAAAAAAAAAAAALCwsACkpKQAkJCQHGhoaXGZmZseBgYH5FxcX/xgY | |||||
GP85ODb/MC8u/1NSTv+Gg37/iYaB/3x6d/+zsq//iYiG9i8uLHKKioog2traFtzc3AUAAAAAAAAAAAAA | |||||
AAAqKioAKysrACsrKw8pKSmRIiIi+GhoaP+qqqv/ICAg/ysrKv+GhID/jIqF/5aUj/+Zl5P/oZ+c/7W0 | |||||
sf/Cwb//dHRy+CEgIHeQkJAx3NzcF+Pj4wIAAAAAAAAAAAAAAAArKysAIyMjAS8vL38tLS3/JSUl/3Bw | |||||
cP/R0dH/Ozs7/x4eHv97enj/q6mn/5STkf9SUVD/Ojk5/56dnf/W1tb/oKCg90JCQmOdnZ0d2dnZFuLi | |||||
4gIAAAAAAAAAAAAAAAAjIyMAIiIiDjExMcQwMDD/KCgo/3Fxcv/t7e3/bGxs/yYmJv+cnJz/ubi4/2dn | |||||
Zv8UFBT/CQkJ/0RERP/Qz83/zcvJ/7SyrsVgX11iQEBAAm1ragAAAAAAAAAAAAAAAAAUFBQAEBAQDDIy | |||||
MrUzMzP/LS0t/3Z2dv/5+fn/wMDA/5OSkv/Ly8r/qKin/0JCQv8TExP/EBAQ/ycmJv+uq6f/xMC7/7Ct | |||||
p/5iYF2dNTU2BG9ubQAAAAAAAAAAAAAAAAAICAgA////ADU1NYU2Njb/MzMz/3Jycv/m5uf/1dXW/8bE | |||||
w//IxsP/mZeU/zU0M/8YGBj/ExMT/zQzMf+mopv/m5eR/398d4ZycG0Sd2teAIqJhwAAAAAAAAAAAAAA | |||||
AAAQEBAAODg4ADk5OTo4ODjuODg4/4aGiP+urrH/tbW4/4iIiv+hn53/qqej/0RDQf8aGhr/Hx8e/2Vi | |||||
Xf+VkIj/a2di8EZEQDdZV1MAbGRbAIeGhAAAAAAAAAAAAAAAAAAAAAAAOjo6ADw8PAQ6OjqKOjo6/pKR | |||||
k/+psLz/xMzZ/9HR0v+lpKL/r6yn/5CNiP9mZGD/dnNu/4uHgP+Hg3v/WldS/SspJnIzMS0AKigmAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAOjo6ADo6OgA6OjoOPDw7dGBhY9xugJr/boqz/6+90f+2tbP/nZmT/5yZ | |||||
k/+UkYr/kY6G/4eDfOyPioPWfXlx70dEP2d9eG4ALy0rAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzs7AEhT | |||||
YwBUaIQAYYCrKF13ncNdeJ//V3Ka/1VvlP92hp3/en2B/2BfXvSal5D3gX13/z88OJeSjocdfXhxOFhV | |||||
TQZST0kALSwpAAAAAAAAAAAAAAAAAAAAAAAAAAAAZIOvAGB+qgBgfqkLYH6qr2B/qv9gf6r/YX+q/114 | |||||
n/9Qao7/Y3ud61dealino5uUeXVvwyknI0pYVlAAfnlyAE1KQwBVUkwAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAZ4e1AGOBrQBiga1GY4Gt9WOBrf9iga3/YYCr/2iFrv9he6D/TmeLxlZ6rgualIsLfnt2C/// | |||||
/wAxMC8ALiwpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAodb/AFt1nQBnh7WIZ4e1/2eH | |||||
tf9kg7D/Xnyn/2SCrP9zjbP/W3Wavz5KWg5gZWoAgX55ABUUEgAxMC0AAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAOUtlADdKZApadJq5XHad/2F8pP9oepT/dIOY/1Rph/9zjbT/ZoGn+ElU | |||||
ZYwvIxMIOzs7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXVvAGZn | |||||
Y0aKkZTre4WO/0xabf+UoK//j5yv/z1JW/9OY4H/ZYOt/0tYavI4NTJAOjo6AAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioqEAHV1cVKSnKPue4yh/2Z/o/9mgKf/Y4Cq/2OB | |||||
rf9JXXv/Q1Fk/0FGS/89PTxzQUFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAXGp/AFRfbwx8mMKyhKLO/4Sj0v98nMz/cZLC/2qLuv9Zb4//OTk6/z09Pf9HR0eEUVFRAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlP//AIaauQB9nMmIfp3L/3yc | |||||
y/95mcf/cpLA/2uJtP9TYHP/Ojo5/z4+Pv9HR0d6UFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAPzo0AGN4lwBfcYxkX3CJ/mJyiv9mdo7/aHeO/2NreP9OT1D/QUFA/z4+ | |||||
PvtBQUFVQ0NDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk5OAKem | |||||
pQBubW1zc3Jy+29vbv9qaWj/YmJh/1hYV/9OTk7/RkZG/0BAQNU8PDwdPDw8AAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhoAIiIiACMjIwNgYGBZXl5echwcHDyZmZm/V1d | |||||
Xf5TU1P7SkpK40RERFxFRUUASkpKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAg4ODAIKCggCDg4MAdnZ2AICAgBZ2dnZJbW1tb2RkZHZZWVlkUVFRMVlZWQJKSkoAQ0NDAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAA8AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAA | |||||
AADgAAEA8AABAPAAAQDwAAMA8AAPAPAAHwDwAH8A8AB/APAAfwDwAH8A8AB/APAAfwDwAH8A8AB/APAA | |||||
fwA= | |||||
</value> | |||||
</data> | |||||
</root> |
@@ -0,0 +1,9 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<packages> | |||||
<package id="EntityFramework" version="6.2.0" targetFramework="net40" /> | |||||
<package id="log4net" version="2.0.8" targetFramework="net40" /> | |||||
<package id="System.Data.SQLite" version="1.0.111.0" targetFramework="net40" /> | |||||
<package id="System.Data.SQLite.Core" version="1.0.111.0" targetFramework="net40" /> | |||||
<package id="System.Data.SQLite.EF6" version="1.0.111.0" targetFramework="net40" /> | |||||
<package id="System.Data.SQLite.Linq" version="1.0.111.0" targetFramework="net40" /> | |||||
</packages> |
@@ -0,0 +1,103 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
<PropertyGroup> | |||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
<ProjectGuid>{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}</ProjectGuid> | |||||
<OutputType>WinExe</OutputType> | |||||
<RootNamespace>CNAS_RunSync</RootNamespace> | |||||
<AssemblyName>CNAS_RunSync</AssemblyName> | |||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> | |||||
<FileAlignment>512</FileAlignment> | |||||
<Deterministic>true</Deterministic> | |||||
<TargetFrameworkProfile /> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
<PlatformTarget>x86</PlatformTarget> | |||||
<DebugSymbols>true</DebugSymbols> | |||||
<DebugType>full</DebugType> | |||||
<Optimize>false</Optimize> | |||||
<OutputPath>..\dll\</OutputPath> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
<PlatformTarget>AnyCPU</PlatformTarget> | |||||
<DebugType>pdbonly</DebugType> | |||||
<Optimize>true</Optimize> | |||||
<OutputPath>bin\Release\</OutputPath> | |||||
<DefineConstants>TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> | |||||
<SpecificVersion>False</SpecificVersion> | |||||
<HintPath>..\dll\log4net.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |||||
<SpecificVersion>False</SpecificVersion> | |||||
<HintPath>..\dll\Newtonsoft.Json.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System" /> | |||||
<Reference Include="System.Core" /> | |||||
<Reference Include="System.Xml.Linq" /> | |||||
<Reference Include="System.Data.DataSetExtensions" /> | |||||
<Reference Include="System.Data" /> | |||||
<Reference Include="System.Deployment" /> | |||||
<Reference Include="System.Drawing" /> | |||||
<Reference Include="System.Windows.Forms" /> | |||||
<Reference Include="System.Xml" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Include="frmSyncShow.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="frmSyncShow.Designer.cs"> | |||||
<DependentUpon>frmSyncShow.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="Program.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||||
<Compile Include="ucSyncShow.cs"> | |||||
<SubType>UserControl</SubType> | |||||
</Compile> | |||||
<Compile Include="ucSyncShow.Designer.cs"> | |||||
<DependentUpon>ucSyncShow.cs</DependentUpon> | |||||
</Compile> | |||||
<EmbeddedResource Include="frmSyncShow.resx"> | |||||
<DependentUpon>frmSyncShow.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="Properties\Resources.resx"> | |||||
<Generator>ResXFileCodeGenerator</Generator> | |||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||||
<SubType>Designer</SubType> | |||||
</EmbeddedResource> | |||||
<Compile Include="Properties\Resources.Designer.cs"> | |||||
<AutoGen>True</AutoGen> | |||||
<DependentUpon>Resources.resx</DependentUpon> | |||||
<DesignTime>True</DesignTime> | |||||
</Compile> | |||||
<EmbeddedResource Include="ucSyncShow.resx"> | |||||
<DependentUpon>ucSyncShow.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<None Include="app.config" /> | |||||
<None Include="Properties\Settings.settings"> | |||||
<Generator>SettingsSingleFileGenerator</Generator> | |||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput> | |||||
</None> | |||||
<Compile Include="Properties\Settings.Designer.cs"> | |||||
<AutoGen>True</AutoGen> | |||||
<DependentUpon>Settings.settings</DependentUpon> | |||||
<DesignTimeSharedInput>True</DesignTimeSharedInput> | |||||
</Compile> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\CNAS_DBSync\CNAS_DBSync.csproj"> | |||||
<Project>{0f16f166-6646-4502-b22d-5fe5bfe92326}</Project> | |||||
<Name>CNAS_DBSync</Name> | |||||
</ProjectReference> | |||||
</ItemGroup> | |||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
</Project> |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Windows.Forms; | |||||
namespace CNAS_RunSync | |||||
{ | |||||
static class Program | |||||
{ | |||||
/// <summary> | |||||
/// 应用程序的主入口点。 | |||||
/// </summary> | |||||
[STAThread] | |||||
static void Main() | |||||
{ | |||||
Application.EnableVisualStyles(); | |||||
Application.SetCompatibleTextRenderingDefault(false); | |||||
Application.Run(new frmSyncShow()); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,37 @@ | |||||
using System.Reflection; | |||||
using System.Runtime.CompilerServices; | |||||
using System.Runtime.InteropServices; | |||||
// 有关程序集的一般信息由以下 | |||||
// 控制。更改这些特性值可修改 | |||||
// 与程序集关联的信息。 | |||||
[assembly: AssemblyTitle("CNAS_RunSync")] | |||||
[assembly: AssemblyDescription("")] | |||||
[assembly: AssemblyConfiguration("")] | |||||
[assembly: AssemblyCompany("")] | |||||
[assembly: AssemblyProduct("CNAS_RunSync")] | |||||
[assembly: AssemblyCopyright("Copyright © 2019")] | |||||
[assembly: AssemblyTrademark("")] | |||||
[assembly: AssemblyCulture("")] | |||||
// 将 ComVisible 设置为 false 会使此程序集中的类型 | |||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 | |||||
//请将此类型的 ComVisible 特性设置为 true。 | |||||
[assembly: ComVisible(false)] | |||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID | |||||
[assembly: Guid("2f1e5c7f-bee0-4c40-b928-917ad9a4cf46")] | |||||
// 程序集的版本信息由下列四个值组成: | |||||
// | |||||
// 主版本 | |||||
// 次版本 | |||||
// 生成号 | |||||
// 修订号 | |||||
// | |||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 | |||||
// 方法是按如下所示使用“*”: : | |||||
// [assembly: AssemblyVersion("1.0.*")] | |||||
[assembly: AssemblyVersion("1.0.0.0")] | |||||
[assembly: AssemblyFileVersion("1.0.0.0")] | |||||
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)] |
@@ -0,0 +1,63 @@ | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// 此代码由工具生成。 | |||||
// 运行时版本:4.0.30319.42000 | |||||
// | |||||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||||
// 重新生成代码,这些更改将会丢失。 | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace CNAS_RunSync.Properties { | |||||
using System; | |||||
/// <summary> | |||||
/// 一个强类型的资源类,用于查找本地化的字符串等。 | |||||
/// </summary> | |||||
// 此类是由 StronglyTypedResourceBuilder | |||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 | |||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen | |||||
// (以 /str 作为命令选项),或重新生成 VS 项目。 | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] | |||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
internal class Resources { | |||||
private static global::System.Resources.ResourceManager resourceMan; | |||||
private static global::System.Globalization.CultureInfo resourceCulture; | |||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||||
internal Resources() { | |||||
} | |||||
/// <summary> | |||||
/// 返回此类使用的缓存的 ResourceManager 实例。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Resources.ResourceManager ResourceManager { | |||||
get { | |||||
if (object.ReferenceEquals(resourceMan, null)) { | |||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CNAS_RunSync.Properties.Resources", typeof(Resources).Assembly); | |||||
resourceMan = temp; | |||||
} | |||||
return resourceMan; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 重写当前线程的 CurrentUICulture 属性 | |||||
/// 重写当前线程的 CurrentUICulture 属性。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Globalization.CultureInfo Culture { | |||||
get { | |||||
return resourceCulture; | |||||
} | |||||
set { | |||||
resourceCulture = value; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,117 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -0,0 +1,26 @@ | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// 此代码由工具生成。 | |||||
// 运行时版本:4.0.30319.42000 | |||||
// | |||||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||||
// 重新生成代码,这些更改将会丢失。 | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace CNAS_RunSync.Properties { | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] | |||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | |||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |||||
public static Settings Default { | |||||
get { | |||||
return defaultInstance; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,7 @@ | |||||
<?xml version='1.0' encoding='utf-8'?> | |||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> | |||||
<Profiles> | |||||
<Profile Name="(Default)" /> | |||||
</Profiles> | |||||
<Settings /> | |||||
</SettingsFile> |
@@ -0,0 +1,40 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<appSettings> | |||||
<add key="TargetDBType" value="MySQL" /> | |||||
</appSettings> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
<startup> | |||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> | |||||
</startup> | |||||
</configuration> |
@@ -0,0 +1,58 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<connectionStrings> | |||||
<add name="CoreDb" connectionString="Driver={IBM DB2 ODBC DRIVER};DataBase=SAMPLE; HostName=127.0.0.1; Protocol=TCPIP;Port=50000;Uid=db2admin;Pwd=123" /> | |||||
</connectionStrings> | |||||
<appSettings> | |||||
<add key="CoreDb" value="Provider=IBMDADB2;Data Source=SAMPLE;UID=db2admin;PWD=123;" /> | |||||
</appSettings> | |||||
<entityFramework> | |||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> | |||||
<parameters> | |||||
<parameter value="mssqllocaldb" /> | |||||
</parameters> | |||||
</defaultConnectionFactory> | |||||
<providers> | |||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> | |||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> | |||||
</providers> | |||||
</entityFramework> | |||||
<system.data> | |||||
<DbProviderFactories> | |||||
<remove invariant="System.Data.SQLite.EF6" /> | |||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> | |||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories> | |||||
</system.data> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
</configuration> |
@@ -0,0 +1,3 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> |
@@ -0,0 +1,22 @@ | |||||
<?xml version="1.0"?> | |||||
<!-- | |||||
* | |||||
* System.Data.SQLite.dll.config - | |||||
* | |||||
* WARNING: This XML configuration file is intended for use within the NuGet | |||||
* package directories only. Please do not copy this file to any of | |||||
* the build output directories because it could interfere with the | |||||
* native library pre-loading feature. | |||||
* | |||||
* Written by Joe Mistachkin. | |||||
* Released to the public domain, use at your own risk! | |||||
* | |||||
--> | |||||
<configuration> | |||||
<appSettings> | |||||
<add key="PreLoadSQLite_BaseDirectory" | |||||
value="%PreLoadSQLite_AssemblyDirectory%\..\..\build\%PreLoadSQLite_TargetFramework%" /> | |||||
</appSettings> | |||||
<dllmap dll="SQLite.Interop" target="SQLite.Interop.dll" /> | |||||
</configuration> |
@@ -0,0 +1,160 @@ | |||||
namespace CNAS_RunSync | |||||
{ | |||||
partial class frmSyncShow | |||||
{ | |||||
/// <summary> | |||||
/// 必需的设计器变量。 | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// 清理所有正在使用的资源。 | |||||
/// </summary> | |||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region Windows 窗体设计器生成的代码 | |||||
/// <summary> | |||||
/// 设计器支持所需的方法 - 不要修改 | |||||
/// 使用代码编辑器修改此方法的内容。 | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSyncShow)); | |||||
this.pnlAll = new System.Windows.Forms.Panel(); | |||||
this.pnlCenter = new System.Windows.Forms.Panel(); | |||||
this.pnlCenterCenter = new System.Windows.Forms.Panel(); | |||||
this.tabcSyncData = new System.Windows.Forms.TabControl(); | |||||
this.pnlCenterBottom = new System.Windows.Forms.Panel(); | |||||
this.pnlBottom = new System.Windows.Forms.Panel(); | |||||
this.pnlTop = new System.Windows.Forms.Panel(); | |||||
this.pnlRight = new System.Windows.Forms.Panel(); | |||||
this.pnlLeft = new System.Windows.Forms.Panel(); | |||||
this.pnlAll.SuspendLayout(); | |||||
this.pnlCenter.SuspendLayout(); | |||||
this.pnlCenterCenter.SuspendLayout(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// pnlAll | |||||
// | |||||
this.pnlAll.Controls.Add(this.pnlCenter); | |||||
this.pnlAll.Controls.Add(this.pnlBottom); | |||||
this.pnlAll.Controls.Add(this.pnlTop); | |||||
this.pnlAll.Controls.Add(this.pnlRight); | |||||
this.pnlAll.Controls.Add(this.pnlLeft); | |||||
this.pnlAll.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlAll.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlAll.Name = "pnlAll"; | |||||
this.pnlAll.Size = new System.Drawing.Size(943, 583); | |||||
this.pnlAll.TabIndex = 0; | |||||
// | |||||
// pnlCenter | |||||
// | |||||
this.pnlCenter.Controls.Add(this.pnlCenterCenter); | |||||
this.pnlCenter.Controls.Add(this.pnlCenterBottom); | |||||
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlCenter.Location = new System.Drawing.Point(10, 10); | |||||
this.pnlCenter.Name = "pnlCenter"; | |||||
this.pnlCenter.Size = new System.Drawing.Size(923, 563); | |||||
this.pnlCenter.TabIndex = 4; | |||||
// | |||||
// pnlCenterCenter | |||||
// | |||||
this.pnlCenterCenter.Controls.Add(this.tabcSyncData); | |||||
this.pnlCenterCenter.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlCenterCenter.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlCenterCenter.Name = "pnlCenterCenter"; | |||||
this.pnlCenterCenter.Size = new System.Drawing.Size(923, 546); | |||||
this.pnlCenterCenter.TabIndex = 1; | |||||
// | |||||
// tabcSyncData | |||||
// | |||||
this.tabcSyncData.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.tabcSyncData.Location = new System.Drawing.Point(0, 0); | |||||
this.tabcSyncData.Name = "tabcSyncData"; | |||||
this.tabcSyncData.SelectedIndex = 0; | |||||
this.tabcSyncData.Size = new System.Drawing.Size(923, 546); | |||||
this.tabcSyncData.TabIndex = 0; | |||||
// | |||||
// pnlCenterBottom | |||||
// | |||||
this.pnlCenterBottom.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.pnlCenterBottom.Location = new System.Drawing.Point(0, 546); | |||||
this.pnlCenterBottom.Name = "pnlCenterBottom"; | |||||
this.pnlCenterBottom.Size = new System.Drawing.Size(923, 17); | |||||
this.pnlCenterBottom.TabIndex = 0; | |||||
// | |||||
// pnlBottom | |||||
// | |||||
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom; | |||||
this.pnlBottom.Location = new System.Drawing.Point(10, 573); | |||||
this.pnlBottom.Name = "pnlBottom"; | |||||
this.pnlBottom.Size = new System.Drawing.Size(923, 10); | |||||
this.pnlBottom.TabIndex = 3; | |||||
// | |||||
// pnlTop | |||||
// | |||||
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.pnlTop.Location = new System.Drawing.Point(10, 0); | |||||
this.pnlTop.Name = "pnlTop"; | |||||
this.pnlTop.Size = new System.Drawing.Size(923, 10); | |||||
this.pnlTop.TabIndex = 2; | |||||
// | |||||
// pnlRight | |||||
// | |||||
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right; | |||||
this.pnlRight.Location = new System.Drawing.Point(933, 0); | |||||
this.pnlRight.Name = "pnlRight"; | |||||
this.pnlRight.Size = new System.Drawing.Size(10, 583); | |||||
this.pnlRight.TabIndex = 1; | |||||
// | |||||
// pnlLeft | |||||
// | |||||
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left; | |||||
this.pnlLeft.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlLeft.Name = "pnlLeft"; | |||||
this.pnlLeft.Size = new System.Drawing.Size(10, 583); | |||||
this.pnlLeft.TabIndex = 0; | |||||
// | |||||
// frmSyncShow | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(943, 583); | |||||
this.Controls.Add(this.pnlAll); | |||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); | |||||
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.Name = "frmSyncShow"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
this.Text = "CNAS客户端程序"; | |||||
this.Load += new System.EventHandler(this.frmSyncShow_Load); | |||||
this.pnlAll.ResumeLayout(false); | |||||
this.pnlCenter.ResumeLayout(false); | |||||
this.pnlCenterCenter.ResumeLayout(false); | |||||
this.ResumeLayout(false); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.Panel pnlAll; | |||||
private System.Windows.Forms.Panel pnlRight; | |||||
private System.Windows.Forms.Panel pnlLeft; | |||||
private System.Windows.Forms.Panel pnlCenter; | |||||
private System.Windows.Forms.Panel pnlBottom; | |||||
private System.Windows.Forms.Panel pnlTop; | |||||
private System.Windows.Forms.Panel pnlCenterCenter; | |||||
private System.Windows.Forms.TabControl tabcSyncData; | |||||
private System.Windows.Forms.Panel pnlCenterBottom; | |||||
} | |||||
} | |||||
@@ -0,0 +1,53 @@ | |||||
using CNAS_DBSync; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.ComponentModel; | |||||
using System.Data; | |||||
using System.Drawing; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
using System.Xml.Serialization; | |||||
namespace CNAS_RunSync | |||||
{ | |||||
public partial class frmSyncShow : Form | |||||
{ | |||||
private log4net.ILog log = log4net.LogManager.GetLogger("frmSyncShow"); | |||||
public List<SyncInstrumentItemInfo> lstSyncInstrument = new List<SyncInstrumentItemInfo>(); | |||||
public frmSyncShow() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
private void frmSyncShow_Load(object sender, EventArgs e) | |||||
{ | |||||
//1.读取本地存储的仪器信息 | |||||
//2.每一个仪器创建一个TabPage | |||||
//3.每个TabPage页内加载一个ucSyncShow,展示这个仪器的详细信息和操作 | |||||
//读取本地文件中存储的配置信息 | |||||
XmlSerializer serializer = new XmlSerializer(lstSyncInstrument.GetType()); | |||||
FileStream stream = new FileStream(FileHelper.getBasePath() + "/Data/SyncInStrumentData.xml", FileMode.Open); | |||||
lstSyncInstrument = (List<SyncInstrumentItemInfo>)serializer.Deserialize(stream); | |||||
stream.Close(); | |||||
if (lstSyncInstrument.Count > 0) | |||||
{ | |||||
int index = 0; | |||||
foreach (var item in lstSyncInstrument) | |||||
{ | |||||
tabcSyncData.TabPages.Add(index.ToString(), item.Code); | |||||
ucSyncShow show = new ucSyncShow(item); | |||||
tabcSyncData.TabPages[index].Controls.Add(show); | |||||
show.Dock = DockStyle.Fill; | |||||
index++; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,163 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value> | |||||
AAABAAEAGBYAAAEAIADACAAAFgAAACgAAAAYAAAALAAAAAEAIAAAAAAAQAgAAK8PAACvDwAAAAAAAAAA | |||||
AACJaD0AiWg9EYloPR6JaD0diWg9HYloPR2JaD0diWg9HYloPR2JaD0diWg9HYloPR2JaD0diWg9HYlo | |||||
PR2JaD0diWg9HYloPR2JaD0diWg9HYloPR2JaD0eiWg9E4loPQCJaD0OiWg9poloPdyJaD3aiWg92olo | |||||
PdqJaD3aiWg92oloPdqJaD3aiWg92oloPdqJaD3aiWg92oloPdqJaD3aiWg92oloPdqJaD3aiWg92olo | |||||
PdqJaD3ciWg9q4loPRCJaD0YiWg91oloPayJaD1jiWg9ZYloPWWJaD1liWg9ZYloPWWJaD1liWg9ZYlo | |||||
PWWJaD1liWg9ZYloPWWJaD1liWg9ZYloPWWJaD1liWg9ZYloPWOJaD2jiWg91YloPRiJaD0YiWg91Ylo | |||||
PXCJaD0AiWg9AIloPQCJaD0AiWg9AIloPQCJaD0AiWg9AIloPQCJaD0AiWg9AIloPQCJaD0AiWg9AIlo | |||||
PQCJaD0AiWg9AIloPQCJaD1giWg904loPRiJaD0YiWg91YloPXOJaD0AAAAAAAAAAACJaD0AiWg9A4lo | |||||
PSiIZz01iGc8NIhnPDSIZzw0iGc8NIhnPTWJaD0qiWg9BIloPQAAAAAAAAAAAIloPQCJaD1iiWg904lo | |||||
PRiJaD0YiWg91YloPXOJaD0AAAAAAAAAAACJaD0AiWg9IoloPdSMaz7yjWw/8I1sP/CNbD/wjWw/8Ixr | |||||
PvGJaD3biWg9KoloPQAAAAAAAAAAAIloPQCJaD1iiWg904loPRiJaD0XiWg914loPXOJaD0AAAAAAAAA | |||||
AACJaD0AiGc9K4tqPuzBnln/2rZm/9i1Zf/YtWX/2bZm/8WiW/+Maz/yiGc9NYloPQAAAAAAAAAAAIlo | |||||
PQCJaD1jiWg91oloPRiJaD0JiWg9doloPTqJaD0AAAAAAAAAAACJaD0AiGc9K4tqPurVsmP/99N1//bS | |||||
dP/20nT/99N1/9u4Zv+NbD/wiGc8NIloPQAAAAAAAAAAAIloPQCJaD0xiWg9eIloPQuJaD0AiWg9AIlo | |||||
PQCJaD0AAAAAAAAAAACJaD0AiGc9K4tqPurUsWP/9tJ0//TQc//00HP/9tJ0/9q2Zv+NbD/wiGc8NIlo | |||||
PQAAAAAAAAAAAIloPQCJaD0AiWg9AIloPQCJaD0AiWg9AIloPQCJaD0AAAAAAAAAAACJaD0AiGc9K4tq | |||||
PurUsWP/9tJ0//TQc//00HP/9tJ0/9q2Zv+NbD/wiGc8NIloPQAAAAAAAAAAAIloPQCJaD0AiWg9AIlo | |||||
PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJaD0AiGc9K4tqPurUsWP/9tJ0//TQc//00HP/9tJ0/9q2 | |||||
Zv+NbD/wiGc8NIloPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AACJaD0AiGc9K4tqPurUsWP/9tJ0//TQc//00HP/9tJ0/9q2Zv+NbD/wiGc8NIloPQAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIloPQCJaD0AiWg9AIloPQCJaD0AiGc9KYtqPurUsWP/9tJ0//TQ | |||||
c//00HP/9tJ0/9q2Zv+NbD/wiGc8M4loPQCJaD0AiWg9AIloPQCJaD0AAAAAAAAAAAAAAAAAAAAAAIlo | |||||
PQCJaD0AiWg9EYloPSOJaD0giGc9SItqPu3UsWP/9tJ0//TQc//00HP/9tJ0/9q2Zv+NbD/yiGc9UIlo | |||||
PSCJaD0jiWg9EoloPQCJaD0AAAAAAAAAAAAAAAAAAAAAAIloPQCJaD0BiWg9jIloPemJaD3ki2o+6Y1s | |||||
P/3XtGT/9tJ0//TQc//00HP/9dF0/9y5Z/+Qb0D9i2k+6oppPeSJaD3piWg9mYloPQSJaD0AAAAAAAAA | |||||
AAAAAAAAAAAAAIloPQCJaD0AiWg9P4loPdGMaz7/s5FS/9SxY//uynD/9NBz//TQc//00HP/9NBz/+/M | |||||
cf/Ws2T/t5RU/41sP/+JaD3XiWg9SIloPQCJaD0AAAAAAAAAAAAAAAAAAAAAAIloPQCJaD0AiWg9AIlo | |||||
PSWJaD2ulXRD/8uoXv/yznL/9dFz//TQc//00HP/9dFz//PPc//PrGD/l3ZE/4loPbeJaD0riWg9AIlo | |||||
PQCJaD0AAAAAAAAAAAAAAAAAAAAAAAAAAACJaD0AiWg9AIloPQCJaD0Qh2Y8iY1rP/a5llX/7clv//XR | |||||
dP/10XT/7spw/72aV/+ObT/5h2Y8k4loPRWJaD0AiWg9AIloPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAiWg9AIloPQCJaD0Aimk+BIhnPGOJaD3lqYdN/+TAa//mw2z/rYtP/4ppPeqIZzxsimk9Bolo | |||||
PQCJaD0AiWg9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIloPQCJaD0AiWg9AIhn | |||||
PQCIZz0/iGc8zZt5Rv+de0f/iGc81IhnPUiHZjwAiWg9AIloPQCJaD0AAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiWg9AIloPQCJaD0AiWg9I4hnPKeHZzyuiWg9KYlo | |||||
PQCJaD0AiWg9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAIloPQCJaD0AiWg9AIloPQqJaD0MiWg9AIloPQCJaD0AAAAAAAAAAAAAAAAAAAAAAAAA | |||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAwAAwAMAAMADAADAAwAAwAMAAMADAA/AA/APwA | |||||
PwDAAAMAwAADAMAAAwDAAAMAwAADAOAABwDwAA8A+AAfAP4AfwD/AP8A | |||||
</value> | |||||
</data> | |||||
</root> |
@@ -0,0 +1,416 @@ | |||||
namespace CNAS_RunSync | |||||
{ | |||||
partial class ucSyncShow | |||||
{ | |||||
/// <summary> | |||||
/// 必需的设计器变量。 | |||||
/// </summary> | |||||
private System.ComponentModel.IContainer components = null; | |||||
/// <summary> | |||||
/// 清理所有正在使用的资源。 | |||||
/// </summary> | |||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
#region 组件设计器生成的代码 | |||||
/// <summary> | |||||
/// 设计器支持所需的方法 - 不要修改 | |||||
/// 使用代码编辑器修改此方法的内容。 | |||||
/// </summary> | |||||
private void InitializeComponent() | |||||
{ | |||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
this.pnlAll = new System.Windows.Forms.Panel(); | |||||
this.pnlCenter = new System.Windows.Forms.Panel(); | |||||
this.dgvSyncData = new System.Windows.Forms.DataGridView(); | |||||
this.pnlTop = new System.Windows.Forms.Panel(); | |||||
this.tableTop = new System.Windows.Forms.TableLayoutPanel(); | |||||
this.pnlSelect = new System.Windows.Forms.Panel(); | |||||
this.cbxAutoRun = new System.Windows.Forms.CheckBox(); | |||||
this.btnConfig = new System.Windows.Forms.Button(); | |||||
this.btnRunData = new System.Windows.Forms.Button(); | |||||
this.lblTitle = new System.Windows.Forms.Label(); | |||||
this.pnlRunData = new System.Windows.Forms.Panel(); | |||||
this.pnlConfig = new System.Windows.Forms.Panel(); | |||||
this.pnlText = new System.Windows.Forms.Panel(); | |||||
this.label3 = new System.Windows.Forms.Label(); | |||||
this.txtFind = new System.Windows.Forms.TextBox(); | |||||
this.combCondition = new System.Windows.Forms.ComboBox(); | |||||
this.label4 = new System.Windows.Forms.Label(); | |||||
this.pnlCheck = new System.Windows.Forms.Panel(); | |||||
this.pnlDate = new System.Windows.Forms.Panel(); | |||||
this.label2 = new System.Windows.Forms.Label(); | |||||
this.label1 = new System.Windows.Forms.Label(); | |||||
this.dtpSource = new System.Windows.Forms.DateTimePicker(); | |||||
this.dtpTarget = new System.Windows.Forms.DateTimePicker(); | |||||
this.lblColumn = new System.Windows.Forms.Label(); | |||||
this.cmbColumns = new System.Windows.Forms.ComboBox(); | |||||
this.btnFind = new System.Windows.Forms.Button(); | |||||
this.btnCancelFind = new System.Windows.Forms.Button(); | |||||
this.pnlAll.SuspendLayout(); | |||||
this.pnlCenter.SuspendLayout(); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvSyncData)).BeginInit(); | |||||
this.pnlTop.SuspendLayout(); | |||||
this.tableTop.SuspendLayout(); | |||||
this.pnlSelect.SuspendLayout(); | |||||
this.pnlConfig.SuspendLayout(); | |||||
this.pnlText.SuspendLayout(); | |||||
this.pnlDate.SuspendLayout(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// pnlAll | |||||
// | |||||
this.pnlAll.Controls.Add(this.pnlCenter); | |||||
this.pnlAll.Controls.Add(this.pnlTop); | |||||
this.pnlAll.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlAll.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlAll.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.pnlAll.Name = "pnlAll"; | |||||
this.pnlAll.Size = new System.Drawing.Size(772, 450); | |||||
this.pnlAll.TabIndex = 0; | |||||
// | |||||
// pnlCenter | |||||
// | |||||
this.pnlCenter.Controls.Add(this.dgvSyncData); | |||||
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlCenter.Location = new System.Drawing.Point(0, 82); | |||||
this.pnlCenter.Name = "pnlCenter"; | |||||
this.pnlCenter.Size = new System.Drawing.Size(772, 368); | |||||
this.pnlCenter.TabIndex = 2; | |||||
// | |||||
// dgvSyncData | |||||
// | |||||
this.dgvSyncData.AllowUserToAddRows = false; | |||||
this.dgvSyncData.BackgroundColor = System.Drawing.Color.White; | |||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; | |||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; | |||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
this.dgvSyncData.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; | |||||
this.dgvSyncData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
this.dgvSyncData.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.dgvSyncData.Location = new System.Drawing.Point(0, 0); | |||||
this.dgvSyncData.Name = "dgvSyncData"; | |||||
this.dgvSyncData.ReadOnly = true; | |||||
this.dgvSyncData.RowTemplate.Height = 23; | |||||
this.dgvSyncData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; | |||||
this.dgvSyncData.Size = new System.Drawing.Size(772, 368); | |||||
this.dgvSyncData.TabIndex = 0; | |||||
// | |||||
// pnlTop | |||||
// | |||||
this.pnlTop.Controls.Add(this.tableTop); | |||||
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; | |||||
this.pnlTop.Location = new System.Drawing.Point(0, 0); | |||||
this.pnlTop.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.pnlTop.Name = "pnlTop"; | |||||
this.pnlTop.Size = new System.Drawing.Size(772, 82); | |||||
this.pnlTop.TabIndex = 0; | |||||
// | |||||
// tableTop | |||||
// | |||||
this.tableTop.BackColor = System.Drawing.Color.White; | |||||
this.tableTop.ColumnCount = 3; | |||||
this.tableTop.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 95.77922F)); | |||||
this.tableTop.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 4.220779F)); | |||||
this.tableTop.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 463F)); | |||||
this.tableTop.Controls.Add(this.pnlSelect, 0, 0); | |||||
this.tableTop.Controls.Add(this.pnlRunData, 1, 0); | |||||
this.tableTop.Controls.Add(this.pnlConfig, 2, 0); | |||||
this.tableTop.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.tableTop.Location = new System.Drawing.Point(0, 0); | |||||
this.tableTop.Name = "tableTop"; | |||||
this.tableTop.RowCount = 1; | |||||
this.tableTop.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); | |||||
this.tableTop.Size = new System.Drawing.Size(772, 82); | |||||
this.tableTop.TabIndex = 4; | |||||
// | |||||
// pnlSelect | |||||
// | |||||
this.pnlSelect.Controls.Add(this.cbxAutoRun); | |||||
this.pnlSelect.Controls.Add(this.btnConfig); | |||||
this.pnlSelect.Controls.Add(this.btnRunData); | |||||
this.pnlSelect.Controls.Add(this.lblTitle); | |||||
this.pnlSelect.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlSelect.Location = new System.Drawing.Point(3, 3); | |||||
this.pnlSelect.Name = "pnlSelect"; | |||||
this.pnlSelect.Size = new System.Drawing.Size(289, 76); | |||||
this.pnlSelect.TabIndex = 0; | |||||
// | |||||
// cbxAutoRun | |||||
// | |||||
this.cbxAutoRun.AutoSize = true; | |||||
this.cbxAutoRun.Enabled = false; | |||||
this.cbxAutoRun.Location = new System.Drawing.Point(9, 48); | |||||
this.cbxAutoRun.Name = "cbxAutoRun"; | |||||
this.cbxAutoRun.Size = new System.Drawing.Size(99, 21); | |||||
this.cbxAutoRun.TabIndex = 2; | |||||
this.cbxAutoRun.Text = "启动自动执行"; | |||||
this.cbxAutoRun.UseVisualStyleBackColor = true; | |||||
// | |||||
// btnConfig | |||||
// | |||||
this.btnConfig.Location = new System.Drawing.Point(130, 44); | |||||
this.btnConfig.Name = "btnConfig"; | |||||
this.btnConfig.Size = new System.Drawing.Size(75, 25); | |||||
this.btnConfig.TabIndex = 1; | |||||
this.btnConfig.Text = "配置连接"; | |||||
this.btnConfig.UseVisualStyleBackColor = true; | |||||
this.btnConfig.Click += new System.EventHandler(this.btnConfig_Click); | |||||
// | |||||
// btnRunData | |||||
// | |||||
this.btnRunData.Location = new System.Drawing.Point(211, 44); | |||||
this.btnRunData.Name = "btnRunData"; | |||||
this.btnRunData.Size = new System.Drawing.Size(75, 25); | |||||
this.btnRunData.TabIndex = 0; | |||||
this.btnRunData.Text = "上传数据"; | |||||
this.btnRunData.UseVisualStyleBackColor = true; | |||||
this.btnRunData.Click += new System.EventHandler(this.btnRunData_Click); | |||||
// | |||||
// lblTitle | |||||
// | |||||
this.lblTitle.AutoSize = true; | |||||
this.lblTitle.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Bold); | |||||
this.lblTitle.Location = new System.Drawing.Point(6, 12); | |||||
this.lblTitle.Name = "lblTitle"; | |||||
this.lblTitle.Size = new System.Drawing.Size(119, 19); | |||||
this.lblTitle.TabIndex = 0; | |||||
this.lblTitle.Text = "当前仪器:XXXX"; | |||||
// | |||||
// pnlRunData | |||||
// | |||||
this.pnlRunData.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlRunData.Location = new System.Drawing.Point(298, 3); | |||||
this.pnlRunData.Name = "pnlRunData"; | |||||
this.pnlRunData.Size = new System.Drawing.Size(7, 76); | |||||
this.pnlRunData.TabIndex = 1; | |||||
// | |||||
// pnlConfig | |||||
// | |||||
this.pnlConfig.BackColor = System.Drawing.Color.White; | |||||
this.pnlConfig.Controls.Add(this.btnCancelFind); | |||||
this.pnlConfig.Controls.Add(this.pnlText); | |||||
this.pnlConfig.Controls.Add(this.pnlCheck); | |||||
this.pnlConfig.Controls.Add(this.pnlDate); | |||||
this.pnlConfig.Controls.Add(this.lblColumn); | |||||
this.pnlConfig.Controls.Add(this.cmbColumns); | |||||
this.pnlConfig.Controls.Add(this.btnFind); | |||||
this.pnlConfig.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
this.pnlConfig.Location = new System.Drawing.Point(311, 3); | |||||
this.pnlConfig.Name = "pnlConfig"; | |||||
this.pnlConfig.Size = new System.Drawing.Size(458, 76); | |||||
this.pnlConfig.TabIndex = 2; | |||||
// | |||||
// pnlText | |||||
// | |||||
this.pnlText.Controls.Add(this.label3); | |||||
this.pnlText.Controls.Add(this.txtFind); | |||||
this.pnlText.Controls.Add(this.combCondition); | |||||
this.pnlText.Controls.Add(this.label4); | |||||
this.pnlText.Location = new System.Drawing.Point(4, 124); | |||||
this.pnlText.Name = "pnlText"; | |||||
this.pnlText.Size = new System.Drawing.Size(451, 31); | |||||
this.pnlText.TabIndex = 7; | |||||
this.pnlText.Visible = false; | |||||
// | |||||
// label3 | |||||
// | |||||
this.label3.AutoSize = true; | |||||
this.label3.Location = new System.Drawing.Point(238, 8); | |||||
this.label3.Name = "label3"; | |||||
this.label3.Size = new System.Drawing.Size(20, 17); | |||||
this.label3.TabIndex = 9; | |||||
this.label3.Text = "值"; | |||||
// | |||||
// txtFind | |||||
// | |||||
this.txtFind.Location = new System.Drawing.Point(264, 5); | |||||
this.txtFind.Name = "txtFind"; | |||||
this.txtFind.Size = new System.Drawing.Size(156, 23); | |||||
this.txtFind.TabIndex = 8; | |||||
// | |||||
// combCondition | |||||
// | |||||
this.combCondition.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; | |||||
this.combCondition.FormattingEnabled = true; | |||||
this.combCondition.Location = new System.Drawing.Point(53, 4); | |||||
this.combCondition.Name = "combCondition"; | |||||
this.combCondition.Size = new System.Drawing.Size(167, 25); | |||||
this.combCondition.TabIndex = 7; | |||||
// | |||||
// label4 | |||||
// | |||||
this.label4.AutoSize = true; | |||||
this.label4.Location = new System.Drawing.Point(9, 8); | |||||
this.label4.Name = "label4"; | |||||
this.label4.Size = new System.Drawing.Size(44, 17); | |||||
this.label4.TabIndex = 6; | |||||
this.label4.Text = "条件:"; | |||||
// | |||||
// pnlCheck | |||||
// | |||||
this.pnlCheck.Location = new System.Drawing.Point(4, 39); | |||||
this.pnlCheck.Name = "pnlCheck"; | |||||
this.pnlCheck.Size = new System.Drawing.Size(451, 34); | |||||
this.pnlCheck.TabIndex = 8; | |||||
// | |||||
// pnlDate | |||||
// | |||||
this.pnlDate.Controls.Add(this.label2); | |||||
this.pnlDate.Controls.Add(this.label1); | |||||
this.pnlDate.Controls.Add(this.dtpSource); | |||||
this.pnlDate.Controls.Add(this.dtpTarget); | |||||
this.pnlDate.Location = new System.Drawing.Point(4, 86); | |||||
this.pnlDate.Name = "pnlDate"; | |||||
this.pnlDate.Size = new System.Drawing.Size(451, 32); | |||||
this.pnlDate.TabIndex = 6; | |||||
this.pnlDate.Visible = false; | |||||
// | |||||
// label2 | |||||
// | |||||
this.label2.AutoSize = true; | |||||
this.label2.Location = new System.Drawing.Point(238, 9); | |||||
this.label2.Name = "label2"; | |||||
this.label2.Size = new System.Drawing.Size(20, 17); | |||||
this.label2.TabIndex = 7; | |||||
this.label2.Text = "到"; | |||||
// | |||||
// label1 | |||||
// | |||||
this.label1.AutoSize = true; | |||||
this.label1.Location = new System.Drawing.Point(21, 9); | |||||
this.label1.Name = "label1"; | |||||
this.label1.Size = new System.Drawing.Size(20, 17); | |||||
this.label1.TabIndex = 6; | |||||
this.label1.Text = "从"; | |||||
// | |||||
// dtpSource | |||||
// | |||||
this.dtpSource.CustomFormat = "yyyy-MM-dd HH:mm"; | |||||
this.dtpSource.Format = System.Windows.Forms.DateTimePickerFormat.Custom; | |||||
this.dtpSource.Location = new System.Drawing.Point(53, 6); | |||||
this.dtpSource.Name = "dtpSource"; | |||||
this.dtpSource.Size = new System.Drawing.Size(167, 23); | |||||
this.dtpSource.TabIndex = 2; | |||||
this.dtpSource.Value = new System.DateTime(2019, 6, 15, 0, 0, 0, 0); | |||||
// | |||||
// dtpTarget | |||||
// | |||||
this.dtpTarget.CustomFormat = "yyyy-MM-dd HH:mm"; | |||||
this.dtpTarget.Format = System.Windows.Forms.DateTimePickerFormat.Custom; | |||||
this.dtpTarget.Location = new System.Drawing.Point(264, 6); | |||||
this.dtpTarget.Name = "dtpTarget"; | |||||
this.dtpTarget.Size = new System.Drawing.Size(156, 23); | |||||
this.dtpTarget.TabIndex = 3; | |||||
this.dtpTarget.Value = new System.DateTime(2019, 6, 30, 0, 0, 0, 0); | |||||
// | |||||
// lblColumn | |||||
// | |||||
this.lblColumn.AutoSize = true; | |||||
this.lblColumn.Location = new System.Drawing.Point(24, 13); | |||||
this.lblColumn.Name = "lblColumn"; | |||||
this.lblColumn.Size = new System.Drawing.Size(32, 17); | |||||
this.lblColumn.TabIndex = 5; | |||||
this.lblColumn.Text = "列:"; | |||||
// | |||||
// cmbColumns | |||||
// | |||||
this.cmbColumns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; | |||||
this.cmbColumns.FormattingEnabled = true; | |||||
this.cmbColumns.Location = new System.Drawing.Point(57, 9); | |||||
this.cmbColumns.Name = "cmbColumns"; | |||||
this.cmbColumns.Size = new System.Drawing.Size(167, 25); | |||||
this.cmbColumns.TabIndex = 4; | |||||
this.cmbColumns.SelectedIndexChanged += new System.EventHandler(this.cmbColumns_SelectedIndexChanged); | |||||
// | |||||
// btnFind | |||||
// | |||||
this.btnFind.Location = new System.Drawing.Point(268, 9); | |||||
this.btnFind.Name = "btnFind"; | |||||
this.btnFind.Size = new System.Drawing.Size(75, 25); | |||||
this.btnFind.TabIndex = 1; | |||||
this.btnFind.Text = "查询"; | |||||
this.btnFind.UseVisualStyleBackColor = true; | |||||
this.btnFind.Click += new System.EventHandler(this.btnFind_Click); | |||||
// | |||||
// btnCancelFind | |||||
// | |||||
this.btnCancelFind.Location = new System.Drawing.Point(349, 9); | |||||
this.btnCancelFind.Name = "btnCancelFind"; | |||||
this.btnCancelFind.Size = new System.Drawing.Size(75, 25); | |||||
this.btnCancelFind.TabIndex = 9; | |||||
this.btnCancelFind.Text = "取消查询"; | |||||
this.btnCancelFind.UseVisualStyleBackColor = true; | |||||
this.btnCancelFind.Click += new System.EventHandler(this.btnCancelFind_Click); | |||||
// | |||||
// ucSyncShow | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.Controls.Add(this.pnlAll); | |||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); | |||||
this.Name = "ucSyncShow"; | |||||
this.Size = new System.Drawing.Size(772, 450); | |||||
this.Load += new System.EventHandler(this.ucSyncShow_Load); | |||||
this.pnlAll.ResumeLayout(false); | |||||
this.pnlCenter.ResumeLayout(false); | |||||
((System.ComponentModel.ISupportInitialize)(this.dgvSyncData)).EndInit(); | |||||
this.pnlTop.ResumeLayout(false); | |||||
this.tableTop.ResumeLayout(false); | |||||
this.pnlSelect.ResumeLayout(false); | |||||
this.pnlSelect.PerformLayout(); | |||||
this.pnlConfig.ResumeLayout(false); | |||||
this.pnlConfig.PerformLayout(); | |||||
this.pnlText.ResumeLayout(false); | |||||
this.pnlText.PerformLayout(); | |||||
this.pnlDate.ResumeLayout(false); | |||||
this.pnlDate.PerformLayout(); | |||||
this.ResumeLayout(false); | |||||
} | |||||
#endregion | |||||
private System.Windows.Forms.Panel pnlAll; | |||||
private System.Windows.Forms.Panel pnlTop; | |||||
private System.Windows.Forms.Label lblTitle; | |||||
private System.Windows.Forms.Panel pnlCenter; | |||||
private System.Windows.Forms.DataGridView dgvSyncData; | |||||
private System.Windows.Forms.TableLayoutPanel tableTop; | |||||
private System.Windows.Forms.Panel pnlSelect; | |||||
private System.Windows.Forms.Button btnFind; | |||||
private System.Windows.Forms.DateTimePicker dtpTarget; | |||||
private System.Windows.Forms.DateTimePicker dtpSource; | |||||
private System.Windows.Forms.Panel pnlRunData; | |||||
private System.Windows.Forms.Button btnRunData; | |||||
private System.Windows.Forms.Panel pnlConfig; | |||||
private System.Windows.Forms.Button btnConfig; | |||||
private System.Windows.Forms.CheckBox cbxAutoRun; | |||||
private System.Windows.Forms.Label lblColumn; | |||||
private System.Windows.Forms.ComboBox cmbColumns; | |||||
private System.Windows.Forms.Panel pnlText; | |||||
private System.Windows.Forms.Label label4; | |||||
private System.Windows.Forms.Panel pnlDate; | |||||
private System.Windows.Forms.Label label2; | |||||
private System.Windows.Forms.Label label1; | |||||
private System.Windows.Forms.TextBox txtFind; | |||||
private System.Windows.Forms.ComboBox combCondition; | |||||
private System.Windows.Forms.Panel pnlCheck; | |||||
private System.Windows.Forms.Label label3; | |||||
private System.Windows.Forms.Button btnCancelFind; | |||||
} | |||||
} |
@@ -0,0 +1,522 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.ComponentModel; | |||||
using System.Drawing; | |||||
using System.Data; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
using CNAS_DBSync; | |||||
using Newtonsoft.Json; | |||||
namespace CNAS_RunSync | |||||
{ | |||||
public partial class ucSyncShow : UserControl | |||||
{ | |||||
private log4net.ILog log = log4net.LogManager.GetLogger("ucSyncShow"); | |||||
private SyncInstrumentItemInfo syncInstrumentItem = new SyncInstrumentItemInfo(); | |||||
private Dictionary<string, DataTable> dictSourceTables = new Dictionary<string, DataTable>(); | |||||
private Dictionary<string, DataRow> dictSource = new Dictionary<string, DataRow>(); | |||||
private Dictionary<string, Type> DictComboBox = new Dictionary<string, Type>(); //ComboBox数据源 | |||||
private List<string> lstIntOrDouble = new List<string>() {"等于","不等于","大于","小于","不大于","不小于" }; | |||||
private List<string> lstText = new List<string>() { "等于", "不等于", "包含", "不包含"}; | |||||
private Color FinedBackColor = Color.LightCyan; | |||||
//需要存在一个仪器才能正常显示数据 | |||||
public ucSyncShow(SyncInstrumentItemInfo syncInstrumentItem) | |||||
{ | |||||
InitializeComponent(); | |||||
dgvSyncData.AutoGenerateColumns = false; | |||||
dgvSyncData.RowHeadersVisible = false; | |||||
this.syncInstrumentItem = syncInstrumentItem; | |||||
} | |||||
private void ucSyncShow_Load(object sender, EventArgs e) | |||||
{ | |||||
BindData(); | |||||
} | |||||
private void BindData() | |||||
{ | |||||
if (this.syncInstrumentItem == null) return; | |||||
if (syncInstrumentItem.LstSyncPramas == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo.LocalPath == null) return; | |||||
if (syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType == DataSourceType.None) return; | |||||
DictComboBox.Clear(); | |||||
dictSource.Clear(); | |||||
dictSourceTables.Clear(); | |||||
//加载相关数据 | |||||
//1.TableLayout中相关 | |||||
this.lblTitle.Text = string.Format("当前仪器:【{0}】", syncInstrumentItem.Code); | |||||
//2.datagridview中绑定数据(绑定的是从数据源中读取的数据) | |||||
//2.1 读取所有数据【会额外读取多余的数据,但如果后面用户想要维护更多映射字段,可以方便新增】 | |||||
//2.2 获取映射表中的数据 | |||||
InstrumentData instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrumentItem.SyncInstrumentDSInfo.InstrumentDataSourceType, new object[] { syncInstrumentItem.SyncInstrumentDSInfo.LocalPath, syncInstrumentItem.SyncInstrumentDSInfo.UserId, syncInstrumentItem.SyncInstrumentDSInfo.UserPwd }); | |||||
dictSourceTables = instrumentData.GetInstrumentData(); | |||||
//2.2.1 根据映射表,创建datagridviewcolumn/和绑定数据列 | |||||
if (syncInstrumentItem.LstSyncPramas.Count <= 0) return; | |||||
foreach (var item in syncInstrumentItem.LstSyncPramas) | |||||
{ | |||||
AddDatagridColumn(dgvSyncData, item.SourceField, item.SourceField, 100); | |||||
} | |||||
AddDatagridColumn(dgvSyncData, "GridGuid", "GridGuid", 100, false); | |||||
//2.2.2 根据数据源,构建datagridviewcell | |||||
if (!dictSourceTables.ContainsKey(syncInstrumentItem.LstSyncPramas[0].SourceTable)) return; | |||||
DataTable dtSource = dictSourceTables[syncInstrumentItem.LstSyncPramas[0].SourceTable]; | |||||
foreach (DataRow dr in dtSource.Rows) | |||||
{ | |||||
DataGridViewRow dataGridViewRow = new DataGridViewRow(); | |||||
foreach (DataGridViewColumn dataGridViewColumn in dgvSyncData.Columns) | |||||
{ | |||||
if (dtSource.Columns.Contains(dataGridViewColumn.Name)) | |||||
AddDataTextCell(dataGridViewRow, dataGridViewColumn, dr); | |||||
} | |||||
//添加GUID值 | |||||
string strGuid = Guid.NewGuid().ToString(); | |||||
DataGridViewTextBoxCell txtCell = new DataGridViewTextBoxCell | |||||
{ | |||||
Value = strGuid | |||||
}; | |||||
dataGridViewRow.Cells.Add(txtCell); | |||||
dgvSyncData.Rows.Add(dataGridViewRow); | |||||
dictSource.Add(strGuid, dr); | |||||
} | |||||
//3.初始化查询相关内容 | |||||
//3.1 绑定Combobox数据源 | |||||
foreach (DataColumn dc in dtSource.Columns) | |||||
{ | |||||
if (syncInstrumentItem.LstSyncPramas.Where(s => s.SourceField == dc.ColumnName).LongCount<SyncParamasInfo>() > 0) | |||||
DictComboBox.Add(dc.ColumnName, dc.DataType); | |||||
} | |||||
BindingSource bsComboBox = new BindingSource | |||||
{ | |||||
DataSource = DictComboBox | |||||
}; | |||||
cmbColumns.DataSource = bsComboBox; | |||||
cmbColumns.ValueMember = "Key"; | |||||
cmbColumns.DisplayMember = "Key"; | |||||
} | |||||
private void AddDatagridColumn(DataGridView dgvShow,string strColumnName,string strColumnHeaderText,int Width,bool bVisible=true) | |||||
{ | |||||
DataGridViewColumn Column = new DataGridViewColumn() | |||||
{ | |||||
Name = strColumnName, | |||||
HeaderText = strColumnHeaderText, | |||||
Width = Width, | |||||
Visible = bVisible, | |||||
CellTemplate = new DataGridViewTextBoxCell() | |||||
}; | |||||
//设置文本对齐方式 | |||||
Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; | |||||
//设置该列背景颜色 | |||||
//Column.DefaultCellStyle.BackColor = Color.Red; | |||||
dgvShow.Columns.Add(Column); | |||||
} | |||||
private void AddDataTextCell(DataGridViewRow dataGridViewRow, DataGridViewColumn dataGridViewColumn,DataRow dr) | |||||
{ | |||||
DataGridViewTextBoxCell txtCell = new DataGridViewTextBoxCell(); | |||||
txtCell.Value = Convert.ToString(dr[dataGridViewColumn.Name]); | |||||
dataGridViewRow.Cells.Add(txtCell); | |||||
} | |||||
private void btnRunData_Click(object sender, EventArgs e) | |||||
{ | |||||
//根据映射信息上传数据到数据库中 | |||||
//DataTable dtSource = dictSourceTables[syncInstrumentItem.LstSyncPramas[0].SourceTable]; | |||||
//组织上传数据 | |||||
if (dgvSyncData.Columns.Count <= 0) return; | |||||
DataTable dtReadySource = dictSourceTables[syncInstrumentItem.LstSyncPramas[0].SourceTable].Clone(); | |||||
foreach (DataGridViewRow dgvRow in dgvSyncData.Rows) | |||||
{ | |||||
if (dgvRow.DefaultCellStyle.BackColor == FinedBackColor) | |||||
{ | |||||
string strGuid = dgvRow.Cells["GridGuid"].Value.ToString(); | |||||
if (!dictSource.ContainsKey(strGuid)) continue; | |||||
DataRow dr = dictSource[strGuid]; | |||||
DataRow drReady = dtReadySource.NewRow(); | |||||
foreach (DataColumn dc in dtReadySource.Columns) | |||||
{ | |||||
if (dr.Table.Columns.Contains(dc.ColumnName)) | |||||
drReady[dc.ColumnName] = dr[dc.ColumnName]; | |||||
} | |||||
dtReadySource.Rows.Add(drReady); | |||||
} | |||||
} | |||||
if (dtReadySource.Rows.Count <= 0) | |||||
MessageBox.Show("未能获得上传数据,请查询筛选后重试!"); | |||||
RunUpLoad(dtReadySource); | |||||
} | |||||
private void RunUpLoad(DataTable dtReadySource) | |||||
{ | |||||
//根据映射字段获取准备上传的所有数据 | |||||
if (dtReadySource == null || dtReadySource.Rows.Count <= 0) return; | |||||
//构建准备插入的数据 | |||||
DataTable dtTarget = CnasDataOperationFact.CnasDataOperation().GetCNASTablesStruct(syncInstrumentItem.LstSyncPramas[0].TargetTable, syncInstrumentItem); | |||||
if (dtTarget.Columns.Count <= 0) | |||||
{ | |||||
MessageBox.Show("未能成功读取CNAS数据库列,请检查数据库配置。"); | |||||
return; | |||||
} | |||||
string strErrorMsg = ""; | |||||
foreach (DataRow drSource in dtReadySource.Rows) | |||||
{ | |||||
DataRow drNewTarget = dtTarget.NewRow(); | |||||
//遍历映射表,把所有字段插入到目标表中 | |||||
foreach (var item in syncInstrumentItem.LstSyncPramas) | |||||
{ | |||||
var strSourceField = item.SourceField; | |||||
var strTargetField = item.TargetField; | |||||
//当列名存在于数据表中时才能继续 | |||||
if (dtReadySource.Columns.Contains(strSourceField) && dtTarget.Columns.Contains(strTargetField)) | |||||
{ | |||||
strErrorMsg=TestConvertValueToTarget(drNewTarget,drSource,strTargetField,strSourceField); | |||||
if (strErrorMsg != "") | |||||
{ | |||||
MessageBox.Show(string.Format("发生数据转换错误,请重新配置映射字段或修改字段值。错误信息如下:{0}",strErrorMsg)); | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
dtTarget.Rows.Add(drNewTarget); | |||||
if (strErrorMsg != "") break; | |||||
} | |||||
if (strErrorMsg != "") return; | |||||
CnasDataCheck check = new CnasDataCheck | |||||
{ | |||||
DtReadyInsert = dtTarget, | |||||
SyncInstrumentItem = syncInstrumentItem, | |||||
StrTableName = syncInstrumentItem.LstSyncPramas[0].TargetTable | |||||
}; | |||||
check.CheckData(); | |||||
if (check.LstIllegalMsg != null && check.LstIllegalMsg.Count > 0) | |||||
{ | |||||
var item=syncInstrumentItem.LstSyncPramas.Where(s => s.TargetField == check.LstIllegalMsg[0].ColumnName).ToList<SyncParamasInfo>(); | |||||
if (item.Count == 1) | |||||
{ | |||||
MessageBox.Show(string.Format("数据不满足上传条件,请修改后再上传。错误数据:当前列名【{0}】,列值【{1}】", item[0].SourceField, check.LstIllegalMsg[0].ColumnValue)); | |||||
} | |||||
else | |||||
{ | |||||
MessageBox.Show(string.Format("数据不满足上传条件,请修改后再上传。错误数据:CNAS列名【{0}】,列值【{1}】", check.LstIllegalMsg[0].ColumnName, check.LstIllegalMsg[0].ColumnValue)); | |||||
} | |||||
return; | |||||
} | |||||
//逐行执行插入 | |||||
List<DataRow> lstError = new List<DataRow>(); | |||||
ProgressBarService.CreateBarForm("CNAS客户端上传", "上传数据...", dtTarget.Rows.Count, false, false, false); | |||||
int SuccessCount = 0; | |||||
foreach (DataRow dr in dtTarget.Rows) | |||||
{ | |||||
dr.AcceptChanges(); | |||||
int iReturn = CnasDataOperationFact.CnasDataOperation().InsertDataToCNASTable(dr.Table, syncInstrumentItem); | |||||
if (iReturn > 0) //此时正常存储 | |||||
{ | |||||
SuccessCount++; | |||||
ProgressBarService.UpdateProgress(SuccessCount); | |||||
} | |||||
else //此时出现问题 | |||||
{ | |||||
lstError.Add(dr); | |||||
} | |||||
} | |||||
ProgressBarService.CloseBarForm(); | |||||
if (lstError.Count <= 0) | |||||
MessageBox.Show("上传完成!"); | |||||
else | |||||
{ | |||||
log.ErrorFormat("未成功上传的数据如下:{0}", ListToString(lstError)); | |||||
MessageBox.Show("上传过程中发生异常,存在部分数据未成功上传,请联系管理员!"); | |||||
} | |||||
} | |||||
private string TestConvertValueToTarget(DataRow drTarget, DataRow drSource, string strTargetColumn,string strSourceColumn) | |||||
{ | |||||
string strErrorMsg = ""; | |||||
try | |||||
{ | |||||
drTarget[strTargetColumn] = drSource[strSourceColumn]; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
log.Error(ex.Message); | |||||
strErrorMsg = ex.Message; | |||||
} | |||||
return strErrorMsg; | |||||
} | |||||
private string ListToString(List<DataRow> lst) | |||||
{ | |||||
return JsonConvert.SerializeObject(lst); | |||||
} | |||||
private List<DataRow> StringToList(string strList) | |||||
{ | |||||
return JsonConvert.DeserializeObject<List<DataRow>>(strList); | |||||
} | |||||
private void cmbColumns_SelectedIndexChanged(object sender, EventArgs e) | |||||
{ | |||||
if (cmbColumns.SelectedItem == null) return; | |||||
KeyValuePair<string, Type> obj = (KeyValuePair<string, Type>)cmbColumns.SelectedItem; | |||||
if (DictComboBox.ContainsKey(obj.Key)) | |||||
{ | |||||
Type selectType = DictComboBox[obj.Key]; | |||||
switch (selectType.ToString()) | |||||
{ | |||||
case "System.DateTime": | |||||
UseDateTimeControl(); | |||||
break; | |||||
case "System.Double": | |||||
case "System.Int64": | |||||
case "System.Int32": | |||||
UseNormalControl(); | |||||
//绑定条件ComboBox | |||||
combCondition.DataSource = lstIntOrDouble ; | |||||
break; | |||||
case "System.Byte[]": | |||||
case "System.String": | |||||
default: | |||||
UseNormalControl(); | |||||
//绑定条件ComboBox | |||||
combCondition.DataSource = lstText; | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 使用时间类型专用的查询控件组 | |||||
/// </summary> | |||||
private void UseDateTimeControl() | |||||
{ | |||||
if (pnlCheck.Controls.Contains(pnlText)) | |||||
pnlCheck.Controls.Remove(pnlText); | |||||
if (!pnlCheck.Controls.Contains(pnlDate)) | |||||
{ | |||||
pnlCheck.Controls.Add(pnlDate); | |||||
pnlDate.Visible = true; | |||||
pnlDate.Dock = DockStyle.Fill; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 使用标准的查询控件组 | |||||
/// </summary> | |||||
private void UseNormalControl() | |||||
{ | |||||
if (pnlCheck.Controls.Contains(pnlDate)) | |||||
pnlCheck.Controls.Remove(pnlDate); | |||||
if (!pnlCheck.Controls.Contains(pnlText)) | |||||
{ | |||||
pnlCheck.Controls.Add(pnlText); | |||||
pnlText.Visible = true; | |||||
pnlText.Dock = DockStyle.Fill; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查询满足满足条件的项 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
private void btnFind_Click(object sender, EventArgs e) | |||||
{ | |||||
if (cmbColumns.SelectedValue == null) return; | |||||
//1.合法性检测 | |||||
if (DictComboBox[cmbColumns.SelectedValue.ToString()].ToString().Equals("System.DateTime")) | |||||
{ | |||||
if (dtpTarget.Value < dtpSource.Value) | |||||
{ | |||||
MessageBox.Show("查询时间需要一个有效的时间范围!"); | |||||
return; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
if (this.txtFind.Text.Trim() == "") //为空 认为是取消查询 | |||||
{ | |||||
btnCancelFind_Click(sender, e); | |||||
return; | |||||
} | |||||
} | |||||
//2.将datagridview中满足条件的项修改背景色 | |||||
//2.1 判断当前显示的datagridview是否含有旧的查询数据 | |||||
//2.2 将满足条件的项背景色改为特殊颜色 | |||||
foreach (DataGridViewRow dgvrow in dgvSyncData.Rows) | |||||
{ | |||||
dgvrow.DefaultCellStyle.BackColor = Color.White; | |||||
//查询列的当前值 | |||||
string strGuid = dgvrow.Cells["GridGuid"].Value.ToString(); | |||||
string strValue = dgvrow.Cells[cmbColumns.SelectedValue.ToString()].Value.ToString(); | |||||
//判断是否满足条件 | |||||
if (CheckMatchCondition(strValue)) | |||||
{ | |||||
dgvrow.DefaultCellStyle.BackColor = FinedBackColor; | |||||
} | |||||
} | |||||
} | |||||
private bool CheckMatchCondition(string strValue) | |||||
{ | |||||
if (DictComboBox[cmbColumns.SelectedValue.ToString()].ToString().Equals("System.DateTime")) | |||||
{ | |||||
DateTime dt= DateTime.Now; | |||||
if (!DateTime.TryParse(strValue, out dt)) return false; | |||||
DateTime dtSource = dtpSource.Value; | |||||
DateTime dtTarget = dtpTarget.Value; | |||||
DateTime dtValue = dt; | |||||
if (dt >= dtSource && dt <= dtTarget) | |||||
return true; | |||||
else | |||||
return false; | |||||
} | |||||
else | |||||
{ | |||||
string strFindText = this.txtFind.Text.ToString(); | |||||
bool bReturn = false; | |||||
switch (combCondition.SelectedValue.ToString()) | |||||
{ | |||||
case "等于": | |||||
bReturn=strValue == strFindText ? true : false; | |||||
break; | |||||
case "不等于": | |||||
bReturn = strValue != strFindText ? true: false; | |||||
break; | |||||
case "包含": | |||||
bReturn = strValue.Contains(strFindText) ? true : false; | |||||
break; | |||||
case "不包含": | |||||
bReturn = !strValue.Contains(strFindText) ? true : false; | |||||
break; | |||||
case "大于": | |||||
bReturn = Convert.ToDouble(strValue)>Convert.ToDouble(strFindText) ? true : false; | |||||
break; | |||||
case "不小于": | |||||
bReturn = Convert.ToDouble(strValue) >= Convert.ToDouble(strFindText) ? true : false; | |||||
break; | |||||
case "小于": | |||||
bReturn = Convert.ToDouble(strValue) < Convert.ToDouble(strFindText) ? true : false; | |||||
break; | |||||
case "不大于": | |||||
bReturn = Convert.ToDouble(strValue) <= Convert.ToDouble(strFindText) ? true : false; | |||||
break; | |||||
} | |||||
return bReturn; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 获得查询语句(非日期类型) | |||||
/// </summary> | |||||
/// <param name="strColumnName"></param> | |||||
/// <param name="strColumnType"></param> | |||||
/// <param name="strCondition"></param> | |||||
/// <param name="strValue"></param> | |||||
/// <returns></returns> | |||||
private string GetSelectString(string strColumnName,string strCondition, string strValue) | |||||
{ | |||||
string strCondi = ""; | |||||
switch (strCondition) | |||||
{ | |||||
case "等于": | |||||
strCondi = "="; | |||||
break; | |||||
case "不等于": | |||||
strCondi = "<>"; | |||||
break; | |||||
case "包含": | |||||
strCondi = "like"; | |||||
break; | |||||
case "不包含": | |||||
strCondi = "not like"; | |||||
break; | |||||
case "大于": | |||||
strCondi = ">"; | |||||
break; | |||||
case "不小于": | |||||
strCondi = ">="; | |||||
break; | |||||
case "小于": | |||||
strCondi = "<"; | |||||
break; | |||||
case "不大于": | |||||
strCondi = "<="; | |||||
break; | |||||
} | |||||
if (strCondi == "like" || strCondi == "not like") | |||||
return string.Format("{0} {1} '%{2}%'", strColumnName, strCondi, strValue); | |||||
else | |||||
return string.Format("{0} {1} '{2}'",strColumnName,strCondi,strValue); | |||||
} | |||||
private string GetDateSelectString(string strColumnName, DateTime dtSource, DateTime dtTarget) | |||||
{ | |||||
string strSource = dtSource.ToString(); | |||||
string strTarget = dtTarget.ToString(); | |||||
return string.Format("{0}>='{1}' and {0}<='{2}'",strColumnName,strSource,strTarget) ; | |||||
} | |||||
private void btnConfig_Click(object sender, EventArgs e) | |||||
{ | |||||
frmSyncParams frmSyncConfig = new frmSyncParams(syncInstrumentItem); | |||||
frmSyncConfig.ParamsChangedDelegate = delegate (SyncInstrumentItemInfo instrumentItemInfo) | |||||
{ | |||||
syncInstrumentItem = instrumentItemInfo; | |||||
//重新绑定数据 | |||||
dgvSyncData.DataSource = null; | |||||
dgvSyncData.Rows.Clear(); | |||||
dgvSyncData.Columns.Clear(); | |||||
combCondition.DataSource = null; | |||||
cmbColumns.DataSource = null; | |||||
BindData(); | |||||
}; | |||||
frmSyncConfig.ShowDialog(); | |||||
} | |||||
private void btnCancelFind_Click(object sender, EventArgs e) | |||||
{ | |||||
foreach (DataGridViewRow dgvrow in dgvSyncData.Rows) | |||||
{ | |||||
if (dgvrow.DefaultCellStyle.BackColor != Color.White) | |||||
dgvrow.DefaultCellStyle.BackColor = Color.White; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,120 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -0,0 +1,58 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<connectionStrings> | |||||
<add name="CoreDb" connectionString="Driver={IBM DB2 ODBC DRIVER};DataBase=SAMPLE; HostName=127.0.0.1; Protocol=TCPIP;Port=50000;Uid=db2admin;Pwd=123" /> | |||||
</connectionStrings> | |||||
<appSettings> | |||||
<add key="TargetDBType" value="MySQL" /> | |||||
</appSettings> | |||||
<entityFramework> | |||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> | |||||
<parameters> | |||||
<parameter value="mssqllocaldb" /> | |||||
</parameters> | |||||
</defaultConnectionFactory> | |||||
<providers> | |||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> | |||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> | |||||
</providers> | |||||
</entityFramework> | |||||
<system.data> | |||||
<DbProviderFactories> | |||||
<remove invariant="System.Data.SQLite.EF6" /> | |||||
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> | |||||
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories> | |||||
</system.data> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
</configuration> |
@@ -0,0 +1,40 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<configSections> | |||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||||
</configSections> | |||||
<appSettings> | |||||
<add key="TargetDBType" value="MySQL" /> | |||||
</appSettings> | |||||
<log4net> | |||||
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> | |||||
<!-- Set root logger level to ERROR and its appenders --> | |||||
<root> | |||||
<level value="ALL" /> | |||||
<appender-ref ref="SysAppender" /> | |||||
</root> | |||||
<!-- Print only messages of level DEBUG or above in the packages --> | |||||
<logger name="WindowsFormLogger"> | |||||
<level value="DEBUG" /> | |||||
</logger> | |||||
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> | |||||
<param name="File" value="Log/" /> | |||||
<param name="AppendToFile" value="true" /> | |||||
<param name="RollingStyle" value="Date" /> | |||||
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> | |||||
<param name="StaticLogFileName" value="false" /> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> | |||||
<layout type="log4net.Layout.PatternLayout,log4net"> | |||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> | |||||
</layout> | |||||
</appender> | |||||
</log4net> | |||||
<startup> | |||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> | |||||
</startup> | |||||
</configuration> |
@@ -0,0 +1,326 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<ArrayOfSyncInstrumentItemInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>a2065a7f-62fb-4f5d-8a94-c321b896cf53</GUID> | |||||
<Code>LDD-1(Excel)</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>Excel</InstrumentDataSourceType> | |||||
<LocalPath>C:\Users\Li\Desktop\水分仪模拟数据.xls</LocalPath> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost>192.168.1.109</DBHost> | |||||
<DBName>world</DBName> | |||||
<DBUser>Li</DBUser> | |||||
<DBPwd>123456</DBPwd> | |||||
<DBPort>3306</DBPort> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SerialNumber</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>PLANTCODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleID</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>COAL_CODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>SampleName</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>TEST_DATE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Content</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>STANDARD_NAME</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Method</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>STANDARD_ID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Tare</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>EXAMINE_METHOD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Sample</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>EMPERATURE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Leftover</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>HUMIDITY</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Calibration</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_ID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Moisture</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_NUMBER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>TypeFlag</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_BEFORE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>BeginDate</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_AFTER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Operator</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_NUMBER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Memo</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_BEFORE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>EndDate</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_AFTER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Numbering</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_AAD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Temperature</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_MAD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>KeepTime</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_AD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Precision</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>REMARKS</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>IntervalTime</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>INSPECTOR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Times</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AUDITOR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>Tray</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>INSPECTORID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>TestResult</SourceTable> | |||||
<SourceField>CountNumber</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AUDITORID</TargetField> | |||||
</SyncParamasInfo> | |||||
</LstSyncPramas> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>0531cd1a-8d7d-491f-b086-0f3a92d91964</GUID> | |||||
<Code>SAA-2(Access)</Code> | |||||
<LstSyncPramas /> | |||||
</SyncInstrumentItemInfo> | |||||
<SyncInstrumentItemInfo> | |||||
<GUID>27ec3bbc-7604-48df-974b-dac3e871b817</GUID> | |||||
<Code>SAA-3(SQLite)</Code> | |||||
<SyncInstrumentDSInfo> | |||||
<InstrumentDataSourceType>SQLLite</InstrumentDataSourceType> | |||||
<UserId /> | |||||
<UserPwd /> | |||||
<LocalPath>F:\软件与资料\数据库\SQLite安装\sqlite\testDB.db</LocalPath> | |||||
</SyncInstrumentDSInfo> | |||||
<SyncTargetDBInfo> | |||||
<DBHost>192.168.1.108</DBHost> | |||||
<DBName>world</DBName> | |||||
<DBUser>Li</DBUser> | |||||
<DBPwd>123456</DBPwd> | |||||
<DBPort>3306</DBPort> | |||||
</SyncTargetDBInfo> | |||||
<LstSyncPramas> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>key</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>PLANTCODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>crucible</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>COAL_CODE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>name</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>TEST_DATE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>weight</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>STANDARD_NAME</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>mad</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>STANDARD_ID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>kc</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>EXAMINE_METHOD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>kca</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>EMPERATURE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>stad</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>HUMIDITY</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>std</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_ID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>method</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_NUMBER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>type</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_BEFORE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>assayer</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>FACILITY_AFTER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>count</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_NUMBER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>date1</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_BEFORE</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>time</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>BALANCE_AFTER</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>remark</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_AAD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>data</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_MAD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>state</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AVERAGE_AD</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>ResultDisable</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>REMARKS</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>date</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>INSPECTOR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>k</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AUDITOR</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>b</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>INSPECTORID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>AT</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>AUDITORID</TargetField> | |||||
</SyncParamasInfo> | |||||
<SyncParamasInfo> | |||||
<SourceTable>result</SourceTable> | |||||
<SourceField>RH</SourceField> | |||||
<TargetTable>ashexaminerecord</TargetTable> | |||||
<TargetField>ORGCODE</TargetField> | |||||
</SyncParamasInfo> | |||||
</LstSyncPramas> | |||||
</SyncInstrumentItemInfo> | |||||
</ArrayOfSyncInstrumentItemInfo> |
@@ -0,0 +1,22 @@ | |||||
<?xml version="1.0"?> | |||||
<!-- | |||||
* | |||||
* System.Data.SQLite.dll.config - | |||||
* | |||||
* WARNING: This XML configuration file is intended for use within the NuGet | |||||
* package directories only. Please do not copy this file to any of | |||||
* the build output directories because it could interfere with the | |||||
* native library pre-loading feature. | |||||
* | |||||
* Written by Joe Mistachkin. | |||||
* Released to the public domain, use at your own risk! | |||||
* | |||||
--> | |||||
<configuration> | |||||
<appSettings> | |||||
<add key="PreLoadSQLite_BaseDirectory" | |||||
value="%PreLoadSQLite_AssemblyDirectory%\..\..\build\%PreLoadSQLite_TargetFramework%" /> | |||||
</appSettings> | |||||
<dllmap dll="SQLite.Interop" target="SQLite.Interop.dll" /> | |||||
</configuration> |