Ver código fonte

上传源码

master
DESKTOP-58BB7H3\ZJH 4 meses atrás
pai
commit
b608b5f6c4
100 arquivos alterados com 73689 adições e 0 exclusões
  1. +63
    -0
      .gitattributes
  2. +261
    -0
      .gitignore
  3. +49
    -0
      CNASBalanceDBManage/App.config
  4. +107
    -0
      CNASBalanceDBManage/CNASBalanceDBManage.csproj
  5. +30
    -0
      CNASBalanceDBManage/Program.cs
  6. +37
    -0
      CNASBalanceDBManage/Properties/AssemblyInfo.cs
  7. +63
    -0
      CNASBalanceDBManage/Properties/Resources.Designer.cs
  8. +117
    -0
      CNASBalanceDBManage/Properties/Resources.resx
  9. +26
    -0
      CNASBalanceDBManage/Properties/Settings.Designer.cs
  10. +7
    -0
      CNASBalanceDBManage/Properties/Settings.settings
  11. BIN
      CNASBalanceDBManage/database_16px_1229703_easyicon.net.ico
  12. +512
    -0
      CNASBalanceDBManage/frmBalanceDB.Designer.cs
  13. +222
    -0
      CNASBalanceDBManage/frmBalanceDB.cs
  14. +163
    -0
      CNASBalanceDBManage/frmBalanceDB.resx
  15. +56
    -0
      CNAS_BalanceClient/App.config
  16. +164
    -0
      CNAS_BalanceClient/CNAS_BalanceClient.csproj
  17. +227
    -0
      CNAS_BalanceClient/ILaboratoryTestOpera.cs
  18. +31
    -0
      CNAS_BalanceClient/Program.cs
  19. +37
    -0
      CNAS_BalanceClient/Properties/AssemblyInfo.cs
  20. +63
    -0
      CNAS_BalanceClient/Properties/Resources.Designer.cs
  21. +117
    -0
      CNAS_BalanceClient/Properties/Resources.resx
  22. +26
    -0
      CNAS_BalanceClient/Properties/Settings.Designer.cs
  23. +7
    -0
      CNAS_BalanceClient/Properties/Settings.settings
  24. +393
    -0
      CNAS_BalanceClient/UIOperation/BalanceMainOperation.cs
  25. +161
    -0
      CNAS_BalanceClient/UIOperation/CrucibleUIOperation.cs
  26. +132
    -0
      CNAS_BalanceClient/UIOperation/HuiFaFenUIOperation.cs
  27. +176
    -0
      CNAS_BalanceClient/UIOperation/HuiFenUIOperation.cs
  28. +182
    -0
      CNAS_BalanceClient/UIOperation/QuanShuiFenUIOperation.cs
  29. +151
    -0
      CNAS_BalanceClient/UIOperation/ShuiFenUIOperation.cs
  30. +770
    -0
      CNAS_BalanceClient/frmBalanceField.Designer.cs
  31. +409
    -0
      CNAS_BalanceClient/frmBalanceField.cs
  32. +183
    -0
      CNAS_BalanceClient/frmBalanceField.resx
  33. +1980
    -0
      CNAS_BalanceClient/frmBalanceMain.Designer.cs
  34. +1200
    -0
      CNAS_BalanceClient/frmBalanceMain.cs
  35. +522
    -0
      CNAS_BalanceClient/frmBalanceMain.resx
  36. +257
    -0
      CNAS_BalanceClient/frmConditionMap.Designer.cs
  37. +556
    -0
      CNAS_BalanceClient/frmConditionMap.cs
  38. +182
    -0
      CNAS_BalanceClient/frmConditionMap.resx
  39. +317
    -0
      CNAS_BalanceClient/frmConfigPort.Designer.cs
  40. +83
    -0
      CNAS_BalanceClient/frmConfigPort.cs
  41. +167
    -0
      CNAS_BalanceClient/frmConfigPort.resx
  42. +926
    -0
      CNAS_BalanceClient/frmHistory.Designer.cs
  43. +109
    -0
      CNAS_BalanceClient/frmHistory.cs
  44. +329
    -0
      CNAS_BalanceClient/frmHistory.resx
  45. +183
    -0
      CNAS_BalanceClient/frmLoginServer.Designer.cs
  46. +130
    -0
      CNAS_BalanceClient/frmLoginServer.cs
  47. +407
    -0
      CNAS_BalanceClient/frmLoginServer.resx
  48. BIN
      CNAS_BalanceClient/scales_of_Balance_16px_1117673_easyicon.net.ico
  49. +103
    -0
      CNAS_DBSync.sln
  50. +75
    -0
      CNAS_DBSync/App.config
  51. +251
    -0
      CNAS_DBSync/CNAS_DBSync.csproj
  52. +76
    -0
      CNAS_DBSync/Program.cs
  53. +37
    -0
      CNAS_DBSync/Properties/AssemblyInfo.cs
  54. +63
    -0
      CNAS_DBSync/Properties/Resources.Designer.cs
  55. +117
    -0
      CNAS_DBSync/Properties/Resources.resx
  56. +36
    -0
      CNAS_DBSync/Properties/Settings.Designer.cs
  57. +14
    -0
      CNAS_DBSync/Properties/Settings.settings
  58. +63
    -0
      CNAS_DBSync/SourceSettingTextBoxDecrible.cs
  59. BIN
      CNAS_DBSync/dll/CNAS_DBSync.exe
  60. +58
    -0
      CNAS_DBSync/dll/CNAS_DBSync.exe.config
  61. +195
    -0
      CNAS_DBSync/dll/Data/SyncInStrumentData.xml
  62. BIN
      CNAS_DBSync/dll/Document/AshMeltingPoint.xls
  63. BIN
      CNAS_DBSync/dll/Document/IndustrialAnalyzer.xls
  64. BIN
      CNAS_DBSync/dll/Document/InfraredSulfurMeter.xls
  65. BIN
      CNAS_DBSync/dll/Document/MoistureMeter.xls
  66. BIN
      CNAS_DBSync/dll/Document/SulphurMeter.xls
  67. BIN
      CNAS_DBSync/dll/System.Data.SQLite.EF6.dll
  68. BIN
      CNAS_DBSync/dll/System.Data.SQLite.Linq.dll
  69. BIN
      CNAS_DBSync/dll/System.Data.SQLite.dll
  70. +22
    -0
      CNAS_DBSync/dll/System.Data.SQLite.dll.config
  71. +21120
    -0
      CNAS_DBSync/dll/System.Data.SQLite.xml
  72. BIN
      CNAS_DBSync/dll/log4net.dll
  73. +32464
    -0
      CNAS_DBSync/dll/log4net.xml
  74. BIN
      CNAS_DBSync/drum_set_16px_1218345_easyicon.net.ico
  75. +192
    -0
      CNAS_DBSync/frmAddSubtract.Designer.cs
  76. +89
    -0
      CNAS_DBSync/frmAddSubtract.cs
  77. +120
    -0
      CNAS_DBSync/frmAddSubtract.resx
  78. +256
    -0
      CNAS_DBSync/frmCNASValue.Designer.cs
  79. +546
    -0
      CNAS_DBSync/frmCNASValue.cs
  80. +182
    -0
      CNAS_DBSync/frmCNASValue.resx
  81. +204
    -0
      CNAS_DBSync/frmConditionParam.Designer.cs
  82. +127
    -0
      CNAS_DBSync/frmConditionParam.cs
  83. +120
    -0
      CNAS_DBSync/frmConditionParam.resx
  84. +1546
    -0
      CNAS_DBSync/frmDatabaseParams.Designer.cs
  85. +1057
    -0
      CNAS_DBSync/frmDatabaseParams.cs
  86. +167
    -0
      CNAS_DBSync/frmDatabaseParams.resx
  87. +217
    -0
      CNAS_DBSync/frmIfThenParams.Designer.cs
  88. +125
    -0
      CNAS_DBSync/frmIfThenParams.cs
  89. +132
    -0
      CNAS_DBSync/frmIfThenParams.resx
  90. +92
    -0
      CNAS_DBSync/frmInstrumentCode.Designer.cs
  91. +105
    -0
      CNAS_DBSync/frmInstrumentCode.cs
  92. +159
    -0
      CNAS_DBSync/frmInstrumentCode.resx
  93. +96
    -0
      CNAS_DBSync/frmOperationPwd.Designer.cs
  94. +78
    -0
      CNAS_DBSync/frmOperationPwd.cs
  95. +145
    -0
      CNAS_DBSync/frmOperationPwd.resx
  96. +145
    -0
      CNAS_DBSync/frmSelectInstruItem.Designer.cs
  97. +63
    -0
      CNAS_DBSync/frmSelectInstruItem.cs
  98. +126
    -0
      CNAS_DBSync/frmSelectInstruItem.resx
  99. +306
    -0
      CNAS_DBSync/frmServiceConfig.Designer.cs
  100. +310
    -0
      CNAS_DBSync/frmServiceConfig.cs

+ 63
- 0
.gitattributes Ver arquivo

@@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

+ 261
- 0
.gitignore Ver arquivo

@@ -0,0 +1,261 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# DNX
project.lock.json
project.fragment.lock.json
artifacts/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
#*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

+ 49
- 0
CNASBalanceDBManage/App.config Ver arquivo

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<add key="TargetDBType" value="Oracle"/>
<add key="InitalOperationPwd" value="123456"/>
<add key="StartWebApiUrl" value="0"/>
</appSettings>
<log4net>
<logger name="Log">
<level value="INFO"/>
<appender-ref ref="RollingLog"/>
</logger>
<logger name="Err">
<level value="ERROR"/>
<appender-ref ref="RollingErr"/>
</logger>
<appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
<file value="Log\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 操作信息:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>
<appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
<file value="ErrorLog\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 错误描述:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

+ 107
- 0
CNASBalanceDBManage/CNASBalanceDBManage.csproj Ver arquivo

@@ -0,0 +1,107 @@
<?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>{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>CNASBalanceDBManage</RootNamespace>
<AssemblyName>CNASBalanceDBManage</AssemblyName>
<TargetFrameworkVersion>v4.8</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>
<Prefer32Bit>false</Prefer32Bit>
</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>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>database_16px_1229703_easyicon.net.ico</ApplicationIcon>
</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="System" />
<Reference Include="System.Core" />
<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="frmBalanceDB.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmBalanceDB.Designer.cs">
<DependentUpon>frmBalanceDB.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="frmBalanceDB.resx">
<DependentUpon>frmBalanceDB.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>
<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="..\CnasSynchronousCommon\CnasSynchronousCommon.csproj">
<Project>{8e0e5f2e-2ba2-4952-9f31-34c072cd86b3}</Project>
<Name>CnasSynchronousCommon</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchronusClient\CnasSynchronusBLL.csproj">
<Project>{cb9b6d92-3cc4-46c6-92e8-a6fd0ad48041}</Project>
<Name>CnasSynchronusBLL</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchrousModel\CnasSynchrousModel.csproj">
<Project>{0c3243f5-729e-409c-b406-c6de56e632e0}</Project>
<Name>CnasSynchrousModel</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="database_16px_1229703_easyicon.net.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

+ 30
- 0
CNASBalanceDBManage/Program.cs Ver arquivo

@@ -0,0 +1,30 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace CNASBalanceDBManage
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

SystemFormatConfig systemFormat = FileOperation.GetSystemFormatConfigData();
GlobalCommonOperation.strStartGeneralVersion = systemFormat.StartGeneralVersion;
GlobalCommonOperation.strStartWebApi = systemFormat.StartWebApi;
GlobalCommonOperation.strWebApiUrl = systemFormat.WebApiUrl;
GlobalCommonOperation.strTargetDbType = systemFormat.TargetDBType;

Application.Run(new frmBalanceDB());
}
}
}

+ 37
- 0
CNASBalanceDBManage/Properties/AssemblyInfo.cs Ver arquivo

@@ -0,0 +1,37 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("CNASBalanceDBManage")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CNASBalanceDBManage")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("d4d6a680-8b6b-4ecb-96d0-264954dabfc1")]

// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

+ 63
- 0
CNASBalanceDBManage/Properties/Resources.Designer.cs Ver arquivo

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNASBalanceDBManage.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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("CNASBalanceDBManage.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;
}
}
}
}

+ 117
- 0
CNASBalanceDBManage/Properties/Resources.resx Ver arquivo

@@ -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>

+ 26
- 0
CNASBalanceDBManage/Properties/Settings.Designer.cs Ver arquivo

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNASBalanceDBManage.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.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;
}
}
}
}

+ 7
- 0
CNASBalanceDBManage/Properties/Settings.settings Ver arquivo

@@ -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>

BIN
CNASBalanceDBManage/database_16px_1229703_easyicon.net.ico Ver arquivo

Antes Depois

+ 512
- 0
CNASBalanceDBManage/frmBalanceDB.Designer.cs Ver arquivo

@@ -0,0 +1,512 @@
namespace CNASBalanceDBManage
{
partial class frmBalanceDB
{
/// <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(frmBalanceDB));
this.pnlAll = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.tabSetting = new System.Windows.Forms.TabControl();
this.tabCNASDB = new System.Windows.Forms.TabPage();
this.btnCNASTestLink = new System.Windows.Forms.Button();
this.txtPort = new System.Windows.Forms.TextBox();
this.txtDBHost = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.txtDBName = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.txtDBUser = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.txtDBPwd = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.tabPlatForm = new System.Windows.Forms.TabPage();
this.btnPlatTest = new System.Windows.Forms.Button();
this.txtPlatPort = new System.Windows.Forms.TextBox();
this.txtPlatHost = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.txtPlatServer = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.txtPlatUser = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.txtPlatPwd = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.tabPwd = new System.Windows.Forms.TabPage();
this.txtRepeatPwd = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtNewPwd = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.txtOldPwd = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.pnlBottom = new System.Windows.Forms.Panel();
this.panel1 = new System.Windows.Forms.Panel();
this.btnOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.pnlAll.SuspendLayout();
this.pnlCenter.SuspendLayout();
this.tabSetting.SuspendLayout();
this.tabCNASDB.SuspendLayout();
this.tabPlatForm.SuspendLayout();
this.tabPwd.SuspendLayout();
this.pnlBottom.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.pnlCenter);
this.pnlAll.Controls.Add(this.pnlBottom);
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(493, 311);
this.pnlAll.TabIndex = 0;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.tabSetting);
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlCenter.Location = new System.Drawing.Point(0, 0);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(493, 258);
this.pnlCenter.TabIndex = 1;
//
// tabSetting
//
this.tabSetting.Controls.Add(this.tabCNASDB);
this.tabSetting.Controls.Add(this.tabPlatForm);
this.tabSetting.Controls.Add(this.tabPwd);
this.tabSetting.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabSetting.Location = new System.Drawing.Point(0, 0);
this.tabSetting.Name = "tabSetting";
this.tabSetting.SelectedIndex = 0;
this.tabSetting.Size = new System.Drawing.Size(493, 258);
this.tabSetting.TabIndex = 36;
//
// tabCNASDB
//
this.tabCNASDB.Controls.Add(this.btnCNASTestLink);
this.tabCNASDB.Controls.Add(this.txtPort);
this.tabCNASDB.Controls.Add(this.txtDBHost);
this.tabCNASDB.Controls.Add(this.label1);
this.tabCNASDB.Controls.Add(this.label9);
this.tabCNASDB.Controls.Add(this.txtDBName);
this.tabCNASDB.Controls.Add(this.label8);
this.tabCNASDB.Controls.Add(this.txtDBUser);
this.tabCNASDB.Controls.Add(this.label11);
this.tabCNASDB.Controls.Add(this.txtDBPwd);
this.tabCNASDB.Controls.Add(this.label10);
this.tabCNASDB.Location = new System.Drawing.Point(4, 26);
this.tabCNASDB.Name = "tabCNASDB";
this.tabCNASDB.Padding = new System.Windows.Forms.Padding(3);
this.tabCNASDB.Size = new System.Drawing.Size(485, 228);
this.tabCNASDB.TabIndex = 0;
this.tabCNASDB.Text = "目标数据库";
this.tabCNASDB.UseVisualStyleBackColor = true;
//
// btnCNASTestLink
//
this.btnCNASTestLink.Location = new System.Drawing.Point(398, 176);
this.btnCNASTestLink.Name = "btnCNASTestLink";
this.btnCNASTestLink.Size = new System.Drawing.Size(79, 24);
this.btnCNASTestLink.TabIndex = 36;
this.btnCNASTestLink.Text = "测试连接";
this.btnCNASTestLink.UseVisualStyleBackColor = true;
this.btnCNASTestLink.Click += new System.EventHandler(this.btnCNASTestLink_Click);
//
// txtPort
//
this.txtPort.Location = new System.Drawing.Point(71, 176);
this.txtPort.Name = "txtPort";
this.txtPort.PasswordChar = '*';
this.txtPort.Size = new System.Drawing.Size(316, 23);
this.txtPort.TabIndex = 35;
//
// txtDBHost
//
this.txtDBHost.Location = new System.Drawing.Point(71, 24);
this.txtDBHost.Name = "txtDBHost";
this.txtDBHost.Size = new System.Drawing.Size(316, 23);
this.txtDBHost.TabIndex = 31;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(26, 180);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 34;
this.label1.Text = "端口:";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(14, 104);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(56, 17);
this.label9.TabIndex = 25;
this.label9.Text = "用户名:";
//
// txtDBName
//
this.txtDBName.Location = new System.Drawing.Point(71, 62);
this.txtDBName.Name = "txtDBName";
this.txtDBName.Size = new System.Drawing.Size(316, 23);
this.txtDBName.TabIndex = 32;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(26, 142);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(44, 17);
this.label8.TabIndex = 26;
this.label8.Text = "密码:";
//
// txtDBUser
//
this.txtDBUser.Location = new System.Drawing.Point(71, 100);
this.txtDBUser.Name = "txtDBUser";
this.txtDBUser.Size = new System.Drawing.Size(316, 23);
this.txtDBUser.TabIndex = 33;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(26, 66);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(44, 17);
this.label11.TabIndex = 30;
this.label11.Text = "实例:";
//
// txtDBPwd
//
this.txtDBPwd.Location = new System.Drawing.Point(71, 138);
this.txtDBPwd.Name = "txtDBPwd";
this.txtDBPwd.PasswordChar = '*';
this.txtDBPwd.Size = new System.Drawing.Size(316, 23);
this.txtDBPwd.TabIndex = 34;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(15, 27);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(56, 17);
this.label10.TabIndex = 29;
this.label10.Text = "服务器:";
//
// tabPlatForm
//
this.tabPlatForm.Controls.Add(this.btnPlatTest);
this.tabPlatForm.Controls.Add(this.txtPlatPort);
this.tabPlatForm.Controls.Add(this.txtPlatHost);
this.tabPlatForm.Controls.Add(this.label5);
this.tabPlatForm.Controls.Add(this.label6);
this.tabPlatForm.Controls.Add(this.txtPlatServer);
this.tabPlatForm.Controls.Add(this.label7);
this.tabPlatForm.Controls.Add(this.txtPlatUser);
this.tabPlatForm.Controls.Add(this.label12);
this.tabPlatForm.Controls.Add(this.txtPlatPwd);
this.tabPlatForm.Controls.Add(this.label13);
this.tabPlatForm.Location = new System.Drawing.Point(4, 26);
this.tabPlatForm.Name = "tabPlatForm";
this.tabPlatForm.Size = new System.Drawing.Size(485, 228);
this.tabPlatForm.TabIndex = 2;
this.tabPlatForm.Text = "目标平台数据库";
this.tabPlatForm.UseVisualStyleBackColor = true;
//
// btnPlatTest
//
this.btnPlatTest.Location = new System.Drawing.Point(399, 176);
this.btnPlatTest.Name = "btnPlatTest";
this.btnPlatTest.Size = new System.Drawing.Size(79, 24);
this.btnPlatTest.TabIndex = 47;
this.btnPlatTest.Text = "测试连接";
this.btnPlatTest.UseVisualStyleBackColor = true;
this.btnPlatTest.Click += new System.EventHandler(this.btnPlatTest_Click);
//
// txtPlatPort
//
this.txtPlatPort.Location = new System.Drawing.Point(72, 176);
this.txtPlatPort.Name = "txtPlatPort";
this.txtPlatPort.PasswordChar = '*';
this.txtPlatPort.Size = new System.Drawing.Size(316, 23);
this.txtPlatPort.TabIndex = 46;
//
// txtPlatHost
//
this.txtPlatHost.Location = new System.Drawing.Point(72, 24);
this.txtPlatHost.Name = "txtPlatHost";
this.txtPlatHost.Size = new System.Drawing.Size(316, 23);
this.txtPlatHost.TabIndex = 42;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(27, 180);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(44, 17);
this.label5.TabIndex = 45;
this.label5.Text = "端口:";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(15, 104);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(56, 17);
this.label6.TabIndex = 36;
this.label6.Text = "用户名:";
//
// txtPlatServer
//
this.txtPlatServer.Location = new System.Drawing.Point(72, 62);
this.txtPlatServer.Name = "txtPlatServer";
this.txtPlatServer.Size = new System.Drawing.Size(316, 23);
this.txtPlatServer.TabIndex = 43;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(27, 142);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(44, 17);
this.label7.TabIndex = 37;
this.label7.Text = "密码:";
//
// txtPlatUser
//
this.txtPlatUser.Location = new System.Drawing.Point(72, 100);
this.txtPlatUser.Name = "txtPlatUser";
this.txtPlatUser.Size = new System.Drawing.Size(316, 23);
this.txtPlatUser.TabIndex = 44;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(27, 66);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(44, 17);
this.label12.TabIndex = 41;
this.label12.Text = "实例:";
//
// txtPlatPwd
//
this.txtPlatPwd.Location = new System.Drawing.Point(72, 138);
this.txtPlatPwd.Name = "txtPlatPwd";
this.txtPlatPwd.PasswordChar = '*';
this.txtPlatPwd.Size = new System.Drawing.Size(316, 23);
this.txtPlatPwd.TabIndex = 45;
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(16, 27);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(56, 17);
this.label13.TabIndex = 40;
this.label13.Text = "服务器:";
//
// tabPwd
//
this.tabPwd.Controls.Add(this.txtRepeatPwd);
this.tabPwd.Controls.Add(this.label4);
this.tabPwd.Controls.Add(this.txtNewPwd);
this.tabPwd.Controls.Add(this.label3);
this.tabPwd.Controls.Add(this.txtOldPwd);
this.tabPwd.Controls.Add(this.label2);
this.tabPwd.Location = new System.Drawing.Point(4, 26);
this.tabPwd.Name = "tabPwd";
this.tabPwd.Padding = new System.Windows.Forms.Padding(3);
this.tabPwd.Size = new System.Drawing.Size(485, 228);
this.tabPwd.TabIndex = 1;
this.tabPwd.Text = "操作密码";
this.tabPwd.UseVisualStyleBackColor = true;
//
// txtRepeatPwd
//
this.txtRepeatPwd.Location = new System.Drawing.Point(90, 120);
this.txtRepeatPwd.Name = "txtRepeatPwd";
this.txtRepeatPwd.PasswordChar = '*';
this.txtRepeatPwd.Size = new System.Drawing.Size(316, 23);
this.txtRepeatPwd.TabIndex = 37;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(10, 123);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(80, 17);
this.label4.TabIndex = 36;
this.label4.Text = "重复新密码:";
//
// txtNewPwd
//
this.txtNewPwd.Location = new System.Drawing.Point(90, 81);
this.txtNewPwd.Name = "txtNewPwd";
this.txtNewPwd.PasswordChar = '*';
this.txtNewPwd.Size = new System.Drawing.Size(316, 23);
this.txtNewPwd.TabIndex = 35;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(34, 84);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 17);
this.label3.TabIndex = 34;
this.label3.Text = "新密码:";
//
// txtOldPwd
//
this.txtOldPwd.Location = new System.Drawing.Point(90, 43);
this.txtOldPwd.Name = "txtOldPwd";
this.txtOldPwd.PasswordChar = '*';
this.txtOldPwd.Size = new System.Drawing.Size(316, 23);
this.txtOldPwd.TabIndex = 33;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(34, 46);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 17);
this.label2.TabIndex = 32;
this.label2.Text = "原密码:";
//
// pnlBottom
//
this.pnlBottom.Controls.Add(this.panel1);
this.pnlBottom.Controls.Add(this.groupBox1);
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(0, 258);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(493, 53);
this.pnlBottom.TabIndex = 0;
//
// panel1
//
this.panel1.Controls.Add(this.btnOK);
this.panel1.Dock = System.Windows.Forms.DockStyle.Right;
this.panel1.Location = new System.Drawing.Point(395, 4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(98, 49);
this.panel1.TabIndex = 2;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(3, 3);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 0;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// groupBox1
//
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox1.Location = new System.Drawing.Point(0, 0);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(493, 4);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
//
// frmBalanceDB
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(493, 311);
this.Controls.Add(this.pnlAll);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.Name = "frmBalanceDB";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "初始配置";
this.Load += new System.EventHandler(this.frmBalanceDB_Load);
this.pnlAll.ResumeLayout(false);
this.pnlCenter.ResumeLayout(false);
this.tabSetting.ResumeLayout(false);
this.tabCNASDB.ResumeLayout(false);
this.tabCNASDB.PerformLayout();
this.tabPlatForm.ResumeLayout(false);
this.tabPlatForm.PerformLayout();
this.tabPwd.ResumeLayout(false);
this.tabPwd.PerformLayout();
this.pnlBottom.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.TextBox txtPort;
private System.Windows.Forms.Label label1;
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 panel1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TabControl tabSetting;
private System.Windows.Forms.TabPage tabCNASDB;
private System.Windows.Forms.TabPage tabPwd;
private System.Windows.Forms.TextBox txtRepeatPwd;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtNewPwd;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtOldPwd;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TabPage tabPlatForm;
private System.Windows.Forms.Button btnPlatTest;
private System.Windows.Forms.TextBox txtPlatPort;
private System.Windows.Forms.TextBox txtPlatHost;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox txtPlatServer;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox txtPlatUser;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox txtPlatPwd;
private System.Windows.Forms.Label label13;
}
}

+ 222
- 0
CNASBalanceDBManage/frmBalanceDB.cs Ver arquivo

@@ -0,0 +1,222 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.IO;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace CNASBalanceDBManage
{
public partial class frmBalanceDB : Form
{
public DataBaseInfo CNASDataBase { get; set; }

public DataBaseInfo PlatDataBase { get; set; }

public string strOldPwd { get; set; }

public frmBalanceDB()
{
InitializeComponent();
}

private void btnCNASTestLink_Click(object sender, EventArgs e)
{
if (this.txtDBHost.Text.Trim() == "" || this.txtDBName.Text.Trim() == "" || this.txtDBUser.Text.Trim() == "" || this.txtDBPwd.Text.Trim() == "" || this.txtPort.Text.Trim()=="")
{
MessageBox.Show("不允许为空!");
return;
}

if (CnasDataOperationFact.CnasDataOperation().TestConnect(new DataBaseInfo()
{
DataBaseCode="cnas",
DBHost = this.txtDBHost.Text.Trim(),
DBName = this.txtDBName.Text.Trim(),
DBUser = this.txtDBUser.Text.Trim(),
DBPwd = this.txtDBPwd.Text.Trim(),
DBPort = this.txtPort.Text.Trim()
}))
MessageBox.Show("连接成功!");
else
MessageBox.Show("连接失败!");
}

private void frmBalanceDB_Load(object sender, EventArgs e)
{
CNASDataBase = FileOperation.GetLocalCnasDB();
if (this.CNASDataBase != null)
{
this.txtDBHost.Text = CNASDataBase.DBHost;
this.txtDBName.Text = CNASDataBase.DBName;
this.txtDBUser.Text = CNASDataBase.DBUser;
this.txtDBPwd.Text = CNASDataBase.DBPwd;
this.txtPort.Text = CNASDataBase.DBPort;
}
PlatDataBase = FileOperation.GetLocalPlatFormDB();
if(PlatDataBase!=null)
{
this.txtPlatHost.Text = PlatDataBase.DBHost;
this.txtPlatServer.Text = PlatDataBase.DBName;
this.txtPlatUser.Text = PlatDataBase.DBUser;
this.txtPlatPwd.Text = PlatDataBase.DBPwd;
this.txtPlatPort.Text = PlatDataBase.DBPort;
}

strOldPwd = FileOperation.GetLocalOperationPwd();
}

private void btnOK_Click(object sender, EventArgs e)
{
bool bIfSavePwd = false;
if (this.txtDBHost.Text.Trim() == "" || this.txtDBName.Text.Trim() == "" || this.txtDBUser.Text.Trim() == "" || this.txtDBPwd.Text.Trim() == "" || this.txtPort.Text.Trim() == "")
{
MessageBox.Show("CNAS数据库配置不允许为空!");
return;
}
if (this.txtPlatHost.Text.Trim() == "" || this.txtPlatServer.Text.Trim() == "" || this.txtPlatUser.Text.Trim() == "" || this.txtPlatPwd.Text.Trim() == "" || this.txtPlatPort.Text.Trim() == "")
{
MessageBox.Show("平台数据库配置不允许为空!");
return;
}
if (this.txtOldPwd.Text == "" && this.txtNewPwd.Text == "" && this.txtRepeatPwd.Text == "") //此时认为用户无意修改密码
{
bIfSavePwd = false;
}
else
{
//旧密码不正确
if (this.txtOldPwd.Text == ""||(this.txtOldPwd.Text != "" && this.txtOldPwd.Text != strOldPwd))
{
MessageBox.Show("旧操作密码错误!");
return;
}
if (this.txtNewPwd.Text.Trim() == "")
{
MessageBox.Show("新操作密码不能为空!");
return;
}
if (this.txtOldPwd.Text == this.txtNewPwd.Text)
{
MessageBox.Show("新旧操作密码不能一样!");
return;
}
if (this.txtNewPwd.Text.Trim() != this.txtRepeatPwd.Text.Trim())
{
MessageBox.Show("重复输入操作密码不一样!");
return;
}
bIfSavePwd = true;
}
//目标库的信息
CNASDataBase.DBHost = this.txtDBHost.Text.Trim();
CNASDataBase.DBName = this.txtDBName.Text.Trim();
CNASDataBase.DBUser = this.txtDBUser.Text.Trim();
CNASDataBase.DBPwd = this.txtDBPwd.Text.Trim();
CNASDataBase.DBPort = this.txtPort.Text.Trim();


PlatDataBase.DBHost = this.txtPlatHost.Text.Trim();
PlatDataBase.DBName = this.txtPlatServer.Text.Trim();
PlatDataBase.DBUser = this.txtPlatUser.Text.Trim();
PlatDataBase.DBPwd = this.txtPlatPwd.Text.Trim();
PlatDataBase.DBPort = this.txtPlatPort.Text.Trim();

/*一套有点恶心的逻辑,但没想到其他的方案*/
//保存数据到本地
if (!bIfSavePwd) //此时没有修改密码,此时只判断两个数据库配置的存储
{
bool bSaveCNAS = FileOperation.SaveLocalCnasDB(CNASDataBase);
bool bSavePlat= FileOperation.SaveLocalPlatDB(PlatDataBase);
if (bSaveCNAS && bSavePlat)
{
MessageBox.Show("数据库配置保存成功!");
}
else if (bSaveCNAS && !bSavePlat)
{
MessageBox.Show("平台数据库配置保存失败。");
}
else if (!bSaveCNAS && bSavePlat)
{
MessageBox.Show("CNAS数据库配置保存失败。");
}
else
{
MessageBox.Show("数据库配置保存失败。");
}
}
else
{
string strMsg = "";
bool bSaveDB = bSaveDataBase(ref strMsg);
bool bSavePwd = FileOperation.SaveLocalOperationPwd(this.txtNewPwd.Text.Trim());
if (bSaveDB == true && bSavePwd == true)
{
MessageBox.Show("保存成功!");
}
else if (bSaveDB == true && bSavePwd == false)
{
MessageBox.Show("数据库配置保存成功,操作密码保存失败!");
}
else if (bSaveDB == false && bSavePwd == true)
{
MessageBox.Show(strMsg+"操作密码设置保存成功!");
}
else
{
MessageBox.Show("保存失败!");
}
}
}

private bool bSaveDataBase(ref string strMsg)
{
bool bSaveCNAS = FileOperation.SaveLocalCnasDB(CNASDataBase);
bool bSavePlat = FileOperation.SaveLocalPlatDB(PlatDataBase);
if (bSaveCNAS && bSavePlat)
{
strMsg="数据库配置保存成功!";
return true;
}
else if (bSaveCNAS && !bSavePlat)
{
strMsg = "平台数据库配置保存失败。";
return false;
}
else if (!bSaveCNAS && bSavePlat)
{
strMsg = "CNAS数据库配置保存失败。";
return false;
}
else
{
strMsg = "数据库配置保存失败。";
return false;
}
}

private void btnPlatTest_Click(object sender, EventArgs e)
{
if (this.txtPlatHost.Text.Trim() == "" || this.txtPlatServer.Text.Trim() == "" || this.txtPlatUser.Text.Trim() == "" || this.txtPlatPwd.Text.Trim() == "" || this.txtPlatPort.Text.Trim() == "")
{
MessageBox.Show("平台数据库配置不允许为空!");
return;
}

//if (CnasDataOperationFact.CnasDataOperation().TestConnect(this.txtPlatHost.Text.Trim(), this.txtPlatServer.Text.Trim(), this.txtPlatUser.Text.Trim(), this.txtPlatPwd.Text.Trim(), this.txtPlatPort.Text.Trim()))
if (CnasDataOperationFact.CnasDataOperation().TestConnect(new DataBaseInfo()
{
DBHost = this.txtPlatHost.Text.Trim(),
DBName = this.txtPlatServer.Text.Trim(),
DBUser = this.txtPlatUser.Text.Trim(),
DBPwd = this.txtPlatPwd.Text.Trim(),
DBPort = this.txtPlatPort.Text.Trim()
}))
MessageBox.Show("连接成功!");
else
MessageBox.Show("连接失败!");
}
}
}

+ 163
- 0
CNASBalanceDBManage/frmBalanceDB.resx Ver arquivo

@@ -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>
AAABAAEAFhgAAAEAIADICAAAFgAAACgAAAAWAAAAMAAAAAEAIAAAAAAAQAgAABAnAAAQJwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAKAAAAFQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAA1AAAAmgAAALoAAACHAAAAMAAAAA4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAACmAAAAygAA
ALAAAABJAAAAvgAAAMoAAACRAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAATgAA
AFIAAABSAAAAQwAAAAAAAABlAAAAsgAAADMAAABTAAAAWQAAAE8AAAA5AAAAwwAAAEQAAAAAAAAAAAAA
AAEAAAAYAAAAIAAAAB8AAAAfAAAAIAAAAD4AAAA/AAAAPwAAADgAAAAtAAAAmgAAAKsAAABPAAAAsAAA
AJAAAACtAAAARwAAAL0AAACAAAAACgAAAAEAAABmAAAAsgAAAKsAAACrAAAAqwAAAKsAAACmAAAApQAA
AKUAAACmAAAAvwAAAMgAAAAvAAAAkwAAAFIAAAAAAAAAcwAAAHcAAABCAAAAvgAAACIAAAAeAAAArwAA
AC8AAAAQAAAAEgAAABIAAAAUAAAARwAAAGQAAABjAAAAOQAAADsAAADHAAAAawAAAIIAAAB/AAAAIAAA
AJcAAABqAAAAgQAAALoAAAAaAAAAKAAAAKUAAAAMAAAAAAAAAAAAAAAAAAAAKAAAAMMAAAClAAAAqwAA
ALYAAAAXAAAAbwAAALMAAAAlAAAAkgAAALAAAACAAAAAKQAAAMMAAABTAAAAAQAAACgAAAClAAAACgAA
AAAAAAAAAAAAAAAAABYAAACfAAAAqAAAAKsAAACNAAAABgAAAFAAAAC5AAAAgAAAAGYAAAAgAAAAdQAA
AIMAAAC/AAAANQAAAAAAAAAnAAAArwAAAEgAAABGAAAARwAAAEcAAABGAAAAUwAAAGAAAABgAAAAUAAA
ACoAAAAbAAAAjQAAANkAAADUAAAAlwAAAMIAAACgAAAAUQAAAAAAAAAAAAAAJAAAANIAAACrAAAAlQAA
AJYAAACWAAAAlgAAAJIAAACRAAAAkQAAAJUAAABeAAAAMwAAAFMAAACLAAAAwgAAAN8AAABLAAAABAAA
AAAAAAAAAAAAAAAAACcAAACvAAAAFwAAAAAAAAABAAAABgAAAAoAAABdAAAAfwAAAH8AAABNAAAAAgAA
AAAAAAAAAAAAAAAAAC4AAACsAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAoAAAApQAAAA0AAAAAAAAABwAA
AFoAAAA/AAAAywAAAJ0AAACkAAAAwgAAABcAAAAAAAAAAAAAAAAAAAAhAAAApwAAAA4AAAAAAAAAAAAA
AAAAAAAAAAAAKAAAAKUAAAAKAAAAAAAAAAAAAAAOAAAADgAAAHsAAACYAAAAmAAAAGkAAAACAAAAAAAA
AAAAAAAAAAAAHgAAAKcAAAAOAAAAAAAAAAAAAAAAAAAAAAAAACYAAAC4AAAAdAAAAHUAAAB1AAAAdAAA
AHQAAAB1AAAAeAAAAHgAAAB0AAAAdQAAAHUAAAB1AAAAdAAAAH4AAACwAAAADgAAAAAAAAAAAAAAAAAA
AAAAAAAlAAAAzwAAAIoAAABrAAAAbQAAAG0AAABsAAAAbgAAAHMAAABzAAAAbQAAAGwAAABsAAAAbAAA
AGsAAACcAAAAvwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAJwAAAKkAAAANAAAAAAAAAAAAAAAAAAAADQAA
AIEAAACcAAAAnQAAAG8AAAAKAAAAEgAAABIAAAAAAAAAIwAAAKoAAAAOAAAAAAAAAAAAAAAAAAAAAAAA
ACcAAAClAAAADgAAAAAAAAAAAAAAAAAAAC4AAADLAAAAngAAAKUAAAC/AAAANwAAAFwAAABcAAAACQAA
ACEAAACnAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAoAAAApQAAAA4AAAACAAAAAgAAAAIAAAAJAAAAWAAA
AHoAAAB6AAAASQAAAAYAAAAGAAAABwAAAAEAAAAiAAAApwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAJQAA
AMMAAACdAAAAnAAAAJwAAACcAAAAmwAAAJgAAACYAAAAmAAAAJkAAACbAAAAnAAAAJwAAACbAAAApAAA
ALcAAAANAAAAAAAAAAAAAAAAAAAAAAAAACYAAADHAAAAXQAAADwAAAA+AAAAPgAAAD0AAAA9AAAAPQAA
AD0AAAA9AAAAPQAAAD0AAAA9AAAAOwAAAHIAAAC7AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAbAAAArwAA
ADgAAAALAAAACQAAAAUAAAAXAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABYAAABQAAAApQAA
AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAACuAAAAbQAAAFkAAAA4AAAApQAAAKoAAACqAAAAqgAA
AKoAAACqAAAAqgAAAKoAAACrAAAAqQAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
AA4AAAAKAAAABwAAABYAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAGAAAAA4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/4AAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAA=
</value>
</data>
</root>

+ 56
- 0
CNAS_BalanceClient/App.config Ver arquivo

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<appSettings>
<add key="TargetDBType" value="Mysql"/>
<add key="InitalOperationPwd" value="123456"/>
</appSettings>
<log4net>
<logger name="Log">
<level value="INFO"/>
<appender-ref ref="RollingLog"/>
</logger>
<logger name="Err">
<level value="ERROR"/>
<appender-ref ref="RollingErr"/>
</logger>
<appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
<file value="Log\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 操作信息:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>
<appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
<file value="ErrorLog\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 错误描述:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Devart.Data" publicKeyToken="09af7300eec23701" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.2194.0" newVersion="5.0.2194.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

+ 164
- 0
CNAS_BalanceClient/CNAS_BalanceClient.csproj Ver arquivo

@@ -0,0 +1,164 @@
<?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>{00BEA43E-D03E-4BF7-9474-F36BD7811F74}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>CNAS_BalanceClient</RootNamespace>
<AssemblyName>CNAS_BalanceClient</AssemblyName>
<TargetFrameworkVersion>v4.8</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>
<Prefer32Bit>false</Prefer32Bit>
</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>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>scales_of_Balance_16px_1117673_easyicon.net.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Devart.Data, Version=5.0.2194.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL" />
<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="System" />
<Reference Include="System.Core" />
<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="frmConditionMap.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmConditionMap.Designer.cs">
<DependentUpon>frmConditionMap.cs</DependentUpon>
</Compile>
<Compile Include="UIOperation\BalanceMainOperation.cs" />
<Compile Include="UIOperation\CrucibleUIOperation.cs" />
<Compile Include="frmBalanceField.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmBalanceField.Designer.cs">
<DependentUpon>frmBalanceField.cs</DependentUpon>
</Compile>
<Compile Include="frmBalanceMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmBalanceMain.Designer.cs">
<DependentUpon>frmBalanceMain.cs</DependentUpon>
</Compile>
<Compile Include="frmConfigPort.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmConfigPort.Designer.cs">
<DependentUpon>frmConfigPort.cs</DependentUpon>
</Compile>
<Compile Include="frmHistory.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmHistory.Designer.cs">
<DependentUpon>frmHistory.cs</DependentUpon>
</Compile>
<Compile Include="frmLoginServer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmLoginServer.Designer.cs">
<DependentUpon>frmLoginServer.cs</DependentUpon>
</Compile>
<Compile Include="UIOperation\HuiFaFenUIOperation.cs" />
<Compile Include="UIOperation\HuiFenUIOperation.cs" />
<Compile Include="ILaboratoryTestOpera.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UIOperation\QuanShuiFenUIOperation.cs" />
<Compile Include="UIOperation\ShuiFenUIOperation.cs" />
<EmbeddedResource Include="frmBalanceField.resx">
<DependentUpon>frmBalanceField.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmBalanceMain.resx">
<DependentUpon>frmBalanceMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmConditionMap.resx">
<DependentUpon>frmConditionMap.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmConfigPort.resx">
<DependentUpon>frmConfigPort.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmHistory.resx">
<DependentUpon>frmHistory.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmLoginServer.resx">
<DependentUpon>frmLoginServer.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>
<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="..\CnasSynchronousCommon\CnasSynchronousCommon.csproj">
<Project>{8e0e5f2e-2ba2-4952-9f31-34c072cd86b3}</Project>
<Name>CnasSynchronousCommon</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchronusClient\CnasSynchronusBLL.csproj">
<Project>{cb9b6d92-3cc4-46c6-92e8-a6fd0ad48041}</Project>
<Name>CnasSynchronusClient</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchrousModel\CnasSynchrousModel.csproj">
<Project>{0c3243f5-729e-409c-b406-c6de56e632e0}</Project>
<Name>CnasSynchrousModel</Name>
</ProjectReference>
<ProjectReference Include="..\CNAS_SerialPort\CNAS_SerialPort.csproj">
<Project>{abb56058-b6fd-4747-a4e9-9c9361d6d993}</Project>
<Name>CNAS_SerialPort</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="scales_of_Balance_16px_1117673_easyicon.net.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

+ 227
- 0
CNAS_BalanceClient/ILaboratoryTestOpera.cs Ver arquivo

@@ -0,0 +1,227 @@
using System;
using System.Collections.Generic;
using CnasSynchronousCommon;
using CnasSynchronusClient;
using CnasSynchrousModel;

namespace CNAS_BalanceClient
{
interface ILaboratoryTestOpera
{
ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode);

}

public class QuanShuiFenOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "ARB";
laboratory.Granularity = "6mm";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}

public class ShuiFenOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Moisture";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}

public class HuiFenOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Ash";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}

public class HuiFaFenOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Volatile";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}

public class CrucibleHeatOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Crucible|Heat";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}

public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode, string strCrucible)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.Crucible_Number = strCrucible;
laboratory.DataType = "Crucible|Heat";
laboratory.WeighingType = "FRL";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}
public class CrucibleSulfurOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Crucible|Sulfur";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}

public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode, string strCrucible)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.Crucible_Number = strCrucible;
laboratory.DataType = "Crucible|Sulfur";
laboratory.WeighingType = "CLY";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}

public class CrucibleHydrogenOpera : ILaboratoryTestOpera
{
public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.DataType = "Crucible|Hydrogen";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}

public ReturnValue<LaboratoryTest> CreateLaboratoryTestData(string strCode, string strCrucible)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
LaboratoryTest laboratory = new LaboratoryTest();

laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCode;
laboratory.Crucible_Number = strCrucible;
laboratory.WeighingType = "CHN";
laboratory.DataType = "Crucible|Hydrogen";
laboratory.DataMold = "临时";
laboratory.Operator = GlobalCommonOperation.strUserName;

laboratory.OperationType = "Add";

if (returnValue.LstValue == null) returnValue.LstValue = new List<LaboratoryTest>();
returnValue.LstValue.Add(laboratory);

return returnValue;
}
}
}

+ 31
- 0
CNAS_BalanceClient/Program.cs Ver arquivo

@@ -0,0 +1,31 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

SystemFormatConfig systemFormat = FileOperation.GetSystemFormatConfigData();
GlobalCommonOperation.strStartGeneralVersion = systemFormat.StartGeneralVersion;
GlobalCommonOperation.strStartWebApi = systemFormat.StartWebApi;
GlobalCommonOperation.strWebApiUrl = systemFormat.WebApiUrl;
GlobalCommonOperation.strTargetDbType = systemFormat.TargetDBType;

if (new frmLoginServer().ShowDialog()==DialogResult.OK)
Application.Run(new frmBalanceMain());
}
}
}

+ 37
- 0
CNAS_BalanceClient/Properties/AssemblyInfo.cs Ver arquivo

@@ -0,0 +1,37 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("CNAS_BalanceClient")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CNAS_BalanceClient")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("00bea43e-d03e-4bf7-9474-f36bd7811f74")]

// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

+ 63
- 0
CNAS_BalanceClient/Properties/Resources.Designer.cs Ver arquivo

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNAS_BalanceClient.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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_BalanceClient.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;
}
}
}
}

+ 117
- 0
CNAS_BalanceClient/Properties/Resources.resx Ver arquivo

@@ -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>

+ 26
- 0
CNAS_BalanceClient/Properties/Settings.Designer.cs Ver arquivo

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNAS_BalanceClient.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.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;
}
}
}
}

+ 7
- 0
CNAS_BalanceClient/Properties/Settings.settings Ver arquivo

@@ -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>

+ 393
- 0
CNAS_BalanceClient/UIOperation/BalanceMainOperation.cs Ver arquivo

@@ -0,0 +1,393 @@
using CnasSynchronousCommon;
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace CNAS_BalanceClient
{
public class BalanceMainOperation
{
ILaboratoryTestOpera iopera;

/// <summary>
/// 根据当前切换的tab页,切换当前数据类型标识
/// </summary>
/// <param name="e"></param>
/// <param name="CurrentDataType"></param>
public void UpdateCurrentDataType(System.Windows.Forms.TabControlEventArgs e, ref string CurrentDataType)
{
//ARB 全水分;Moisture 水分;Ash 灰分;Volatile 挥发分;Crucible 坩埚;Heat 发热量:Sulfur 测硫;Hydrogen 测氢
switch (e.TabPage.Name)
{
case "tabpAllWater":
CurrentDataType = "ARB";
break;
case "tabpWater":
CurrentDataType = "Moisture";
break;
case "tabpAsh":
CurrentDataType = "Ash";
break;
case "tabpVoliate":
CurrentDataType = "Volatile";
break;
case "tabpCrucible":
CurrentDataType = "Crucible";
break;
case "tabpHeat":
CurrentDataType = "Heat";
break;
case "tabpSulfur":
CurrentDataType = "Sulfur";
break;
case "tabpHydrogen":
CurrentDataType = "Hydrogen";
break;
}
}

/// <summary>
/// 根据类型绑定datagridview
/// </summary>
/// <param name="dgv"></param>
/// <param name="laboratoryTests"></param>
/// <param name="currentDataType"></param>
public void BindData(System.Windows.Forms.DataGridView dgv, List<LaboratoryTest> laboratoryTests, string currentDataType)
{
dgv.DataSource = new BindingList<LaboratoryTest>();

var query = laboratoryTests.Where(s => s.DataType == currentDataType && s.OperationType != "delete").ToList<LaboratoryTest>();
dgv.DataSource = new BindingList<LaboratoryTest>(query);
}

/// <summary>
/// 绑定坩埚数据源
/// </summary>
/// <param name="dgv"></param>
/// <param name="laboratoryTests"></param>
/// <param name="currentDataType"></param>
public void BindCrucibleData(DataGridView dgv, List<LaboratoryTest> laboratoryTests, string currentDataType)
{
dgv.DataSource = new BindingList<LaboratoryTest>();

var query = laboratoryTests.Where(s => s.DataType == currentDataType &&(s.Crucible_Number==null||s.Crucible_Number=="")&& s.OperationType != "delete").ToList<LaboratoryTest>();
dgv.DataSource = new BindingList<LaboratoryTest>(query);
}
/// <summary>
/// 删除当前选中行
/// </summary>
/// <param name="dgv"></param>
public void DeleteData(System.Windows.Forms.DataGridView dgv, List<LaboratoryTest> laboratoryTests, string currentDataType)
{
//当前选中行
if (dgv.CurrentCell == null) return;
if (dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value == null) return;
string strID = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value.ToString(); //要求每个dgv的第一列必须为ID字段

var queryitem = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (queryitem.Count == 1)
{
queryitem[0].OperationType = "delete";
dgv.Rows.Remove(dgv.CurrentRow);
}
}

/// <summary>
/// 增加新数据(全水分/水分/灰分/挥发分/...)
/// </summary>
/// <param name="strCode"></param>
/// <param name="strType"></param>
/// <returns></returns>
public ReturnValue<LaboratoryTest> AddNewData(string strCode, string strType)
{
ReturnValue<LaboratoryTest> returnValue = new ReturnValue<LaboratoryTest>();
if (strCode == "" || strType == "")
{
returnValue.StrErrorMsg = string.Format("参数为空,{0}", strCode == "" ? "样品编码" : "化验类型");
return null;
}
//ARB 全水分;Moisture 水分;Ash 灰分;Volatile 挥发分;Crucible 坩埚;Heat 发热量:Sulfur 测硫;Hydrogen 测氢
switch (strType)
{
case "ARB":
iopera = new QuanShuiFenOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Moisture":
iopera = new ShuiFenOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Ash":
iopera = new HuiFenOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Volatile":
iopera = new HuiFaFenOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Crucible|Heat":
iopera = new CrucibleHeatOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Crucible|Sulfur":
iopera = new CrucibleSulfurOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
case "Crucible|Hydrogen":
iopera = new CrucibleHydrogenOpera();
returnValue = iopera.CreateLaboratoryTestData(strCode);
break;
}
return returnValue;
}
/// <summary>
/// 获取自动编码
/// </summary>
/// <param name="laboratoryTests"></param>
/// <returns></returns>
public string GetAutoCode(List<LaboratoryTest> laboratoryTests)
{
string strCode= "T";
string strNewCode = DateTime.Now.ToString("yyyyMMdd") + "01";
if (laboratoryTests.Count > 0)
{
var query = laboratoryTests.OrderByDescending(s => s.Auto_Code).ToList<LaboratoryTest>();
string strMaxCode = query[0].Auto_Code;
if (strMaxCode != "")
{
long maxIndex = Convert.ToInt64(strMaxCode.Substring(1, strMaxCode.Length - 1));
if (maxIndex >= Convert.ToInt64(strNewCode))
strCode += (maxIndex + 1).ToString();
else
strCode += strNewCode;
}
else
strCode += strNewCode;
}
else
{
strCode += strNewCode;
}
return strCode;
}
/// <summary>
/// 绘制序号列
/// </summary>
/// <param name="dgv"></param>
/// <param name="e"></param>
public void DrawFirstColumnIndex(DataGridView dgv, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
dgv.RowHeadersWidth - 4,
e.RowBounds.Height);

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
dgv.RowHeadersDefaultCellStyle.Font,
rectangle,
dgv.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}

/// <summary>
/// 提交编辑列
/// </summary>
/// <param name="dgv"></param>
/// <param name="laboratoryTests"></param>
/// <param name="e"></param>
public void CommitEditColumn(DataGridView dgv, List<LaboratoryTest> laboratoryTests, DataGridViewCellEventArgs e)
{
if (dgv.CurrentCell == null) return;
if (dgv.CurrentCell.Value == null) return;
if (e.ColumnIndex == 2) //仪器编号
{
string strInputValue = dgv.CurrentCell.Value.ToString();
string strCurrentID = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value.ToString();

var query = laboratoryTests.Where(s => s.GUID == strCurrentID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
query[0].Instrument_Number = strInputValue;
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";
}
}
if (e.ColumnIndex == 3) //坩埚编号
{
string strInputValue = dgv.CurrentCell.Value.ToString();
string strCurrentID = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value.ToString();

var query = laboratoryTests.Where(s => s.GUID == strCurrentID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
query[0].Crucible_Number = strInputValue;
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";
}
}
if (e.ColumnIndex == 12) //颗粒度
{
string strInputValue = dgv.CurrentCell.Value.ToString();
string strCurrentID = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value.ToString();

var query = laboratoryTests.Where(s => s.GUID == strCurrentID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
query[0].Granularity = strInputValue;
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";
}
}
}
/// <summary>
/// 把天平端数据更改到显示端和存储端
/// </summary>
/// <param name="dgvQuanShuiFen"></param>
/// <param name="lstWeightColumnIndex"></param>
/// <param name="balanceWeight"></param>
/// <param name="laboratoryTests"></param>
public void UpdateQuanShuiFenBalanceWeight(System.Windows.Forms.DataGridView dgvQuanShuiFen, List<string> lstWeightColumnIndex, double balanceWeight, List<LaboratoryTest> laboratoryTests,string strType)
{
lstWeightColumnIndex = new List<string>() { "4", "5", "7", "8", "9" }; //全水分的这些列从天平端获取
if (lstWeightColumnIndex.Contains(dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString()))
{
string strCurrentValue = dgvQuanShuiFen.CurrentCell.Value.ToString();
if (strCurrentValue != ""&&strCurrentValue!="0")
{
if (MessageBox.Show("单元格已经存在数据,继续将覆盖这个数据,是否继续?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
switch (strType)
{
case "ARB":
new QuanShuiFenUIOperation().UpdateQuanShuiFenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
case "Moisture":
new ShuiFenUIOperation().UpdateShuiFenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
case "Ash":
new HuiFenUIOperation().UpdateHuifenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
}
}
}
else
{
switch (strType)
{
case "ARB":
new QuanShuiFenUIOperation().UpdateQuanShuiFenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
case "Moisture":
new ShuiFenUIOperation().UpdateShuiFenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
case "Ash":
new HuiFenUIOperation().UpdateHuifenData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
break;
}
}
}
}

/// <summary>
/// 将天平传输的重量插入数据中
/// </summary>
/// <param name="dgvQuanShuiFen"></param>
/// <param name="lstWeightColumnIndex"></param>
/// <param name="balanceWeight"></param>
/// <param name="laboratoryTests"></param>
public void UpdateVolatileBalanceWeight(System.Windows.Forms.DataGridView dgvQuanShuiFen, List<string> lstWeightColumnIndex, double balanceWeight, List<LaboratoryTest> laboratoryTests)
{
lstWeightColumnIndex = new List<string>() { "4", "5", "7" }; //全水分的这些列从天平端获取
if (lstWeightColumnIndex.Contains(dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString()))
{
string strCurrentValue = dgvQuanShuiFen.CurrentCell.Value.ToString();
if (strCurrentValue != "" && strCurrentValue != "0")
{
if (MessageBox.Show("单元格已经存在数据,继续将覆盖这个数据,是否继续?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
new HuiFaFenUIOperation().UpdateVolatileData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
}
}
else
{
new HuiFaFenUIOperation().UpdateVolatileData(dgvQuanShuiFen, balanceWeight, laboratoryTests);
}
}
}

/// <summary>
/// 检查输入百分比大小是否是100内小数
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public bool CheckInputPercent(string strInput)
{
bool bIfSuccess = true;
double value = 0;
if (double.TryParse(strInput, out value))
{
if (value < 0 || value > 100)
{
MessageBox.Show("输入值范围为0~100", "提示");
bIfSuccess = false;
}
}
else
{
MessageBox.Show("输入值范围为0~100的数字", "提示");
bIfSuccess = false;
}
return bIfSuccess;
}

/// <summary>
/// 获取当前选中项的GUID集合
/// </summary>
/// <param name="dgv"></param>
/// <returns></returns>
public List<string> GetSelectItemID(DataGridView dgv)
{
List<string> lstSelectID = new List<string>();
for (int j = 0; j < dgv.SelectedRows.Count; j++)
{
string strID = dgv.SelectedRows[j].Cells[0].Value.ToString();
lstSelectID.Add(strID);
}
return lstSelectID;
}

/// <summary>
/// 将天平传输来的重量插入坩埚架数据中
/// </summary>
/// <param name="DstCurrentLeftGrids"></param>
/// <param name="dgvCrucibleShelf"></param>
/// <param name="defaultdouble"></param>
/// <param name="currentCrucibleDataType"></param>
/// <param name="laboratoryTests"></param>
public void UpdateCrucibleBalanceWeight(Dictionary<string,DataGridView> DstCurrentLeftGrids,DataGridView dgvCrucibleShelf, double defaultdouble,string currentCrucibleDataType,List<LaboratoryTest> laboratoryTests)
{
new CrucibleUIOperation().UpdateCrucibleBalanceWeight(DstCurrentLeftGrids, dgvCrucibleShelf, defaultdouble, currentCrucibleDataType, laboratoryTests);
}

/// <summary>
/// 新增一组坩埚架数据
/// </summary>
/// <param name="DictCrucuibleGrids"></param>
/// <param name="dgvCrucibleShelf"></param>
/// <param name="currentCrucibleDataType"></param>
/// <param name="strTypeTitle"></param>
/// <param name="laboratoryTests"></param>
public void AddCrucibleShelfData(Dictionary<string,DataGridView> DictCrucuibleGrids,DataGridView dgvCrucibleShelf, string currentCrucibleDataType,string strTypeTitle,List<LaboratoryTest> laboratoryTests)
{
new CrucibleUIOperation().AddCrucibleShelfData(DictCrucuibleGrids, dgvCrucibleShelf, currentCrucibleDataType, strTypeTitle, laboratoryTests);
}
}
}

+ 161
- 0
CNAS_BalanceClient/UIOperation/CrucibleUIOperation.cs Ver arquivo

@@ -0,0 +1,161 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public class CrucibleUIOperation
{
/// <summary>
/// 将天平端传输过来的重量传输到坩埚数据中
/// </summary>
/// <param name="DstCurrentLeftGrids"></param>
/// <param name="dgvCrucibleShelf"></param>
/// <param name="defaultdouble"></param>
/// <param name="currentCrucibleDataType"></param>
/// <param name="laboratoryTests"></param>
public void UpdateCrucibleBalanceWeight(Dictionary<string, DataGridView> DstCurrentLeftGrids, DataGridView dgvCrucibleShelf, double defaultdouble, string currentCrucibleDataType, List<LaboratoryTest> laboratoryTests)
{
//当前坩埚架选中单元格
if (dgvCrucibleShelf.CurrentCell == null) return;
if (dgvCrucibleShelf.CurrentCell.ColumnIndex != 3) return; //索引为3的列为“重量”列,其他列不允许插入数值

//是否满足称重范围
double MinValue = 0;
double MaxValue = 0;
switch (currentCrucibleDataType)
{
case "Crucible|Heat":
MinValue = 0.9;
MaxValue = 1.1;
break;
case "Crucible|Sulfur":
MinValue = 0.045;
MaxValue = 0.055;
break;
case "Crucible|Hydrogen":
MinValue = 0.05;
MaxValue = 0.2;
break;
}
if (defaultdouble > MaxValue || defaultdouble < MinValue)
{
MessageBox.Show($"称重范围是{MinValue}g~{MaxValue}g.", "提示");
return;
}

if (dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value == null || dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value.ToString() == "")
{
//此时说明datagridview中没有旧值,不存在覆盖问题,可以直接增加数据
string strSampleCode = GetCurrentSelectedSampleCode(currentCrucibleDataType, DstCurrentLeftGrids);
if (strSampleCode == "") return; //此时未获得左侧样品编号,不能在右侧增加数据

string strCrucibleNumber = dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_CrucibleNumber"].Value.ToString();
//新增加一条数据
LaboratoryTest laboratory = new LaboratoryTest();
laboratory.GUID = Guid.NewGuid().ToString();
laboratory.Sample_Number = strCrucibleNumber + "-" + strSampleCode;
laboratory.Sample_Weight = defaultdouble;
laboratory.Operator = GlobalCommonOperation.strUserName;
laboratory.OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
laboratory.DataType = currentCrucibleDataType;
laboratory.Crucible_Number = strCrucibleNumber;
laboratory.WeighingType = currentCrucibleDataType == "Crucible|Heat" ? "FRL" : (currentCrucibleDataType == "Crucible|Sulfur" ? "CLY" : "CHN");

laboratory.OperationType = "add";

laboratoryTests.Add(laboratory);

//更改datagridview中的值
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_ID"].Value = laboratory.GUID;
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleNumber"].Value = laboratory.Sample_Number;
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_WeighingType"].Value = laboratory.WeighingType;
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = laboratory.Sample_Weight;
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_Operator"].Value = laboratory.Operator;
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = laboratory.Sample_Weight;
}
else //此时说明datagridview中存在旧值,可能存在覆盖问题
{
if (MessageBox.Show("单元格已经存在数据,继续将覆盖这个数据,是否继续?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
string strCurrentID = dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strCurrentID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
query[0].Sample_Weight = defaultdouble;
query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
query[0].Operator = GlobalCommonOperation.strUserName;
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";

//更改datagridview中的值
dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = query[0].Sample_Weight;
}
}
}
}



/// <summary>
/// 获得当前坩埚选中的样品编码
/// </summary>
/// <param name="currentCrucibleDataType"></param>
/// <param name="DstCurrentGrids"></param>
/// <returns></returns>
private string GetCurrentSelectedSampleCode(string currentCrucibleDataType, Dictionary<string, DataGridView> DstCurrentGrids)
{
string strSampleCode = "";
DataGridView dgv = DstCurrentGrids[currentCrucibleDataType];
if (dgv.CurrentCell != null && dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value != null)
strSampleCode = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[1].Value.ToString();
return strSampleCode;
}

/// <summary>
/// 增加一组坩埚架数据
/// </summary>
/// <param name="DictCrucuibleGrids"></param>
/// <param name="dgvCrucibleShelf"></param>
/// <param name="currentCrucibleDataType"></param>
/// <param name="strTypeTitle"></param>
/// <param name="laboratoryTests"></param>
public void AddCrucibleShelfData(Dictionary<string, DataGridView> DictCrucuibleGrids, DataGridView dgvCrucibleShelf, string currentCrucibleDataType, string strTypeTitle, List<LaboratoryTest> laboratoryTests)
{
//0.判断左侧选中某项内容,如果左侧未选中任何内容,则不应该产生数据
string strSampleCode = GetCurrentSelectedSampleCode(currentCrucibleDataType, DictCrucuibleGrids);
//if (strSampleCode == "") return;
//1.在datagridview上增加20个数据行
dgvCrucibleShelf.Rows.Clear();
string strWeighingType = currentCrucibleDataType == "Crucible|Heat" ? "FRL" : (currentCrucibleDataType == "Crucible|Sulfur" ? "CLY" : "CHN");
for (int i = 1; i < 21; i++)
{
int index = dgvCrucibleShelf.Rows.Add();
dgvCrucibleShelf.Rows[index].Cells["Shelf_CrucibleNumber"].Value = strWeighingType + strTypeTitle + string.Format("{0:D2}", i);
}
//2.判断数据库中是否存在该坩埚架的内容,如果存在,则将数据插入到这20行数据行中
var query = laboratoryTests.Where(s => s.DataType == currentCrucibleDataType && s.Crucible_Number != null && s.Crucible_Number.StartsWith($"{strWeighingType}{strTypeTitle}") && s.OperaDateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd") && ((s.OperationType == null) || (s.OperationType != null && s.OperationType.ToLower() != "delete"))).ToList<LaboratoryTest>(); //判断条件:今天的,样品编码以左侧样品号结尾,坩埚号以称量类型开头。
if (query.Count > 0)
{
foreach (var item in query)
{
foreach (DataGridViewRow dgr in dgvCrucibleShelf.Rows)
{
if (dgr.Cells["Shelf_CrucibleNumber"].Value.ToString() == item.Crucible_Number)
{
dgr.Cells["Shelf_ID"].Value = item.GUID;
dgr.Cells["Shelf_SampleNumber"].Value = item.Sample_Number;
dgr.Cells["Shelf_WeighingType"].Value = item.WeighingType;
dgr.Cells["Shelf_SampleWeight"].Value = item.Sample_Weight;
dgr.Cells["Shelf_Operator"].Value = item.Operator;
}
}
}
}
}
}
}

+ 132
- 0
CNAS_BalanceClient/UIOperation/HuiFaFenUIOperation.cs Ver arquivo

@@ -0,0 +1,132 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public class HuiFaFenUIOperation
{
/// <summary>
/// 将天平传输的重量插入数据中
/// </summary>
/// <param name="dgvQuanShuiFen"></param>
/// <param name="balanceWeight"></param>
/// <param name="laboratoryTests"></param>
public void UpdateVolatileData(System.Windows.Forms.DataGridView dgvQuanShuiFen, double balanceWeight, List<LaboratoryTest> laboratoryTests)
{

bool bIfUpdate = true;
//更改内存值
string strID = dgvQuanShuiFen.Rows[dgvQuanShuiFen.CurrentCell.RowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
switch (dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString())
{
case "4": //空坩埚重
if (balanceWeight < 15 || balanceWeight > 20)
{
MessageBox.Show("样重范围是15g~20g", "提示");
bIfUpdate = false;
}
else
{
query[0].Empty_Crucible_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvQuanShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
}
break;
case "5": //样重
if (balanceWeight < 0.9 || balanceWeight > 1.1)
{
MessageBox.Show("样重范围是0.9g~1.1g");
bIfUpdate = false;
}
else
{
query[0].Sample_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvQuanShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
}
break;
case "6"://加样重
//query[0].AddSample_Weight = balanceWeight;
break;
case "7"://烘干重
//query[0].Drying_Weight = balanceWeight;

if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].BurningResidue_Weight;
query[0].BurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateVolatilePercentColumn(dgvQuanShuiFen, laboratoryTests, dgvQuanShuiFen.CurrentCell.RowIndex))
{
query[0].BurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
}
if (bIfUpdate)
{
query[0].Operator = GlobalCommonOperation.strUserName;
query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";

//更改显示值
dgvQuanShuiFen.CurrentCell.Value = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
}
}
}

/// <summary>
/// 实时更改挥发分百分比数据
/// </summary>
/// <param name="dgvHuiFaFen"></param>
/// <param name="laboratoryTests"></param>
/// <param name="currentRowIndex"></param>
/// <returns></returns>
public bool UpdateVolatilePercentColumn(DataGridView dgvHuiFaFen, List<LaboratoryTest> laboratoryTests, int currentRowIndex)
{
bool IfUpdate = true;
string strID = dgvHuiFaFen.Rows[currentRowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
if (query[0].Sample_Weight != 0 && query[0].AddSample_Weight != 0 && query[0].BurningResidue_Weight != 0)
{
string strMsg = "";
double percentdouble = 0;

percentdouble = CalculateOperation.CalculateVr(query[0].AddSample_Weight, query[0].Sample_Weight, new double[3] { query[0].BurningResidue_Weight, query[0].SecondBurningResidue_Weight, query[0].ThirdBurningResidue_Weight }, ref strMsg);
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFaFen.Rows[currentRowIndex].Cells["Vr"].Value = percentdouble;

percentdouble = CalculateOperation.CalculateVad(CalculateOperation.CalculateVr(query[0].AddSample_Weight, query[0].Sample_Weight, new double[3] { query[0].BurningResidue_Weight, query[0].SecondBurningResidue_Weight, query[0].ThirdBurningResidue_Weight }, ref strMsg), Convert.ToDouble(dgvHuiFaFen.Rows[currentRowIndex].Cells["MAD2"].Value));
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFaFen.Rows[currentRowIndex].Cells["VAD"].Value = percentdouble;

query[0].Vr = Convert.ToDouble(dgvHuiFaFen.Rows[currentRowIndex].Cells["Vr"].Value);
query[0].Vad = Convert.ToDouble(dgvHuiFaFen.Rows[currentRowIndex].Cells["VAD"].Value);
}
}
return IfUpdate;
}
}
}

+ 176
- 0
CNAS_BalanceClient/UIOperation/HuiFenUIOperation.cs Ver arquivo

@@ -0,0 +1,176 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public class HuiFenUIOperation
{
/// <summary>
/// 更改灰分数据
/// </summary>
/// <param name="dgvShuiFen"></param>
/// <param name="balanceWeight"></param>
/// <param name="laboratoryTests"></param>
public void UpdateHuifenData(System.Windows.Forms.DataGridView dgvShuiFen, double balanceWeight, List<LaboratoryTest> laboratoryTests)
{
//更改内存值
bool bIfUpdate = true;
string strID = dgvShuiFen.Rows[dgvShuiFen.CurrentCell.RowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
switch (dgvShuiFen.CurrentCell.ColumnIndex.ToString())
{
case "4": //空坩埚重
query[0].Empty_Crucible_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
break;
case "5": //样重
if (balanceWeight < 0.9 || balanceWeight > 1.1)
{
MessageBox.Show("样重范围是0.9g~1.1g", "提示");
bIfUpdate = false;
}
else
{
query[0].Sample_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
}
break;
case "6"://加样重
//query[0].AddSample_Weight = balanceWeight;
break;
case "7"://烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].BurningResidue_Weight;
query[0].BurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateAshPercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].BurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
case "8"://二次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].SecondBurningResidue_Weight;
query[0].SecondBurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateAshPercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].SecondBurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
case "9"://三次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].ThirdBurningResidue_Weight;
query[0].ThirdBurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateAshPercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].ThirdBurningResidue_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
}
if (bIfUpdate)
{
query[0].Operator = GlobalCommonOperation.strUserName;
query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";

//更改显示值
dgvShuiFen.CurrentCell.Value = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
}
}
}

/// <summary>
/// 更改灰分百分比
/// </summary>
/// <param name="dgvShuiFen"></param>
/// <param name="laboratoryTests"></param>
public bool UpdateAshPercentColumn(DataGridView dgvHuiFen, List<LaboratoryTest> laboratoryTests, int CurrentRowIndex)
{
bool IfUpdate = true;
string strID = dgvHuiFen.Rows[CurrentRowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
double percentdouble = 0;
if (query[0].Sample_Weight != 0 && query[0].AddSample_Weight != 0 && query[0].BurningResidue_Weight != 0)
{
string strMsg = "";
if (query[0].SecondBurningResidue_Weight == 0)
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[1] { query[0].BurningResidue_Weight });
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFen.Rows[CurrentRowIndex].Cells["DecrementValue2"].Value = percentdouble;
}
else if (query[0].ThirdBurningResidue_Weight == 0)
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[2] { query[0].BurningResidue_Weight, query[0].SecondBurningResidue_Weight });
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFen.Rows[CurrentRowIndex].Cells["DecrementValue2"].Value = percentdouble;
}
else
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[3] { query[0].BurningResidue_Weight, query[0].SecondBurningResidue_Weight, query[0].ThirdBurningResidue_Weight });
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFen.Rows[CurrentRowIndex].Cells["DecrementValue2"].Value = percentdouble;
}

percentdouble = CalculateOperation.CalculateAad(query[0].AddSample_Weight, query[0].Sample_Weight, new double[3] { query[0].BurningResidue_Weight, query[0].SecondBurningResidue_Weight, query[0].ThirdBurningResidue_Weight }, ref strMsg);
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgvHuiFen.Rows[CurrentRowIndex].Cells["AAD"].Value = percentdouble;

query[0].Aad = Convert.ToDouble(dgvHuiFen.Rows[CurrentRowIndex].Cells["AAD"].Value);
query[0].DecrementValue = Convert.ToDouble(dgvHuiFen.Rows[CurrentRowIndex].Cells["DecrementValue2"].Value);
}
}
return IfUpdate;
}

}
}

+ 182
- 0
CNAS_BalanceClient/UIOperation/QuanShuiFenUIOperation.cs Ver arquivo

@@ -0,0 +1,182 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public class QuanShuiFenUIOperation
{
/// <summary>
/// 更改全水分数据
/// </summary>
/// <param name="dgvQuanShuiFen">datagridview控件</param>
/// <param name="balanceWeight">天平传过来的重量</param>
/// <param name="laboratoryTests">数据源</param>
public void UpdateQuanShuiFenData(System.Windows.Forms.DataGridView dgvQuanShuiFen, double balanceWeight, List<LaboratoryTest> laboratoryTests)
{
//更改内存值
bool bIfUpdate = true;
string strID = dgvQuanShuiFen.Rows[dgvQuanShuiFen.CurrentCell.RowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
switch (dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString())
{
case "4": //空坩埚重
query[0].Empty_Crucible_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvQuanShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
break;
case "5": //样重
double MinValue = 0;
double MaxValue = 0;
if (query[0].Granularity == "13mm")
{
MinValue = 490;
MaxValue = 510;
}
else
{
MinValue = 10;
MaxValue = 12;
}
if (balanceWeight < MinValue || balanceWeight > MaxValue)
{
MessageBox.Show($"样重范围是{MinValue}g~{MaxValue}g.", "提示");
bIfUpdate = false;
}
else
{
query[0].Sample_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvQuanShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
}
break;
case "6"://加样重
//query[0].AddSample_Weight = balanceWeight;
break;
case "7"://烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].Drying_Weight;
query[0].Drying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateARBPercentColumn(dgvQuanShuiFen, laboratoryTests, dgvQuanShuiFen.CurrentCell.RowIndex))
{
query[0].Drying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
case "8"://二次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].SecondDrying_Weight;
query[0].SecondDrying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateARBPercentColumn(dgvQuanShuiFen, laboratoryTests, dgvQuanShuiFen.CurrentCell.RowIndex))
{
query[0].SecondDrying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
case "9"://三次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].ThirdDrying_Weight;
query[0].ThirdDrying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateARBPercentColumn(dgvQuanShuiFen, laboratoryTests, dgvQuanShuiFen.CurrentCell.RowIndex))
{
query[0].ThirdDrying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
}
if (bIfUpdate)
{
query[0].Operator = GlobalCommonOperation.strUserName;
query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";

//更改显示值
dgvQuanShuiFen.CurrentCell.Value = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
//if(dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString()=="4"|| dgvQuanShuiFen.CurrentCell.ColumnIndex.ToString()=="5")
// dgvQuanShuiFen.CurrentRow.Cells[6].Value = query[0].AddSample_Weight;
}
}
}

/// <summary>
/// 更改全水分百分比
/// </summary>
/// <param name="dgv"></param>
/// <param name="laboratoryTests"></param>
/// <returns></returns>
public bool UpdateARBPercentColumn(DataGridView dgv, List<LaboratoryTest> laboratoryTests, int CurrentRowIndex)
{
bool IfUpdate = true;
string strID = dgv.Rows[CurrentRowIndex].Cells["ID"].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
if (query[0].Sample_Weight != 0 && query[0].AddSample_Weight != 0 && query[0].Drying_Weight != 0)
{
string strMsg = "";
double percentdouble = 0;
if (query[0].SecondDrying_Weight == 0)
{
percentdouble = CalculateOperation.CalculateMt(query[0].AddSample_Weight, query[0].Sample_Weight, new double[1] { query[0].Drying_Weight }, ref strMsg);
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgv.Rows[CurrentRowIndex].Cells["Mt"].Value = percentdouble;
}

else if (query[0].ThirdDrying_Weight == 0)
{
percentdouble = CalculateOperation.CalculateMt(query[0].AddSample_Weight, query[0].Sample_Weight, new double[2] { query[0].Drying_Weight, query[0].SecondDrying_Weight }, ref strMsg);
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgv.Rows[CurrentRowIndex].Cells["Mt"].Value = percentdouble;
}
else
{
percentdouble = CalculateOperation.CalculateMt(query[0].AddSample_Weight, query[0].Sample_Weight, new double[3] { query[0].Drying_Weight, query[0].SecondDrying_Weight, query[0].ThirdDrying_Weight }, ref strMsg);
if (percentdouble > 100 || percentdouble < 0)
{
MessageBox.Show("百分比计算结果出错,请调整数据。", "提示");
return false;
}
dgv.Rows[CurrentRowIndex].Cells["Mt"].Value = percentdouble;
}

query[0].Mt = Convert.ToDouble(dgv.Rows[CurrentRowIndex].Cells["Mt"].Value);
}
}
return IfUpdate;
}
}
}

+ 151
- 0
CNAS_BalanceClient/UIOperation/ShuiFenUIOperation.cs Ver arquivo

@@ -0,0 +1,151 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public class ShuiFenUIOperation
{
/// <summary>
/// 更改水分数据
/// </summary>
/// <param name="dgvShuiFen"></param>
/// <param name="balanceWeight"></param>
/// <param name="laboratoryTests"></param>
public void UpdateShuiFenData(System.Windows.Forms.DataGridView dgvShuiFen, double balanceWeight, List<LaboratoryTest> laboratoryTests)
{
//更改内存值
bool bIfUpdate = true;
string strID = dgvShuiFen.Rows[dgvShuiFen.CurrentCell.RowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
switch (dgvShuiFen.CurrentCell.ColumnIndex.ToString())
{
case "4": //空坩埚重
query[0].Empty_Crucible_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
break;
case "5": //样重
if (balanceWeight < 0.9 || balanceWeight > 1.1)
{
MessageBox.Show("样重范围是0.9g~1.1g", "提示");
bIfUpdate = false;
}
else
{
query[0].Sample_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
dgvShuiFen.CurrentRow.Cells[6].Value = CalculateOperation.GetShowDoubleValueN4(query[0].Empty_Crucible_Weight + query[0].Sample_Weight);
}
break;
case "6"://加样重
//query[0].AddSample_Weight = balanceWeight;
break;
case "7"://烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].Drying_Weight;
query[0].Drying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateMoisturePercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].Drying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
};
break;
case "8"://二次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].SecondDrying_Weight;
query[0].SecondDrying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateMoisturePercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].SecondDrying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
case "9"://三次烘干重
if (query[0].AddSample_Weight != 0 && balanceWeight > query[0].AddSample_Weight)
{
MessageBox.Show("烘干重不能大于加样重,请调整后再传入。", "提示");
bIfUpdate = false;
}
else
{
double oldvaue = query[0].ThirdDrying_Weight;
query[0].ThirdDrying_Weight = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
if (!UpdateMoisturePercentColumn(dgvShuiFen, laboratoryTests, dgvShuiFen.CurrentCell.RowIndex))
{
query[0].ThirdDrying_Weight = CalculateOperation.GetShowDoubleValueN4(oldvaue);
bIfUpdate = false;
}
}
break;
}
if (bIfUpdate)
{
query[0].Operator = GlobalCommonOperation.strUserName;
query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (query[0].OperationType == null || query[0].OperationType == "")
query[0].OperationType = "update";

//更改显示值
dgvShuiFen.CurrentCell.Value = CalculateOperation.GetShowDoubleValueN4(balanceWeight);
}
}
}

/// <summary>
/// 更改水分百分比
/// </summary>
/// <param name="dgvShuiFen"></param>
/// <param name="laboratoryTests"></param>
/// <returns></returns>
public bool UpdateMoisturePercentColumn(DataGridView dgvShuiFen, List<LaboratoryTest> laboratoryTests, int CurrentRowIndex)
{
bool IfUpdate = true;
string strID = dgvShuiFen.Rows[CurrentRowIndex].Cells[0].Value.ToString();
var query = laboratoryTests.Where(s => s.GUID == strID).ToList<LaboratoryTest>();
if (query.Count == 1)
{
if (query[0].Sample_Weight != 0 && query[0].AddSample_Weight != 0 && query[0].Drying_Weight != 0)
{
double percentdouble = 0;
if (query[0].SecondDrying_Weight == 0)
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[1] { query[0].Drying_Weight });
dgvShuiFen.Rows[CurrentRowIndex].Cells["DecrementValue1"].Value = percentdouble;
}

else if (query[0].ThirdDrying_Weight == 0)
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[2] { query[0].Drying_Weight, query[0].SecondDrying_Weight });
dgvShuiFen.Rows[CurrentRowIndex].Cells["DecrementValue1"].Value = percentdouble;
}
else
{
percentdouble = CalculateOperation.CalculateDecrement(query[0].AddSample_Weight, new double[3] { query[0].Drying_Weight, query[0].SecondDrying_Weight, query[0].ThirdDrying_Weight });
dgvShuiFen.Rows[CurrentRowIndex].Cells["DecrementValue1"].Value = percentdouble;
}
query[0].DecrementValue = Convert.ToDouble(dgvShuiFen.Rows[CurrentRowIndex].Cells["DecrementValue1"].Value);
}
}
return IfUpdate;
}
}
}

+ 770
- 0
CNAS_BalanceClient/frmBalanceField.Designer.cs Ver arquivo

@@ -0,0 +1,770 @@
namespace CNAS_BalanceClient
{
partial class frmBalanceField
{
/// <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.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 dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmBalanceField));
this.pnlAll = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.pnlbalanceRight = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage6 = new System.Windows.Forms.TabPage();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.dgvbalancefield = new System.Windows.Forms.DataGridView();
this.InstruFieldName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.InstruDataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.panel4 = new System.Windows.Forms.Panel();
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.panel5 = new System.Windows.Forms.Panel();
this.cbxCnas = new System.Windows.Forms.ComboBox();
this.label13 = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel();
this.panel1 = new System.Windows.Forms.Panel();
this.panel10 = new System.Windows.Forms.Panel();
this.btnDeleteMapping = new System.Windows.Forms.Button();
this.btnAddMapping = new System.Windows.Forms.Button();
this.pnlbalanceLeft = new System.Windows.Forms.Panel();
this.panel9 = new System.Windows.Forms.Panel();
this.panel7 = new System.Windows.Forms.Panel();
this.lstBalance = new System.Windows.Forms.ListBox();
this.panel6 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.pnlBottom = new System.Windows.Forms.Panel();
this.panel8 = new System.Windows.Forms.Panel();
this.btnOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.pnlTop = new System.Windows.Forms.Panel();
this.pnlRight = new System.Windows.Forms.Panel();
this.pnlLeft = new System.Windows.Forms.Panel();
this.panel11 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.panel12 = new System.Windows.Forms.Panel();
this.txtInstrumentColumn = new System.Windows.Forms.TextBox();
this.cbxCNASColumn = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.panel13 = new System.Windows.Forms.Panel();
this.dgvMapping = new System.Windows.Forms.DataGridView();
this.InstrumentField = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.CnasField = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.PrimaryKey = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.DateKey = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.btnConditionMap = new System.Windows.Forms.Button();
this.pnlAll.SuspendLayout();
this.pnlCenter.SuspendLayout();
this.pnlbalanceRight.SuspendLayout();
this.panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.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.dgvbalancefield)).BeginInit();
this.panel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).BeginInit();
this.panel5.SuspendLayout();
this.panel1.SuspendLayout();
this.panel10.SuspendLayout();
this.pnlbalanceLeft.SuspendLayout();
this.panel7.SuspendLayout();
this.panel6.SuspendLayout();
this.pnlBottom.SuspendLayout();
this.panel8.SuspendLayout();
this.panel11.SuspendLayout();
this.panel12.SuspendLayout();
this.panel13.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvMapping)).BeginInit();
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(844, 554);
this.pnlAll.TabIndex = 0;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.pnlbalanceRight);
this.pnlCenter.Controls.Add(this.pnlbalanceLeft);
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlCenter.Location = new System.Drawing.Point(10, 5);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(829, 493);
this.pnlCenter.TabIndex = 4;
//
// pnlbalanceRight
//
this.pnlbalanceRight.Controls.Add(this.panel3);
this.pnlbalanceRight.Controls.Add(this.panel2);
this.pnlbalanceRight.Controls.Add(this.panel1);
this.pnlbalanceRight.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlbalanceRight.Location = new System.Drawing.Point(121, 0);
this.pnlbalanceRight.Name = "pnlbalanceRight";
this.pnlbalanceRight.Size = new System.Drawing.Size(708, 493);
this.pnlbalanceRight.TabIndex = 1;
//
// panel3
//
this.panel3.Controls.Add(this.splitContainer1);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(5, 0);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(703, 462);
this.panel3.TabIndex = 2;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.panel13);
this.splitContainer1.Panel1.Controls.Add(this.panel11);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.tabControl1);
this.splitContainer1.Size = new System.Drawing.Size(703, 462);
this.splitContainer1.SplitterDistance = 202;
this.splitContainer1.TabIndex = 0;
//
// 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(703, 256);
this.tabControl1.TabIndex = 2;
//
// 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(695, 226);
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.dgvbalancefield);
this.splitContainer2.Panel1.Controls.Add(this.panel4);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.dgvCnas);
this.splitContainer2.Panel2.Controls.Add(this.panel5);
this.splitContainer2.Size = new System.Drawing.Size(689, 220);
this.splitContainer2.SplitterDistance = 342;
this.splitContainer2.TabIndex = 1;
//
// dgvbalancefield
//
this.dgvbalancefield.AllowUserToAddRows = false;
this.dgvbalancefield.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.dgvbalancefield.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dgvbalancefield.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvbalancefield.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.InstruFieldName,
this.InstruDataType});
this.dgvbalancefield.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvbalancefield.Location = new System.Drawing.Point(0, 34);
this.dgvbalancefield.Name = "dgvbalancefield";
this.dgvbalancefield.ReadOnly = true;
this.dgvbalancefield.RowHeadersVisible = false;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dgvbalancefield.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvbalancefield.RowTemplate.Height = 23;
this.dgvbalancefield.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvbalancefield.Size = new System.Drawing.Size(342, 186);
this.dgvbalancefield.TabIndex = 1;
//
// InstruFieldName
//
this.InstruFieldName.DataPropertyName = "FieldName";
this.InstruFieldName.HeaderText = "列名";
this.InstruFieldName.Name = "InstruFieldName";
this.InstruFieldName.ReadOnly = true;
this.InstruFieldName.Width = 155;
//
// InstruDataType
//
this.InstruDataType.DataPropertyName = "FieldType";
this.InstruDataType.HeaderText = "数据类型";
this.InstruDataType.Name = "InstruDataType";
this.InstruDataType.ReadOnly = true;
this.InstruDataType.Width = 130;
//
// panel4
//
this.panel4.Controls.Add(this.label12);
this.panel4.Dock = System.Windows.Forms.DockStyle.Top;
this.panel4.Location = new System.Drawing.Point(0, 0);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(342, 34);
this.panel4.TabIndex = 0;
//
// 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(92, 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;
this.dgvCnas.RowHeadersVisible = false;
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(343, 186);
this.dgvCnas.TabIndex = 2;
//
// CNASFieldName
//
this.CNASFieldName.DataPropertyName = "CnasFieldName";
this.CNASFieldName.HeaderText = "列名";
this.CNASFieldName.Name = "CNASFieldName";
this.CNASFieldName.ReadOnly = true;
this.CNASFieldName.Width = 155;
//
// CnasDataType
//
this.CnasDataType.DataPropertyName = "CnasDataType";
this.CnasDataType.HeaderText = "数据类型";
this.CnasDataType.Name = "CnasDataType";
this.CnasDataType.ReadOnly = true;
this.CnasDataType.Width = 130;
//
// panel5
//
this.panel5.Controls.Add(this.cbxCnas);
this.panel5.Controls.Add(this.label13);
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
this.panel5.Location = new System.Drawing.Point(0, 0);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(343, 34);
this.panel5.TabIndex = 0;
//
// cbxCnas
//
this.cbxCnas.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbxCnas.FormattingEnabled = true;
this.cbxCnas.Location = new System.Drawing.Point(122, 6);
this.cbxCnas.Name = "cbxCnas";
this.cbxCnas.Size = new System.Drawing.Size(189, 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数据库表名:";
//
// panel2
//
this.panel2.Dock = System.Windows.Forms.DockStyle.Left;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(5, 462);
this.panel2.TabIndex = 1;
//
// panel1
//
this.panel1.Controls.Add(this.panel10);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 462);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(708, 31);
this.panel1.TabIndex = 0;
//
// panel10
//
this.panel10.Controls.Add(this.btnConditionMap);
this.panel10.Controls.Add(this.btnDeleteMapping);
this.panel10.Controls.Add(this.btnAddMapping);
this.panel10.Dock = System.Windows.Forms.DockStyle.Right;
this.panel10.Location = new System.Drawing.Point(444, 0);
this.panel10.Name = "panel10";
this.panel10.Size = new System.Drawing.Size(264, 31);
this.panel10.TabIndex = 5;
//
// btnDeleteMapping
//
this.btnDeleteMapping.Location = new System.Drawing.Point(93, 2);
this.btnDeleteMapping.Name = "btnDeleteMapping";
this.btnDeleteMapping.Size = new System.Drawing.Size(79, 23);
this.btnDeleteMapping.TabIndex = 4;
this.btnDeleteMapping.Text = "移除映射";
this.btnDeleteMapping.UseVisualStyleBackColor = true;
this.btnDeleteMapping.Click += new System.EventHandler(this.btnDeleteMapping_Click);
//
// btnAddMapping
//
this.btnAddMapping.Location = new System.Drawing.Point(8, 2);
this.btnAddMapping.Name = "btnAddMapping";
this.btnAddMapping.Size = new System.Drawing.Size(79, 23);
this.btnAddMapping.TabIndex = 3;
this.btnAddMapping.Text = "新增映射";
this.btnAddMapping.UseVisualStyleBackColor = true;
this.btnAddMapping.Click += new System.EventHandler(this.btnAddMapping_Click);
//
// pnlbalanceLeft
//
this.pnlbalanceLeft.Controls.Add(this.panel9);
this.pnlbalanceLeft.Controls.Add(this.panel7);
this.pnlbalanceLeft.Controls.Add(this.panel6);
this.pnlbalanceLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlbalanceLeft.Location = new System.Drawing.Point(0, 0);
this.pnlbalanceLeft.Name = "pnlbalanceLeft";
this.pnlbalanceLeft.Size = new System.Drawing.Size(121, 493);
this.pnlbalanceLeft.TabIndex = 0;
//
// panel9
//
this.panel9.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel9.Location = new System.Drawing.Point(0, 462);
this.panel9.Name = "panel9";
this.panel9.Size = new System.Drawing.Size(121, 31);
this.panel9.TabIndex = 3;
//
// panel7
//
this.panel7.Controls.Add(this.lstBalance);
this.panel7.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel7.Location = new System.Drawing.Point(0, 29);
this.panel7.Name = "panel7";
this.panel7.Size = new System.Drawing.Size(121, 464);
this.panel7.TabIndex = 2;
//
// lstBalance
//
this.lstBalance.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstBalance.Font = new System.Drawing.Font("微软雅黑", 9.5F);
this.lstBalance.FormattingEnabled = true;
this.lstBalance.ItemHeight = 19;
this.lstBalance.Items.AddRange(new object[] {
"全水分",
"水分",
"灰分",
"挥发分"});
this.lstBalance.Location = new System.Drawing.Point(0, 0);
this.lstBalance.Name = "lstBalance";
this.lstBalance.Size = new System.Drawing.Size(121, 464);
this.lstBalance.TabIndex = 0;
this.lstBalance.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lstBalance_DrawItem);
this.lstBalance.SelectedIndexChanged += new System.EventHandler(this.lstBalance_SelectedIndexChanged);
//
// panel6
//
this.panel6.Controls.Add(this.label1);
this.panel6.Dock = System.Windows.Forms.DockStyle.Top;
this.panel6.Location = new System.Drawing.Point(0, 0);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(121, 29);
this.panel6.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(-1, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 17);
this.label1.TabIndex = 0;
this.label1.Text = "化验类型";
//
// pnlBottom
//
this.pnlBottom.Controls.Add(this.panel8);
this.pnlBottom.Controls.Add(this.groupBox1);
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(10, 498);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(829, 56);
this.pnlBottom.TabIndex = 3;
//
// panel8
//
this.panel8.Controls.Add(this.btnOK);
this.panel8.Dock = System.Windows.Forms.DockStyle.Right;
this.panel8.Location = new System.Drawing.Point(732, 13);
this.panel8.Name = "panel8";
this.panel8.Size = new System.Drawing.Size(97, 43);
this.panel8.TabIndex = 2;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(4, 6);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 0;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// groupBox1
//
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox1.Location = new System.Drawing.Point(0, 0);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(829, 13);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
//
// 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(829, 5);
this.pnlTop.TabIndex = 2;
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(839, 0);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(5, 554);
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, 554);
this.pnlLeft.TabIndex = 0;
//
// panel11
//
this.panel11.Controls.Add(this.panel12);
this.panel11.Controls.Add(this.label2);
this.panel11.Dock = System.Windows.Forms.DockStyle.Top;
this.panel11.Location = new System.Drawing.Point(0, 0);
this.panel11.Name = "panel11";
this.panel11.Size = new System.Drawing.Size(703, 29);
this.panel11.TabIndex = 2;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(10, 5);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(44, 17);
this.label2.TabIndex = 1;
this.label2.Text = "映射表";
//
// panel12
//
this.panel12.Controls.Add(this.txtInstrumentColumn);
this.panel12.Controls.Add(this.cbxCNASColumn);
this.panel12.Controls.Add(this.label3);
this.panel12.Dock = System.Windows.Forms.DockStyle.Right;
this.panel12.Location = new System.Drawing.Point(394, 0);
this.panel12.Name = "panel12";
this.panel12.Size = new System.Drawing.Size(309, 29);
this.panel12.TabIndex = 3;
//
// txtInstrumentColumn
//
this.txtInstrumentColumn.Location = new System.Drawing.Point(111, 3);
this.txtInstrumentColumn.Name = "txtInstrumentColumn";
this.txtInstrumentColumn.ReadOnly = true;
this.txtInstrumentColumn.Size = new System.Drawing.Size(190, 23);
this.txtInstrumentColumn.TabIndex = 10;
this.txtInstrumentColumn.DoubleClick += new System.EventHandler(this.txtInstrumentColumn_DoubleClick);
//
// cbxCNASColumn
//
this.cbxCNASColumn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbxCNASColumn.FormattingEnabled = true;
this.cbxCNASColumn.Location = new System.Drawing.Point(111, 7);
this.cbxCNASColumn.Name = "cbxCNASColumn";
this.cbxCNASColumn.Size = new System.Drawing.Size(179, 25);
this.cbxCNASColumn.TabIndex = 9;
this.cbxCNASColumn.Visible = false;
this.cbxCNASColumn.SelectedIndexChanged += new System.EventHandler(this.cbxCNASColumn_SelectedIndexChanged);
this.cbxCNASColumn.Leave += new System.EventHandler(this.cbxCNASColumn_Leave);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 7);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(113, 17);
this.label3.TabIndex = 8;
this.label3.Text = "CNAS仪器信息列:";
//
// panel13
//
this.panel13.Controls.Add(this.dgvMapping);
this.panel13.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel13.Location = new System.Drawing.Point(0, 29);
this.panel13.Name = "panel13";
this.panel13.Size = new System.Drawing.Size(703, 173);
this.panel13.TabIndex = 3;
//
// 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.PrimaryKey,
this.DateKey});
this.dgvMapping.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvMapping.Location = new System.Drawing.Point(0, 0);
this.dgvMapping.MultiSelect = false;
this.dgvMapping.Name = "dgvMapping";
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(703, 173);
this.dgvMapping.TabIndex = 1;
//
// InstrumentField
//
this.InstrumentField.DataPropertyName = "SourceField";
this.InstrumentField.HeaderText = "仪器数据列";
this.InstrumentField.Name = "InstrumentField";
this.InstrumentField.Width = 200;
//
// CnasField
//
this.CnasField.DataPropertyName = "TargetField";
this.CnasField.HeaderText = "CNAS数据列";
this.CnasField.Name = "CnasField";
this.CnasField.Width = 200;
//
// PrimaryKey
//
this.PrimaryKey.DataPropertyName = "IfPrimaryKey";
this.PrimaryKey.HeaderText = "关键字段";
this.PrimaryKey.Name = "PrimaryKey";
this.PrimaryKey.Width = 80;
//
// DateKey
//
this.DateKey.DataPropertyName = "IfDateField";
this.DateKey.HeaderText = "日期字段";
this.DateKey.Name = "DateKey";
//
// btnConditionMap
//
this.btnConditionMap.Location = new System.Drawing.Point(178, 2);
this.btnConditionMap.Name = "btnConditionMap";
this.btnConditionMap.Size = new System.Drawing.Size(79, 23);
this.btnConditionMap.TabIndex = 5;
this.btnConditionMap.Text = "条件映射";
this.btnConditionMap.UseVisualStyleBackColor = true;
this.btnConditionMap.Click += new System.EventHandler(this.btnConditionMap_Click);
//
// frmBalanceField
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(844, 554);
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 = "frmBalanceField";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "天平端字段映射";
this.Load += new System.EventHandler(this.frmBalanceField_Load);
this.pnlAll.ResumeLayout(false);
this.pnlCenter.ResumeLayout(false);
this.pnlbalanceRight.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.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.dgvbalancefield)).EndInit();
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).EndInit();
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel10.ResumeLayout(false);
this.pnlbalanceLeft.ResumeLayout(false);
this.panel7.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
this.pnlBottom.ResumeLayout(false);
this.panel8.ResumeLayout(false);
this.panel11.ResumeLayout(false);
this.panel11.PerformLayout();
this.panel12.ResumeLayout(false);
this.panel12.PerformLayout();
this.panel13.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvMapping)).EndInit();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Panel pnlbalanceRight;
private System.Windows.Forms.Panel pnlbalanceLeft;
private System.Windows.Forms.ListBox lstBalance;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button btnDeleteMapping;
private System.Windows.Forms.Button btnAddMapping;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage6;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.DataGridView dgvbalancefield;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.DataGridView dgvCnas;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.ComboBox cbxCnas;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Panel panel7;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.Panel panel10;
private System.Windows.Forms.Panel panel9;
private System.Windows.Forms.DataGridViewTextBoxColumn InstruFieldName;
private System.Windows.Forms.DataGridViewTextBoxColumn InstruDataType;
private System.Windows.Forms.DataGridViewTextBoxColumn CNASFieldName;
private System.Windows.Forms.DataGridViewTextBoxColumn CnasDataType;
private System.Windows.Forms.Panel panel11;
private System.Windows.Forms.Panel panel12;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panel13;
private System.Windows.Forms.DataGridView dgvMapping;
private System.Windows.Forms.DataGridViewTextBoxColumn InstrumentField;
private System.Windows.Forms.DataGridViewTextBoxColumn CnasField;
private System.Windows.Forms.DataGridViewCheckBoxColumn PrimaryKey;
private System.Windows.Forms.DataGridViewCheckBoxColumn DateKey;
private System.Windows.Forms.TextBox txtInstrumentColumn;
private System.Windows.Forms.ComboBox cbxCNASColumn;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button btnConditionMap;
}
}

+ 409
- 0
CNAS_BalanceClient/frmBalanceField.cs Ver arquivo

@@ -0,0 +1,409 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace CNAS_BalanceClient
{
public partial class frmBalanceField : Form
{
SyncInstrumentItemInfo currentSyncItem = new SyncInstrumentItemInfo();
//List<SyncParamasInfo> lstpramas = new List<SyncParamasInfo>();
public List<SyncBalanceItem> syncBalanceItems = new List<SyncBalanceItem>();
SyncBalanceItem currentBalanceItem = new SyncBalanceItem();
DataBaseInfo targetDataBase = new DataBaseInfo();
public frmBalanceField(List<SyncBalanceItem> syncBalanceItems, DataBaseInfo targetDataBase)
{
InitializeComponent();

this.syncBalanceItems = syncBalanceItems;
this.targetDataBase = targetDataBase;


dgvMapping.AutoGenerateColumns = false;
dgvMapping.RowHeadersVisible = false;

dgvbalancefield.AutoGenerateColumns = false;
dgvbalancefield.RowHeadersVisible = false;

dgvCnas.AutoGenerateColumns = false;
dgvCnas.RowHeadersVisible = false;
}

private void lstBalance_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstBalance.SelectedItem == null) return;
string strCurrentSelect = lstBalance.SelectedItem.ToString();
dgvMapping.DataSource = new BindingList<SyncParamasInfo>();

//根据选中项加载数据
dgvbalancefield.DataSource = new BindingList<BalanceField>(BindBalanceField(strCurrentSelect));


//绑定映射数据
var syncItems = syncBalanceItems.Where(s => s.Type == strCurrentSelect).ToList<SyncBalanceItem>();
if (syncItems != null && syncItems.Count >= 1)
{
currentBalanceItem = syncItems[0];

if (!string.IsNullOrWhiteSpace(currentBalanceItem.CnasInstrumentColumn))
txtInstrumentColumn.Text = currentBalanceItem.CnasInstrumentColumn;
else
txtInstrumentColumn.Text = "";

if (syncItems[0].syncParamasInfos!=null)
dgvMapping.DataSource = new BindingList<SyncParamasInfo>(syncItems[0].syncParamasInfos);
else
dgvMapping.DataSource = new BindingList<SyncParamasInfo>();
}
else
{
currentBalanceItem = new SyncBalanceItem()
{
GUID=Guid.NewGuid().ToString(),
Type = strCurrentSelect
};
syncBalanceItems.Add(currentBalanceItem);
}
}

private List<BalanceField> BindBalanceField(string strItem)
{
List<BalanceField> balanceFields = new List<BalanceField>();
switch (strItem)
{
case "全水分":
balanceFields=InitinalBalanceField("1");
break;
case "水分":
balanceFields=InitinalBalanceField("2");
break;
case "灰分":
balanceFields=InitinalBalanceField("3");
break;
case "挥发分":
balanceFields=InitinalBalanceField("4");
break;
}
return balanceFields;
}


private List<BalanceField> InitinalBalanceField(string strValue)
{
List<BalanceField> balanceFields = new List<BalanceField>();
//得到类的所有属性
var lstProperties = new LaboratoryTest().GetType().GetProperties();
foreach (var oProperty in lstProperties)
{
balanceFields.Add(new BalanceField() { FieldName = oProperty.Name, FieldType = oProperty.PropertyType });

////得到每一个属性的特性类集合
//IList<CustomAttributeData> lstAttr = oProperty.GetCustomAttributesData();
//foreach (var oAttr in lstAttr)
//{
// var lstAttrArgu = oAttr.NamedArguments;
// foreach (CustomAttributeNamedArgument oAttrAru in lstAttrArgu)
// {
// //if (oAttrAru.MemberInfo.Name == "ApplyType"&& oAttrAru.TypedValue.Value.ToString().Contains(strValue))
// {
// balanceFields.Add(new BalanceField() { FieldName = oProperty.Name, FieldType = oProperty.GetType() });
// }
// }
//}
}
return balanceFields;
}

private void frmBalanceField_Load(object sender, EventArgs e)
{
////1.加载数据
DataTable dtCNAS = CnasDataOperationFact.CnasDataOperation().GetAllCNASTablesName(targetDataBase);
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 = "";
}

////2.初始化天平端数据
lstBalance.SelectedIndex = 0;
}

public class BalanceField
{
public string FieldName { get; set; }

public Type FieldType { get; set; }
}

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, targetDataBase);
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;

//绑定数据
cbxCNASColumn.DataSource = dtCnasShow.Copy();
cbxCNASColumn.DisplayMember = "CnasFieldName";
cbxCNASColumn.ValueMember = "CnasFieldName";

if (dtTableStruct.Columns.Count > 0)
{
if (!string.IsNullOrWhiteSpace(currentSyncItem.CnasInstrumentColumn) && dtTableStruct.Columns.Contains(currentSyncItem.CnasInstrumentColumn))
{
cbxCNASColumn.Text = this.txtInstrumentColumn.Text = currentSyncItem.CnasInstrumentColumn;
}
else
{
cbxCNASColumn.Text = this.txtInstrumentColumn.Text = "";
}
}
}
}

private void btnAddMapping_Click(object sender, EventArgs e)
{
if (currentBalanceItem.syncParamasInfos == null)
currentBalanceItem.syncParamasInfos = new List<SyncParamasInfo>();
SyncParamasInfo syncParamas = new SyncParamasInfo();
//仪器表名和选中行
syncParamas.SourceTable = lstBalance.SelectedItem.ToString();
syncParamas.SourceField = dgvbalancefield.Rows[dgvbalancefield.CurrentCell.RowIndex].Cells[0].Value.ToString();

//CNAS表名和选中行
syncParamas.TargetTable = cbxCnas.SelectedValue.ToString().ToUpper();
syncParamas.TargetField = dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells[0].Value.ToString().ToUpper();

//验证数据合法性
SyncParamsOperation paramsOperation = new SyncParamsOperation();
if (paramsOperation.CheckTableIfRepeat(currentBalanceItem.syncParamasInfos, syncParamas.SourceTable, syncParamas.TargetTable))
{
MessageBox.Show("已存在不同表单映射数据,无法添加!", "提示");
return;
}
//if (paramsOperation.CheckSourceFieldRepeat(currentBalanceItem.syncParamasInfos, syncParamas.SourceTable, syncParamas.SourceField))
//{
// MessageBox.Show("天平端数据字段已分配,请重新选择!");
// return;
//}
if (paramsOperation.CheckTargetFieldRepeat(currentBalanceItem.syncParamasInfos, syncParamas.TargetTable, syncParamas.TargetField))
{
MessageBox.Show("CNAS端数据字段已分配,请重新选择!", "提示");
return;
}
if (paramsOperation.CheckTargetKeepField(syncParamas.TargetField))
{
MessageBox.Show("CNAS端数据字段为保留字段,请重新选择!", "提示");
return;
}

//绑定数据
currentBalanceItem.syncParamasInfos.Add(syncParamas);
dgvMapping.DataSource = new BindingList<SyncParamasInfo>(currentBalanceItem.syncParamasInfos);
//选中最后一行
dgvMapping.CurrentCell = dgvMapping.Rows[dgvMapping.Rows.Count - 1].Cells[0];
}

private void btnDeleteMapping_Click(object sender, EventArgs e)
{
//当前选中项
if (dgvMapping.CurrentCell == null) return;
string strSourceField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["InstrumentField"].Value.ToString();
string strTargetField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["CnasField"].Value.ToString();

var lstDelItems = currentBalanceItem.syncParamasInfos.Where(s => s.SourceField == strSourceField && s.TargetField == strTargetField).ToList<SyncParamasInfo>();
if (lstDelItems.Count > 0)
{
foreach (var item in lstDelItems)
{
currentBalanceItem.syncParamasInfos.Remove(item);
}

dgvMapping.DataSource = new BindingList<SyncParamasInfo>(currentBalanceItem.syncParamasInfos);
}
}

private void btnOK_Click(object sender, EventArgs e)
{
if (!CheckIfHaveDateField())
{
if (MessageBox.Show("日期字段的缺失可能会导致后续不能准确数据传输。是否继续保存?", "",MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Cancel)
return;
}
//将数据存储到本地
if (FileOperation.SaveLocalBalanceData(syncBalanceItems))
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("保存配置失败!", "提示");
}
}

private void dgvMapping_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dgvMapping.CurrentCell == null) return;
if (dgvMapping.CurrentCell.ColumnIndex == 2) //此时修改的主健列
{
string strSourceField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["InstrumentField"].Value.ToString();
string strTargetField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["CnasField"].Value.ToString();
string strPrimaryKey = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["PrimaryKey"].Value.ToString();

var lstDelItems = currentBalanceItem.syncParamasInfos.Where(s => s.SourceField == strSourceField && s.TargetField == strTargetField).ToList<SyncParamasInfo>();
if (lstDelItems.Count > 0)
{
foreach (var item in lstDelItems)
{
item.IfPrimaryKey = strPrimaryKey.ToLower() == "true" ? true : false;
}
}
}
if (dgvMapping.CurrentCell.ColumnIndex == 3) //此时修改的是日期字段列
{
string strSourceField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["InstrumentField"].Value.ToString();
string strTargetField = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["CnasField"].Value.ToString();
string strDateKey = dgvMapping.Rows[dgvMapping.CurrentCell.RowIndex].Cells["DateKey"].Value.ToString();

var lstDelItems = currentBalanceItem.syncParamasInfos.Where(s => s.SourceField == strSourceField && s.TargetField == strTargetField).ToList<SyncParamasInfo>();
if (lstDelItems.Count ==1)
{
if (strDateKey.ToLower() == "true")
{
//datagridview显示列
foreach (DataGridViewRow dgvRow in dgvMapping.Rows)
{
if (dgvRow.Cells["DateKey"].Value.ToString().ToLower() == "true")
dgvRow.Cells["DateKey"].Value = false;
}
//内存数据源
foreach (var item in currentBalanceItem.syncParamasInfos)
{
if (item.IfDateField)
item.IfDateField = false;
}
lstDelItems[0].IfDateField = true;
}
else
{
lstDelItems[0].IfDateField = false;
}
}
}
}

private void lstBalance_DrawItem(object sender, DrawItemEventArgs e)
{
Brush myBrush = Brushes.Black;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
myBrush = new SolidBrush(Color.FromArgb(0, 0, 255));//选中时背景颜色
}
else//没有选中时的背景颜色
{
myBrush = new SolidBrush(Color.White);
}
e.Graphics.FillRectangle(myBrush, e.Bounds);//填满矩形背景颜色
e.Graphics.DrawRectangle(new Pen(new SolidBrush(e.ForeColor)), e.Bounds);
e.DrawFocusRectangle();//焦点框
StringFormat stringformat = StringFormat.GenericDefault;
stringformat.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(lstBalance.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, stringformat);
}

private void dgvMapping_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgvMapping.IsCurrentCellDirty)
{
dgvMapping.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}

private bool CheckIfHaveDateField()
{
bool bIfHave = true;
foreach (var item in syncBalanceItems)
{
if (item.syncParamasInfos == null) continue;
if (item.syncParamasInfos.Count <=0) continue;
if (item.syncParamasInfos.Where(s => s.IfDateField == true).Count() != 1)
{
bIfHave = false;
break;
}
}
return bIfHave;
}

private void txtInstrumentColumn_DoubleClick(object sender, EventArgs e)
{
txtInstrumentColumn.Visible = false;

cbxCNASColumn.Top = txtInstrumentColumn.Top;
cbxCNASColumn.Height = txtInstrumentColumn.Height;
cbxCNASColumn.Width = txtInstrumentColumn.Width;
cbxCNASColumn.Location = txtInstrumentColumn.Location;

cbxCNASColumn.Visible = true;
}

private void cbxCNASColumn_Leave(object sender, EventArgs e)
{
if (cbxCNASColumn.Visible)
{
txtInstrumentColumn.Visible = true;
cbxCNASColumn.Visible = false;
}
}

private void cbxCNASColumn_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbxCNASColumn.Visible)
{
cbxCNASColumn.Visible = false;
txtInstrumentColumn.Visible = true;

currentBalanceItem.CnasInstrumentColumn = txtInstrumentColumn.Text = cbxCNASColumn.Text;
}
}

private void btnConditionMap_Click(object sender, EventArgs e)
{
frmConditionMap frmCNAS = new frmConditionMap(currentBalanceItem, targetDataBase);
if (frmCNAS.ShowDialog() == DialogResult.OK)
{
this.currentBalanceItem = frmCNAS.currentBalanceItem;
}
}
}
}

+ 183
- 0
CNAS_BalanceClient/frmBalanceField.resx Ver arquivo

@@ -0,0 +1,183 @@
<?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="PrimaryKey.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DateKey.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</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>
<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>
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
AAA=
</value>
</data>
</root>

+ 1980
- 0
CNAS_BalanceClient/frmBalanceMain.Designer.cs
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1200
- 0
CNAS_BalanceClient/frmBalanceMain.cs
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 522
- 0
CNAS_BalanceClient/frmBalanceMain.resx Ver arquivo

@@ -0,0 +1,522 @@
<?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="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Sample_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Instrument_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Crucible_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Empty_Crucible_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Sample_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AddSample_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Drying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SecondDrying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ThirdDrying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Mt.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Auto_Code.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Granularity.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Mad.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn15.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn19.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn22.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DecrementValue2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AAD.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn24.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn25.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn26.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn27.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn28.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn29.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn30.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MAD2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VAD.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_SampleNumber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_WeighingType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_SampleWeight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_Operator.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Shelf_CrucibleNumber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="cmsShelf.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>375, 17</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn54.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn55.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn56.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn57.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn58.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SampleCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Count.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn23.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn31.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn32.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>137, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tsbOpenPort.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI/SURBVEhLrZbJaxRBFIdHIXhwhZCIRIngRRNyEIIe1EDQ
GBURl6t4yzW5uCHixQU3ooEY4oLigiIkoJdAEBfwH/P7mqrw0t2ZBicPvpmat/xedU1VzbRKtgN2l+iG
DdDOtkG5rgc2woodgu8wB88T8+nzZljLBmABXkGuewFvwSaFKf4NfsA+6IWdaWyD7VBng/AV/sIQ5Dqf
wCa+F8vizJdhFsZhOnEenFFdg03wCX7BaxiDJ2D+JXgGRQNfnOVFuAZTcCtxCmagroG+WDcJ1tyG07Cq
gR+c+U24AdcTJ6FdA2PmWJNRQ61KgwvgIz4KnIOmBubEGjXUqjQw8T7cC5yFpgbmxBo11Ko08FFdy6sB
v7imBubEGjXUqm0Q119yg62guXNE05cbxBo1Kg3ewTAcCOyHo/Amjd1RHjxxbI4xc4zHWrXULBr4qHfg
MTwsoc+t+B6+wOWEY33G1qpTs1ha7wuPdB/YcU9gF1yBl+CVYJE41mfMnFijhlord5HH28dZgg/gCXb9
fPdk/wRn7e7IT5DHxsyJNWqopabaxQwW4Q8YvAt5u1rwG0ZBgWMJx/qMmZO3p7VqqKWm2q0uOAi5eCRw
BNx6rvVhcLbiWJ8xc2JN1lFT7UbzlvwID8ArQBzrM7Yu9hRcls8Jx/rWxbzOXRbX090hjvUZ69hcSy+x
sukz1rG51ydgL/QnHOsz1pH5Y+9MT8AZOJ5wrM9Y0x+CtrYFvG/8SfSLjegzZs5/W75GPP51VP6arLZW
6x+FhpAmxTjzIAAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGkSURBVEhLvdXPThRBEMfxeQJOgsYEQQxnI140/DHCW+hz
yLupBFSC/AlXEtCL4SE48/tMppPOZIObXtdKvttTNd1V3VXVO93/kKdhdU7w3V2Fk/AtfJ8wtsIn391t
eBdehfXwehg3wovwvIGVsB347n6Fl+FTcKz9alwIrbIcfnv4E+Z1Ar67u3AejoLc/YsaWMsn332UrSBq
3QFgezYF47V0PvsTyJNJk2QpmAw5Lc6M9PLOvLGY09fAj6hjeRIOwmnQcjfhZ/gxjHR2z1/D41ALnw8G
WAtnwVFxGTSDne2Ei7A5YBOKW8tfA1hgtxyiPBPpUUgjFLY5QMmz09QnsOtSj+YAx8G7R+FLkG87N9LZ
BZnpBC6bAr4NuxV0drVqDmAhR5+DjnEZC3T2N4PeFEA67JYzV186zDXS2d+HmQJwcBh0Sy10doVvDqBT
Pgb/KxyxybmRzv4hOMmDAUp/1+L66xQX6joIpqsKdHbvzVsMtfDZB/BRKPm1i4Kdls6Rpr0JsJeOKidD
qVH/wSmfTB0zpnTMNIzX8tl/Muf+0Z+jdN09oxiraev3MGcAAAAASUVORK5CYII=
</value>
</data>
<data name="tsbAllSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIXSURBVEhLtZZLS5VBHIdPmu6SsjShqxWJ7ZQoukCt2xQu
SizoG4gQqAvpK7SQaBetMgratLEr3aBAV9rK6Lv0PPO+8/qecY54jviDhzPX3/ufmf8Mp5FRL5yC823i
HOduq6vwEr51iHOvQFaX4TfMwgUYLjkNRpfDvjjOOXOgxyVoUje8gIVQa9Zh0OwkaCiWbbMv1WN4Dl2h
VuoIfIXxUNvUJLj0X7ABRieWbbPPMXVdBL2aPj4C3+F4qBUaAA2m4Dqslr/1sn2OcWyUq9PLg690A97D
gVAr5L7+gBPgJCO/VmLZNvsc49ioPvgIBlDJSF6BZxHlJCNxzwfhE8QtsmybfY6pf2A/vIF7oVbK039S
FCvFD8TJQ3CmxLJKx0QtwqOiWGhLA2o1ua5WY+ahCrgHXsPdUNuUk9xf07GV7EvPQN2HJQhbfgg+gIdX
V8yiB6CRJnVssy/NInUTlsEDb5wF8/aclUTxHmxHeg/UKOgZVm86fYZ+KxnVb3Id23I3WbmiLxCeDFP0
LdiY2wpT0fYc9qXjbT8K72ACQor+BS+aGZHbhnbQwzP9B9MQHqZ1uA3muFF1gpH71Pir1xo8g8p8tzoG
M3Ar1ApPvcNSjHw32gdPwTdoBcbAlei99x/4A3u1RXqHk/4Jd8CVpGm3Uzxon28j10vPkEW+RQ/BNM2l
XSfopafelQ6Cz0X6d6Rd9NALNRr/AZaJk9+L+J/SAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbDelete.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABwAAAAYCAYAAADpnJ2CAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALtSURBVEhLrdbJy05RHMDxxzzPMymizPMYC0MsZJaUqWSI
iCxkFhYWZllgYQ5lLiGZyViUhY2FBfI32Pp+j3uf507vQH716b3nPM99fvec8zvnvqVENEKH/6Bj9Lch
qow+uIyneJzxEu/wJNEn2+/xItEX83fOoQcK4zhOYBiGJwzGJjzD6KhPfm8c3mANhiB53whcwD7koj6u
YV5o5WM2bqBuaFXCJbiHiaGVj+U4/+cyHSa8irmhlY9ZuI46oVUJ1+guJoRWPpbBac2FCR3BFWzFjgTb
l/AZu6I+bccefMEZbEPyvi24jcIRGkvxEz7RfhyMeO2N/vDhqE8HcBRf4exk77EAf6CqZQplbGX1Da10
/MsajsJDtAitgugEK3FAaKXDtb2JBqFViaYw4eTQSsdImLBZaBVEbRLWC61SqXn0tzGKEg6F0/0NG9ET
uagpoVPaC7vh9yyK3kgm9IE2wMPgJCwe1/I1ZiAV1SV0Db/DTX4WC2Hl2nYUk2DMwVuMDa1K+H1PqtRv
V5fQk8PSnwK3kOEenA77LTRH5+GxEhbXAvj5NBieZG6jcsQJ+4dWPrKbPo64ctvD+z3iTH4Rv7AZxiK4
z+M6CAmfYwwsilYJLSPJvlgTGK3hoe356ujdz07vThir4XKUH9xXyic415bzo1rwAf2RuGqP4QgcRTe0
hQNxL97BCpTDD15hMdy0vhlkAThqeR33+x1PJwvHhzVcS19lVnJ3mKgfTsOzuA3KkSyaJTgEF7kLTODr
piv2ws9ck0HwdIoTGu5B18rplA9kwTjiVMQJ/RHfDh7a69Eu6rOYLAz3mZ/NhAWSTWhYyfPxAb5PCwsu
mXAq1sIX67roWl7b57VbxITek01o1OostQgGYhVOwf8AiviZBeDTO0JnIRsmtGqt5MLwSR7As891dKTV
8TvxtPm2sM8HkA/tdrgF3yhVhlN5H06TT14T/3n6CGcm2e/9boPxqDEcaee/4FIU9cd7MxOl0m9ZK7WO
DQmsvAAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbUpload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAYAAADk3wSdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHcSURBVEhLrZXLK2dxGIePhXI3hJlcEpJRspqF3SxGjcil
lCyUWWgsbGysmFAWZKfJRhYzjUuuiZJiJ/+A/D+e5/gejsnl5/Kpx3ve6zm+l37RC1QU7LvpOxwF+y7q
hD0YCVb/TeqCffgSezdW3/ir1ANn0B57d/oGxs2/SKWwC+fgWraB0uobN29dxsoCG8phGfpAafWNm7cu
YxXAJ6iA39ALSqtv3Lx1GakVDmEH1uESukFp9Y2bt876J1UDrtkVtMAHWIL0l+obN2+d9fY9KG/MCvyC
TagCtQDpNdVX5q2bAvuK4Z6yYQ5moQz89ypBzUNyfLT6yrx11ttnv3NuNQYn4OGWY/gKDbAK5muD1Tdu
3rqkx37zsarhAlz0P/APXKc1+AsHsA3mtPrGzVtnvTn7neO8qAk24CPkBXIhJ2Ufe9YmPfY7x3nxH99W
qBNUApOwCG6MuJbis3Hz1iWy3zmPDv0MrlE/DAQ7DKMwGHzz1iV6dmgzuE7KDdGfAGMdoHw2niijLz0F
v06G4Ce4uz9CzPyzX5q+x16EcfD8TcNMsAnGzad/Yuy/HdoIHhXPobfCK6j1zRZq/yeJp+vtd47zonxw
R7fAN70W+53jvFietzqofwP2MyeKrgFQ2m6IcGPD9gAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbHistory.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKbSURBVEhLtZVJaxRBGIZb3Pe4Im64QPQmCnrIIShu6EFQ
FAx6ESUo7iuixriL+4L7Apq/kFw8e/Y/+TyVqkxNMT2Tg77wMF013d9X/W1doQkw04txaEZkPNKmtqv5
8BkewHaYB7k0uAnOwKeI1+6VznxWG9rSprarZfATDsJD+AJXYQecho/wGo6AhsVr9/zP9S7wGZ/VxiHQ
prar5fAeprtArjUwDP3QDZNBbY6oSeB/x0Bnh2EFKG1pU1tjDma7iJoGd2BuWDWUO0gy1tdhSliNSltt
HXi6jTA1rBraGUlaBL2ggzVuRHV0MAvuw4Kwamg9rANPexxM5DN4DCb/GphY36rjGxiK8g32g8VwCZ6A
CX4OL+Ey3IzrpfAOah14ghsQyiyTJzdEPnwFNLYFNoD3W56++Sl4C7UONGQ9p8rKZRgugCWaH2AiPAXf
6itYsk1lmjvQ8Ekoq0g9Ah3cDatmmRcP8AOGoNaBZWpd53tJhuI8GKayk+/BWfgWqXVgck2o1ZTLqjoK
xv423IJVYFJPgMk20eanbQ482TnoCquGHAE6sAk17njwTUSHPvMBVse9WgeOBhuoTLKnXQnmxuYyDOZi
AOwDS9f/O/aBN3iiskwPRJIuwh/4DZ7c/lHaauvAGx3HZaM53CTJHvgFI9DnRlRLB3lCvbZpylHhWN49
ehlkrF+BzbXVjSifb3JgLPNw1L3BHtBJkgPuDfgN2OZGlMWhzeDA17ED9WiFeCr30qhYDHvBU9qh4ofI
hK8FvwXJgcnfBzp1CI6F3ZM6nu1QJ6T17K9VYcsPgjPI8WyV+CHSkfVuiGwwq8rx4b09YLO21BywRB1Y
hmMhtJLfX+/T6AuwR5bAP5XlbCi+Q4j3/5AVU3Z8VFX9BcQkdR/ORj7kAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="tsmMapping.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABMAAAAYCAYAAAAYl8YPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAACcQAAAnEAGUaVEZAAAAB3RJ
TUUH4wIGFBc4NQH4lAAAAVRJREFUSEutlblKxVAQho9ebRS0UlxubWFl5/IKdiIKNqK9zQUbl0LQUnBB
BBEbEUHsbKx8BV/J7wsnEA+5eJH54ctk5sxMtkmSUAemYQ5mYT5bfek2qGNlnvX2SYvwAu/wBQ/wCR/w
Btdwk62+cdfNM9866+2TVuEVnmEbZuAeTsDiYzjNVt+46+ZtgXXW2yctwzds6qBxeIQNOIBeA33jrpun
rLPePmkNLmFIB43CETyBl3EFrmv1jbtunrLOdftUmwt3GhqGCbgDL2UqW33jrjdlfd9mtRbAo3qztfpt
GqiZ8iwms+2ngZqNwBKsZ6vfpj+bjYE3+hYOs9U3XupXs3N3Cu2AM1VNdrb6xktZXzVbAad4H/Yy7jvl
Z7CbY1p942Wu9faJbRZ6mW5CH0BbMxU2GrXChjbkdfIs/v2ie9SQT1DoxzH0sx36Q3GyA351qfMDY4V8
rdFnsfUAAAAASUVORK5CYII=
</value>
</data>
<data name="tsmPortConfig.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAACcQAAAnEAGUaVEZAAAAB3RJ
TUUH4wEJBBwLasCJvwAAAj9JREFUSEutlslrFEEUh0cheHCFkIhEieBFE3IQgh7UQNAYFRGXq3jLNbm4
IeLFBTeigRjiguKCIiSgl0AQF/Af8/uaqvDS3ZkGJw++mZq3/F51TVXNtEq2A3aX6IYN0M62QbmuBzbC
ih2C7zAHzxPz6fNmWMsGYAFeQa57AW/BJoUp/g1+wD7ohZ1pbIPtUGeD8BX+whDkOp/AJr4Xy+LMl2EW
xmE6cR6cUV2DTfAJfsFrGIMnYP4leAZFA1+c5UW4BlNwK3EKZqCugb5YNwnW3IbTsKqBH5z5TbgB1xMn
oV0DY+ZYk1FDrUqDC+AjPgqcg6YG5sQaNdSqNDDxPtwLnIWmBubEGjXUqjTwUV3LqwG/uKYG5sQaNdSq
bRDXX3KDraC5c0TTlxvEGjUqDd7BMBwI7Iej8CaN3VEePHFsjjFzjMdatdQsGviod+AxPCyhz634Hr7A
5YRjfcbWqlOzWFrvC490H9hxT2AXXIGX4JVgkTjWZ8ycWKOGWit3kcfbx1mCD+AJdv1892T/BGft7shP
kMfGzIk1aqilptrFDBbhDxi8C3m7WvAbRkGBYwnH+oyZk7entWqopabarS44CLl4JHAE3Hqu9WFwtuJY
nzFzYk3WUVPtRvOW/AgPwCtAHOszti72FFyWzwnH+tbFvM5dFtfT3SGO9Rnr2FxLL7Gy6TPWsbnXJ2Av
9Ccc6zPWkflj70xPwBk4nnCsz1jTH4K2tgW8b/xJ9IuN6DNmzn9bvkY8/nVU/pqstlbrH4WGkCbFOPMg
AAAAAElFTkSuQmCC
</value>
</data>
<metadata name="sPortBalance.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>247, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>55</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AKEAAADSAAAAQwAAACsAAAAsAAAALAAAACgAAAB0AAAA1QAAAIcAAACHAAAA1QAAAHQAAAAoAAAALAAA
ACwAAAArAAAAQwAAANIAAAChAAAAAgAAAAAAAAAAAAAAAAAAADIAAADQAAAAzAAAAKcAAACmAAAApgAA
AKQAAADGAAAA1wAAAEMAAABDAAAA1wAAAMYAAACkAAAApgAAAKYAAACnAAAAzAAAANAAAAAyAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAnAAAAewAAAJgAAACZAAAAmQAAAJcAAAC7AAAA3AAAABYAAAAWAAAA3AAA
ALsAAACXAAAAmQAAAJkAAACYAAAAewAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAtAAAA3wAAAJYAAACWAAAA3wAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAWAAA
AMIAAADCAAAAWAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAANAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAADAMAAAwDgAAcA4AAHAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEA4AAHAP8A
/wA=
</value>
</data>
</root>

+ 257
- 0
CNAS_BalanceClient/frmConditionMap.Designer.cs Ver arquivo

@@ -0,0 +1,257 @@
namespace CNAS_BalanceClient
{
partial class frmConditionMap
{
/// <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(frmConditionMap));
this.pnlCenter = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.dgvCnas = new System.Windows.Forms.DataGridView();
this.TableName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.TableColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.DataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.condition = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlCenterBottom = new System.Windows.Forms.Panel();
this.btnDelete = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.pnlRight = new System.Windows.Forms.Panel();
this.pnlBottom = new System.Windows.Forms.Panel();
this.pnlTop = new System.Windows.Forms.Panel();
this.pnlLeft = new System.Windows.Forms.Panel();
this.pnlCenter.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).BeginInit();
this.pnlCenterBottom.SuspendLayout();
this.SuspendLayout();
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.groupBox1);
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.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(574, 396);
this.pnlCenter.TabIndex = 7;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.dgvCnas);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox1.Location = new System.Drawing.Point(0, 0);
this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.groupBox1.Size = new System.Drawing.Size(574, 353);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "CNAS列";
//
// dgvCnas
//
this.dgvCnas.AllowUserToAddRows = false;
this.dgvCnas.BackgroundColor = System.Drawing.Color.White;
this.dgvCnas.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvCnas.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.TableName,
this.TableColumn,
this.DataType,
this.condition,
this.Value});
this.dgvCnas.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvCnas.Location = new System.Drawing.Point(3, 22);
this.dgvCnas.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.dgvCnas.Name = "dgvCnas";
this.dgvCnas.RowTemplate.Height = 23;
this.dgvCnas.Size = new System.Drawing.Size(568, 325);
this.dgvCnas.TabIndex = 0;
this.dgvCnas.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellClick);
this.dgvCnas.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellDoubleClick);
this.dgvCnas.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellEndEdit);
this.dgvCnas.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellValueChanged);
this.dgvCnas.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvCnas_RowPostPaint);
//
// TableName
//
this.TableName.DataPropertyName = "CnasTableName";
this.TableName.HeaderText = "表名";
this.TableName.Name = "TableName";
this.TableName.Visible = false;
this.TableName.Width = 120;
//
// TableColumn
//
this.TableColumn.DataPropertyName = "CnasFieldName";
this.TableColumn.HeaderText = "列名";
this.TableColumn.Name = "TableColumn";
this.TableColumn.ReadOnly = true;
this.TableColumn.Width = 170;
//
// DataType
//
this.DataType.DataPropertyName = "CnasDataType";
this.DataType.HeaderText = "类型";
this.DataType.Name = "DataType";
this.DataType.ReadOnly = true;
this.DataType.Visible = false;
this.DataType.Width = 120;
//
// condition
//
this.condition.HeaderText = "条件";
this.condition.Name = "condition";
this.condition.ReadOnly = true;
this.condition.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.condition.Width = 110;
//
// Value
//
this.Value.HeaderText = "值";
this.Value.Name = "Value";
this.Value.Width = 200;
//
// pnlCenterBottom
//
this.pnlCenterBottom.Controls.Add(this.btnDelete);
this.pnlCenterBottom.Controls.Add(this.btnOK);
this.pnlCenterBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlCenterBottom.Location = new System.Drawing.Point(0, 353);
this.pnlCenterBottom.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlCenterBottom.Name = "pnlCenterBottom";
this.pnlCenterBottom.Size = new System.Drawing.Size(574, 43);
this.pnlCenterBottom.TabIndex = 0;
//
// btnDelete
//
this.btnDelete.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnDelete.Location = new System.Drawing.Point(401, 11);
this.btnDelete.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.btnDelete.Name = "btnDelete";
this.btnDelete.Size = new System.Drawing.Size(70, 25);
this.btnDelete.TabIndex = 1;
this.btnDelete.Text = "全部清除";
this.btnDelete.UseVisualStyleBackColor = true;
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// btnOK
//
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnOK.Location = new System.Drawing.Point(477, 6);
this.btnOK.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 0;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(584, 10);
this.pnlRight.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(10, 396);
this.pnlRight.TabIndex = 4;
//
// pnlBottom
//
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(10, 406);
this.pnlBottom.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(584, 10);
this.pnlBottom.TabIndex = 5;
//
// pnlTop
//
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlTop.Location = new System.Drawing.Point(10, 0);
this.pnlTop.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlTop.Name = "pnlTop";
this.pnlTop.Size = new System.Drawing.Size(584, 10);
this.pnlTop.TabIndex = 6;
//
// pnlLeft
//
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlLeft.Location = new System.Drawing.Point(0, 0);
this.pnlLeft.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
this.pnlLeft.Name = "pnlLeft";
this.pnlLeft.Size = new System.Drawing.Size(10, 416);
this.pnlLeft.TabIndex = 3;
//
// frmConditionMap
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(594, 416);
this.Controls.Add(this.pnlCenter);
this.Controls.Add(this.pnlRight);
this.Controls.Add(this.pnlBottom);
this.Controls.Add(this.pnlTop);
this.Controls.Add(this.pnlLeft);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.Name = "frmConditionMap";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "条件映射";
this.Load += new System.EventHandler(this.frmConditionMap_Load);
this.pnlCenter.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).EndInit();
this.pnlCenterBottom.ResumeLayout(false);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.DataGridView dgvCnas;
private System.Windows.Forms.Panel pnlCenterBottom;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.DataGridViewTextBoxColumn TableName;
private System.Windows.Forms.DataGridViewTextBoxColumn TableColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn DataType;
private System.Windows.Forms.DataGridViewTextBoxColumn condition;
private System.Windows.Forms.DataGridViewTextBoxColumn Value;
}
}

+ 556
- 0
CNAS_BalanceClient/frmConditionMap.cs Ver arquivo

@@ -0,0 +1,556 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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_BalanceClient
{
public partial class frmConditionMap : Form
{
DataBaseInfo targetDataBase;
public SyncBalanceItem currentBalanceItem;
private ComboBox cbxConditionValue;
//private List<string> lstConditionValueType = new List<string>() { "等于", "连接", "若...则...", "截取", "除以", "乘以", "小数位数", "数值相加(减)", "截断开头(结尾)" };
private List<string> lstConditionValueType = new List<string>() { "等于" };

public frmConditionMap(SyncBalanceItem currentBalanceItem, DataBaseInfo targetDataBase)
{
InitializeComponent();

this.currentBalanceItem = currentBalanceItem;
this.targetDataBase = targetDataBase;
}

private void frmConditionMap_Load(object sender, EventArgs e)
{
if (currentBalanceItem == null || currentBalanceItem.syncParamasInfos == null || currentBalanceItem.syncParamasInfos.Count == 0)
{
MessageBox.Show("请先指定至少一个映射字段。");
return;
}
//初始化ComBobox
InnitalComboBox();

//加载数据
LoadShowData();
}

/// <summary>
/// 初始化控件combobox
/// </summary>
private void InnitalComboBox()
{
cbxConditionValue = new ComboBox();
cbxConditionValue.SelectedIndexChanged += new EventHandler(cbxConditionValue_SelectedIndexChanged);
cbxConditionValue.SelectionChangeCommitted += new EventHandler(cbxConditionValue_SelectionChangedCommitted);

cbxConditionValue.Visible = false;

cbxConditionValue.DataSource = lstConditionValueType;
}
private void cbxConditionValue_SelectionChangedCommitted(object sender, EventArgs e)
{
cbxConditionValue.Visible = false;
}

private void cbxConditionValue_SelectedIndexChanged(object sender, EventArgs e)
{
//当前选中单元格的值将随之发生更改
if (dgvCnas.CurrentCell == null) return;
dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells["condition"].Value = cbxConditionValue.Text;
}
/// <summary>
/// 加载数据
/// </summary>
private void LoadShowData()
{
//1.根据映射表中的表名,获取该表所有字段,全部显示
string strTableName = currentBalanceItem.syncParamasInfos[0].TargetTable;
DataTable dtTableStruct = CnasDataOperationFact.CnasDataOperation().GetCNASTablesStruct(strTableName, targetDataBase);
if (dtTableStruct != null)
{
DataTable dtCnasShow = new DataTable();
dtCnasShow.Columns.Add("CnasTableName");
dtCnasShow.Columns.Add("CnasFieldName");
dtCnasShow.Columns.Add("CnasDataType");
foreach (DataColumn dc in dtTableStruct.Columns)
{
if (dc.ColumnName.ToUpper() == "ID") continue;
dtCnasShow.Rows.Add(new object[] { strTableName, dc.ColumnName, dc.DataType });
}

dgvCnas.DataSource = dtCnasShow;
}
//2.根据已存储数据,匹配后填充到datagridview中
if (currentBalanceItem.lstFixedValue == null)
currentBalanceItem.lstFixedValue = new List<CnasConditionMapValue>();
if (currentBalanceItem.lstFixedValue.Count == 0) return;
foreach (DataGridViewRow dgvRow in dgvCnas.Rows)
{
string strCurrentTable = dgvRow.Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvRow.Cells["TableColumn"].Value.ToString();

if (strCurrentTable == "" || strCurrentColumn == "") continue;
var query = currentBalanceItem.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count == 1)
{
dgvRow.Cells["Value"].Value = query[0].Value;
dgvRow.Cells["Condition"].Value = GiveShowByCondition(query[0]);
}
}
}

public string GiveShowByCondition(CnasConditionMapValue cnasFixed)
{
string strCurrentCondition = "";
switch (cnasFixed.Condition)
{
case MapCondition.Equal:
strCurrentCondition = "等于";
break;
case MapCondition.Sub:
strCurrentCondition = "连接";
break;
case MapCondition.IFThen:
strCurrentCondition = "若...则...";
break;
case MapCondition.Divided:
strCurrentCondition = "除以";
break;
case MapCondition.Multiplied:
strCurrentCondition = "乘以";
break;
case MapCondition.SubString:
strCurrentCondition = "截取";
break;
case MapCondition.DecimalDigits:
strCurrentCondition = "小数位数";
break;
case MapCondition.AddSubtract:
strCurrentCondition = "数值相加(减)";
break;
case MapCondition.SubstringStartEnd:
strCurrentCondition = "截断开头(结尾)";
break;
}
return strCurrentCondition;
}

private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}

private void dgvCnas_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1) //此时是“值”列
{
//如果没有指定条件,无法存储结果
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value == null) return;

//当前列名
string strCurrentTable = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString();
string strCurrentType = dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value.ToString();
string strCurrentCondition = dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString();

if (dgvCnas.CurrentCell.Value == null)
{
currentBalanceItem.lstFixedValue.RemoveAll(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn);
return;
}
string strInputValue = dgvCnas.CurrentCell.Value.ToString();

//检查合法性
if (strCurrentColumn == "ID")
{
MessageBox.Show("该列不能指定固定值。");
return;
}
bool bIfSuccess = true;
switch (strCurrentType)
{
case "System.Decimal":
decimal defaultdecimal = 0;
if (!decimal.TryParse(strInputValue, out defaultdecimal))
bIfSuccess = false;
break;
case "System.Int":
int defaultint = 0;
if (!int.TryParse(strInputValue, out defaultint))
bIfSuccess = false;
break;
case "System.String":
default:
break;
}
if (!bIfSuccess)
{
MessageBox.Show("输入格式不正确,请重新输入。");
return;
}

if (GetBytesOfString(strInputValue) > 20)
{
MessageBox.Show("输入内容超出限制,请重新输入。");
dgvCnas.CurrentCell.Value = "";
return;
}

//将数据插入到数据源中
var query = currentBalanceItem.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
GiveConditionByShow(query[0], strCurrentCondition);
//query[0].Condition = strCurrentCondition == "Sub" ? MapCondition.Sub : (strCurrentCondition == "IFThen" ? MapCondition.IFThen: MapCondition.Equal);
query[0].Value = strInputValue;
}
else
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue();
cnasFixed.TableName = strCurrentTable;
cnasFixed.ColumnName = strCurrentColumn;
cnasFixed.Value = strInputValue;
//cnasFixed.Condition= strCurrentCondition == "Sub" ? MapCondition.Sub : (strCurrentCondition == "IFThen" ? MapCondition.IFThen : MapCondition.Equal);
GiveConditionByShow(cnasFixed, strCurrentCondition);

currentBalanceItem.lstFixedValue.Add(cnasFixed);
}
}
}

public int GetBytesOfString(string Text)
{
int nByte = 0;
byte[] bytes = Encoding.Unicode.GetBytes(Text);
for (int i = 0; i < bytes.GetLength(0); i++)
{
// 偶数位置,如0、2、4等,为UCS2编码中两个字节的第一个字节
if (i % 2 == 0)
{
nByte++; // 在UCS2第一个字节时n加1
}
else
{
// 当UCS2编码的第二个字节大于0时,该UCS2字符为汉字,一个汉字算两个字节
if (bytes[i] > 0)
{
nByte++;
}
}
}

return nByte;
}

public void GiveConditionByShow(CnasConditionMapValue cnasFixed, string strCurrentCondition)
{
switch (strCurrentCondition)
{
case "连接":
cnasFixed.Condition = MapCondition.Sub;
break;
case "若...则...":
cnasFixed.Condition = MapCondition.IFThen;
break;
case "截取":
cnasFixed.Condition = MapCondition.SubString;
break;
case "除以":
cnasFixed.Condition = MapCondition.Divided;
break;
case "乘以":
cnasFixed.Condition = MapCondition.Multiplied;
break;
case "小数位数":
cnasFixed.Condition = MapCondition.DecimalDigits;
break;
case "等于":
cnasFixed.Condition = MapCondition.Equal;
break;
case "数值相加(减)":
cnasFixed.Condition = MapCondition.AddSubtract;
break;
case "截断开头(结尾)":
cnasFixed.Condition = MapCondition.SubstringStartEnd;
break;
default:
break;
}
}

private void dgvCnas_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
dgvCnas.RowHeadersWidth - 4,
e.RowBounds.Height);

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
dgvCnas.RowHeadersDefaultCellStyle.Font,
rectangle,
dgvCnas.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}

private void dgvCnas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0) //如果此时是“条件”列
{
ShowConditionValue();
}
#region
//if (e.ColumnIndex == 1)//如果此时是“值”列
//{
// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value == null) return;
// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "连接")
// {
// CnasConditionMapValue cnasFixed = new CnasConditionMapValue
// {
// TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
// ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
// Condition = MapCondition.Sub
// };
// if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
// cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

// frmConditionParam frmCondition = new frmConditionParam(syncInstrument, cnasFixed);
// if (frmCondition.ShowDialog() == DialogResult.OK)
// {
// if (frmCondition.conditionvalue.Value != null && frmCondition.conditionvalue.Value.ToString() != "")
// {
// dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmCondition.conditionvalue.Value;

// //将数据插入到数据源中
// var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
// if (query.Count >= 1)
// {
// query[0].Condition = cnasFixed.Condition;
// query[0].Value = frmCondition.conditionvalue.Value;
// }
// else
// {
// cnasFixed.Value = frmCondition.conditionvalue.Value;
// syncInstrument.lstFixedValue.Add(cnasFixed);
// }
// }
// }
// }
// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "若...则...")
// {
// CnasConditionMapValue cnasFixed = new CnasConditionMapValue
// {
// TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
// ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
// Condition = MapCondition.IFThen
// };
// if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
// cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

// frmIfThenParams frmIfThen = new frmIfThenParams(syncInstrument, cnasFixed);
// if (frmIfThen.ShowDialog() == DialogResult.OK)
// {
// if (frmIfThen.conditionvalue.Value != null && frmIfThen.conditionvalue.Value.ToString() != "")
// {
// dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmIfThen.conditionvalue.Value;

// //将数据插入到数据源中
// var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
// if (query.Count >= 1)
// {
// query[0].Condition = cnasFixed.Condition;
// query[0].Value = frmIfThen.conditionvalue.Value;
// }
// else
// {
// cnasFixed.Value = frmIfThen.conditionvalue.Value;
// syncInstrument.lstFixedValue.Add(cnasFixed);
// }
// }
// }
// }
// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "截取")
// {
// CnasConditionMapValue cnasFixed = new CnasConditionMapValue
// {
// TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
// ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
// Condition = MapCondition.SubString
// };
// if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
// cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

// frmSplitParam frmSplitParam = new frmSplitParam(cnasFixed);
// if (frmSplitParam.ShowDialog() == DialogResult.OK)
// {
// if (frmSplitParam.conditionvalue.Value != null && frmSplitParam.conditionvalue.Value.ToString() != "")
// {
// dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmSplitParam.conditionvalue.Value;

// //将数据插入到数据源中
// var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
// if (query.Count >= 1)
// {
// query[0].Condition = cnasFixed.Condition;
// query[0].Value = frmSplitParam.conditionvalue.Value;
// }
// else
// {
// cnasFixed.Value = frmSplitParam.conditionvalue.Value;
// syncInstrument.lstFixedValue.Add(cnasFixed);
// }
// }
// }
// }

// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "截断开头(结尾)")
// {
// CnasConditionMapValue cnasFixed = new CnasConditionMapValue
// {
// TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
// ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
// Condition = MapCondition.SubstringStartEnd
// };
// if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
// cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

// frmStartEndSubstring frmStartEnd = new frmStartEndSubstring(cnasFixed);
// if (frmStartEnd.ShowDialog() == DialogResult.OK)
// {
// if (frmStartEnd.conditionvalue.Value != null && frmStartEnd.conditionvalue.Value.ToString() != "")
// {
// dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmStartEnd.conditionvalue.Value;

// //将数据插入到数据源中
// var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
// if (query.Count >= 1)
// {
// query[0].Condition = cnasFixed.Condition;
// query[0].Value = frmStartEnd.conditionvalue.Value;
// }
// else
// {
// cnasFixed.Value = frmStartEnd.conditionvalue.Value;
// syncInstrument.lstFixedValue.Add(cnasFixed);
// }
// }
// }
// }

// if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "数值相加(减)")
// {
// CnasConditionMapValue cnasFixed = new CnasConditionMapValue
// {
// TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
// ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
// Condition = MapCondition.AddSubtract
// };
// if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
// cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

// frmAddSubtract frmAddSubtract = new frmAddSubtract(syncInstrument, cnasFixed);
// if (frmAddSubtract.ShowDialog() == DialogResult.OK)
// {
// if (frmAddSubtract.conditionvalue.Value != null && frmAddSubtract.conditionvalue.Value.ToString() != "")
// {
// dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmAddSubtract.conditionvalue.Value;

// //将数据插入到数据源中
// var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
// if (query.Count >= 1)
// {
// query[0].Condition = cnasFixed.Condition;
// query[0].Value = frmAddSubtract.conditionvalue.Value;
// }
// else
// {
// cnasFixed.Value = frmAddSubtract.conditionvalue.Value;
// syncInstrument.lstFixedValue.Add(cnasFixed);
// }
// }
// }
// }

// dgvCnas.EndEdit();
//}
#endregion
}
private void ShowConditionValue()
{
Rectangle TmpRect = dgvCnas.GetCellDisplayRectangle(dgvCnas.CurrentCell.ColumnIndex, dgvCnas.CurrentCell.RowIndex, true);
cbxConditionValue.Size = TmpRect.Size;
cbxConditionValue.Top = TmpRect.Top;
cbxConditionValue.Left = TmpRect.Left;
cbxConditionValue.DropDownStyle = ComboBoxStyle.DropDownList;
cbxConditionValue.FormattingEnabled = true;
cbxConditionValue.Visible = true;

if (!this.dgvCnas.Controls.Contains(cbxConditionValue))
this.dgvCnas.Controls.Add(cbxConditionValue);
}

private void btnDelete_Click(object sender, EventArgs e)
{
if (currentBalanceItem == null) return;
if (currentBalanceItem.lstFixedValue == null) return;
if (dgvCnas == null) return;
if (dgvCnas.Rows.Count <= 0) return;

foreach (DataGridViewRow dr in dgvCnas.Rows)
{
dr.Cells["condition"].Value = "";
dr.Cells["Value"].Value = "";
}
currentBalanceItem.lstFixedValue.Clear();
}

private void dgvCnas_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex <= 0) return;
if (e.ColumnIndex == 0) //此时是“条件”列
{
if (dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["Condition"].Value == null) return;

//当前列名
string strCurrentTable = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString();
string strCurrentType = dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value.ToString();
string strCurrentCondition = dgvCnas.Rows[e.RowIndex].Cells["Condition"].Value.ToString();
string strCurrentValue = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value == null ? "" : dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

//将数据插入到数据源中
var query = currentBalanceItem.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
GiveConditionByShow(query[0], strCurrentCondition);
}
else
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue();
cnasFixed.TableName = strCurrentTable;
cnasFixed.ColumnName = strCurrentColumn;
cnasFixed.Value = strCurrentValue;
GiveConditionByShow(cnasFixed, strCurrentCondition);

currentBalanceItem.lstFixedValue.Add(cnasFixed);
}
}
}

private void dgvCnas_CellClick(object sender, DataGridViewCellEventArgs e)
{
cbxConditionValue.Visible = false;
}
}
}

+ 182
- 0
CNAS_BalanceClient/frmConditionMap.resx Ver arquivo

@@ -0,0 +1,182 @@
<?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="TableName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TableColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="condition.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Value.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</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>
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
ACcAAAAZAAAAMgAAAFUAAACCAAAApQAAAL8AAADTAAAA3wAAAOcAAADnAAAA3wAAANMAAAC/AAAApQAA
AIIAAABVAAAAMQAAABkAAAAnAAAAKwAAAAAAAAAAAAAACQAAAFEAAACpAAAA4gAAAP0AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA4QAAAKgAAABPAAAACAAA
AAAAAAAAAAAAVgAAAOgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADlAAAAUwAAAAAAAAAAAAAAVQAAAOcAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADlAAAAUgAAAAAAAAAAAAAACAAAAFAAAACoAAAA4QAAAPwAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD8AAAA4QAAAKcAAABPAAAABwAAAAAAAAAAAAAAAAAA
AAAAAAAUAAAAOAAAAGEAAACRAAAAtwAAANIAAADoAAAA9AAAAPwAAAD8AAAA9AAAAOcAAADSAAAAtgAA
AJAAAABhAAAAOAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA=
</value>
</data>
</root>

+ 317
- 0
CNAS_BalanceClient/frmConfigPort.Designer.cs Ver arquivo

@@ -0,0 +1,317 @@
namespace CNAS_BalanceClient
{
partial class frmConfigPort
{
/// <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(frmConfigPort));
this.panel1 = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.btnCancel = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.cbxHandshake = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.cbxDataBits = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.cbxParity = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.cbxStopBits = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.cbxBaudRate = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.cbxPortName = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
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.panel1.SuspendLayout();
this.pnlCenter.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.pnlCenter);
this.panel1.Controls.Add(this.pnlBottom);
this.panel1.Controls.Add(this.pnlTop);
this.panel1.Controls.Add(this.pnlRight);
this.panel1.Controls.Add(this.pnlLeft);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(509, 275);
this.panel1.TabIndex = 0;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.btnCancel);
this.pnlCenter.Controls.Add(this.btnOK);
this.pnlCenter.Controls.Add(this.cbxHandshake);
this.pnlCenter.Controls.Add(this.label6);
this.pnlCenter.Controls.Add(this.cbxDataBits);
this.pnlCenter.Controls.Add(this.label5);
this.pnlCenter.Controls.Add(this.cbxParity);
this.pnlCenter.Controls.Add(this.label4);
this.pnlCenter.Controls.Add(this.cbxStopBits);
this.pnlCenter.Controls.Add(this.label3);
this.pnlCenter.Controls.Add(this.cbxBaudRate);
this.pnlCenter.Controls.Add(this.label2);
this.pnlCenter.Controls.Add(this.cbxPortName);
this.pnlCenter.Controls.Add(this.label1);
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(489, 255);
this.pnlCenter.TabIndex = 4;
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(377, 213);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(90, 30);
this.btnCancel.TabIndex = 16;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(268, 213);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 15;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// cbxHandshake
//
this.cbxHandshake.FormattingEnabled = true;
this.cbxHandshake.Items.AddRange(new object[] {
"None",
"XOnXOff",
"RequestToSend",
"RequestToSendXOnXOff"});
this.cbxHandshake.Location = new System.Drawing.Point(110, 167);
this.cbxHandshake.Name = "cbxHandshake";
this.cbxHandshake.Size = new System.Drawing.Size(357, 25);
this.cbxHandshake.TabIndex = 11;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(38, 175);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(56, 17);
this.label6.TabIndex = 10;
this.label6.Text = "握手信号";
//
// cbxDataBits
//
this.cbxDataBits.FormattingEnabled = true;
this.cbxDataBits.Items.AddRange(new object[] {
"8",
"7"});
this.cbxDataBits.Location = new System.Drawing.Point(341, 120);
this.cbxDataBits.Name = "cbxDataBits";
this.cbxDataBits.Size = new System.Drawing.Size(126, 25);
this.cbxDataBits.TabIndex = 9;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(269, 128);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(44, 17);
this.label5.TabIndex = 8;
this.label5.Text = "数据位";
//
// cbxParity
//
this.cbxParity.FormattingEnabled = true;
this.cbxParity.Items.AddRange(new object[] {
"None",
"Even",
"Odd",
"Mark",
"Space"});
this.cbxParity.Location = new System.Drawing.Point(110, 120);
this.cbxParity.Name = "cbxParity";
this.cbxParity.Size = new System.Drawing.Size(126, 25);
this.cbxParity.TabIndex = 7;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(38, 128);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 17);
this.label4.TabIndex = 6;
this.label4.Text = "奇偶校验";
//
// cbxStopBits
//
this.cbxStopBits.FormattingEnabled = true;
this.cbxStopBits.Items.AddRange(new object[] {
"1",
"1.5",
"2"});
this.cbxStopBits.Location = new System.Drawing.Point(341, 72);
this.cbxStopBits.Name = "cbxStopBits";
this.cbxStopBits.Size = new System.Drawing.Size(126, 25);
this.cbxStopBits.TabIndex = 5;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(269, 80);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(44, 17);
this.label3.TabIndex = 4;
this.label3.Text = "停止位";
//
// cbxBaudRate
//
this.cbxBaudRate.FormattingEnabled = true;
this.cbxBaudRate.Items.AddRange(new object[] {
"9600",
"1200"});
this.cbxBaudRate.Location = new System.Drawing.Point(110, 72);
this.cbxBaudRate.Name = "cbxBaudRate";
this.cbxBaudRate.Size = new System.Drawing.Size(126, 25);
this.cbxBaudRate.TabIndex = 3;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(7, 75);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(97, 17);
this.label2.TabIndex = 2;
this.label2.Text = "传输速率/波特率";
//
// cbxPortName
//
this.cbxPortName.FormattingEnabled = true;
this.cbxPortName.Items.AddRange(new object[] {
"COM1"});
this.cbxPortName.Location = new System.Drawing.Point(110, 24);
this.cbxPortName.Name = "cbxPortName";
this.cbxPortName.Size = new System.Drawing.Size(357, 25);
this.cbxPortName.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(38, 32);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(62, 17);
this.label1.TabIndex = 0;
this.label1.Text = "COM名称";
//
// pnlBottom
//
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(10, 265);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(489, 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(489, 10);
this.pnlTop.TabIndex = 2;
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(499, 0);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(10, 275);
this.pnlRight.TabIndex = 1;
//
// pnlLeft
//
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlLeft.Location = new System.Drawing.Point(0, 0);
this.pnlLeft.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlLeft.Name = "pnlLeft";
this.pnlLeft.Size = new System.Drawing.Size(10, 275);
this.pnlLeft.TabIndex = 0;
//
// frmConfigPort
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(509, 275);
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.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmConfigPort";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "天平设置";
this.Load += new System.EventHandler(this.frmConfigPort_Load);
this.Shown += new System.EventHandler(this.frmConfigPort_Shown);
this.panel1.ResumeLayout(false);
this.pnlCenter.ResumeLayout(false);
this.pnlCenter.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.ComboBox cbxHandshake;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.ComboBox cbxDataBits;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cbxParity;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox cbxStopBits;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox cbxBaudRate;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cbxPortName;
private System.Windows.Forms.Label label1;
}
}

+ 83
- 0
CNAS_BalanceClient/frmConfigPort.cs Ver arquivo

@@ -0,0 +1,83 @@
using CNAS_SerialPort;
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Windows.Forms;

namespace CNAS_BalanceClient
{
public partial class frmConfigPort : Form
{
public SerialPortConfigInfo serialPortConfig;

public frmConfigPort(SerialPortConfigInfo serialPortConfig)
{
InitializeComponent();

this.serialPortConfig = serialPortConfig;
}

private void frmConfigPort_Load(object sender, EventArgs e)
{
if (serialPortConfig != null)
{
cbxPortName.Text=serialPortConfig.PortName;
cbxBaudRate.Text = serialPortConfig.BaudRate.ToString();
cbxDataBits.Text = serialPortConfig.DataBits.ToString();
cbxParity.Text = serialPortConfig.Parity;
cbxStopBits.Text = serialPortConfig.StopBits;
cbxHandshake.Text = serialPortConfig.Handshake;

//if (serialPortConfig.IfAutoWrap)
// cbIfAutoWrap.Checked = true;
//if (serialPortConfig.IfMuffleFurnace)
// cbIfMuffleFurnace.Checked = true;
//if (serialPortConfig.IfPeelingWeighing)
// cbIfPeelingWeighing.Checked = true;
}

//cbxPortName.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
}

private void btnOK_Click(object sender, EventArgs e)
{
if (serialPortConfig == null) serialPortConfig = new SerialPortConfigInfo();

serialPortConfig.PortName = cbxPortName.Text;
serialPortConfig.BaudRate = Convert.ToInt32(cbxBaudRate.Text);
serialPortConfig.DataBits = Convert.ToInt32(cbxDataBits.Text);
serialPortConfig.Parity = cbxParity.Text;
serialPortConfig.StopBits = cbxStopBits.Text;
serialPortConfig.Handshake = cbxHandshake.Text;
//if (cbIfAutoWrap.Checked)
// serialPortConfig.IfAutoWrap = true;
//if (cbIfMuffleFurnace.Checked)
// serialPortConfig.IfMuffleFurnace = true;
//if (cbIfPeelingWeighing.Checked)
// serialPortConfig.IfPeelingWeighing = true;

this.DialogResult = DialogResult.OK;

int iReturn=new SericalPortConfigBLL().SaveSerialPortConfigInfo(serialPortConfig);
if (iReturn > 0)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("保存时发生异常,无法正常保存!", "提示");
}
}

private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}

private void frmConfigPort_Shown(object sender, EventArgs e)
{
this.cbxPortName.Select(0, 0);
}
}
}

+ 167
- 0
CNAS_BalanceClient/frmConfigPort.resx Ver arquivo

@@ -0,0 +1,167 @@
<?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>
AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAABAnAAAQJwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAABUAAAAcAAAAHAAAABwAAAAcAAAAHAAA
ABwAAAAVAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAADAAAAJwAAACbAAAAjwAAAI8AAACPAAAAjwAAAJsAAACcAAAADAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAIkAAABEAAAASgAA
AEMAAABDAAAASgAAAEQAAACJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAABlAAAAIAAAAB8AAAAfAAAAIAAAAGUAAABeAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ADEAAACJAAAAAAAAAAAAAAAAAAAAAAAAAIkAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACUAAAAGQAAABsAAAAbAAAAGQAA
AJQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACMAAAAjwAAAKYAAACmAAAAjwAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0AAACjAAAAhgAA
AEcAAABHAAAAhgAAAKMAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMQAA
AD0AAAA9AAAAPgAAAD4AAAA+AAAAOwAAAHQAAACWAAAANwAAAJQAAACUAAAANwAAAJYAAAB0AAAAOwAA
AD4AAAA+AAAAPgAAAD0AAAA9AAAAMQAAAAUAAAAZAAAArQAAAMAAAACiAAAAgwAAAIUAAACEAAAAjgAA
AL8AAABBAAAAjwAAAD0AAAA9AAAAjwAAAEEAAAC/AAAAjgAAAIQAAACFAAAAgwAAAKIAAADAAAAArQAA
ABkAAAAWAAAAnwAAALYAAACiAAAAjgAAAI8AAACOAAAAlAAAAL0AAABcAAAAhQAAAFwAAABcAAAAhQAA
AFwAAAC9AAAAlAAAAI4AAACPAAAAjgAAAKIAAAC2AAAAnwAAABYAAAACAAAAFQAAABsAAAAcAAAAHQAA
AB0AAAAdAAAAGQAAAF4AAACZAAAAKgAAAH4AAAB+AAAAKgAAAJkAAABeAAAAGQAAAB0AAAAdAAAAHQAA
ABwAAAAbAAAAFQAAAAIAAAAPAAAAfgAAAIoAAACIAAAAiAAAAIgAAACIAAAAigAAAJYAAAChAAAApwAA
AFwAAABcAAAApwAAAKEAAACWAAAAigAAAIgAAACIAAAAiAAAAIgAAACKAAAAfgAAAA8AAAAcAAAAnwAA
ADQAAAApAAAAKQAAACkAAAAoAAAAPAAAAJwAAAAoAAAASAAAAJgAAACYAAAASAAAACkAAACcAAAAPAAA
ACgAAAApAAAAKQAAACkAAAA0AAAAnwAAABwAAAAcAAAAjwAAAEYAAAB3AAAAdgAAAHYAAAB2AAAARQAA
AJEAAAANAAAAAAAAAAcAAAAHAAAAAAAAAA0AAACRAAAARQAAAHYAAAB2AAAAdgAAAHcAAABGAAAAjwAA
ABwAAAAcAAAAjwAAAEYAAAB1AAAAdAAAAHQAAAB0AAAARQAAAJEAAAAPAAAAAAAAAAAAAAAAAAAAAAAA
AA8AAACRAAAARQAAAHQAAAB0AAAAdAAAAHUAAABGAAAAjwAAABwAAAAcAAAAjwAAAE4AAACFAAAAhAAA
AIQAAACEAAAATAAAAJEAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA8AAACRAAAATAAAAIQAAACEAAAAhAAA
AIUAAABOAAAAjwAAABwAAAAcAAAAjwAAAFEAAACLAAAAiQAAAIkAAACJAAAATgAAAJEAAAAPAAAAAAAA
AAAAAAAAAAAAAAAAAA8AAACRAAAATgAAAIkAAACJAAAAiQAAAIsAAABRAAAAjwAAABwAAAAcAAAAjwAA
AEcAAAB4AAAAdwAAAHYAAAB2AAAARgAAAJEAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA8AAACRAAAARgAA
AHcAAAB3AAAAdwAAAHgAAABHAAAAjwAAABwAAAAcAAAAlgAAAFIAAAB1AAAAbwAAAHoAAAB6AAAASAAA
AJEAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA8AAACWAAAAUgAAAHUAAABuAAAAegAAAHwAAABJAAAAjwAA
ABwAAAAQAAAAsQAAALkAAACUAAAARwAAAI4AAACOAAAAUAAAAJAAAAAPAAAAAAAAAAAAAAAAAAAAAAAA
AAcAAACkAAAAvgAAAJsAAABFAAAAiwAAAJAAAABTAAAAjwAAABwAAAAAAAAANgAAALAAAAC7AAAAIwAA
ABYAAAAXAAAAIwAAAJYAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAAqQAAAMMAAAAtAAAAFgAA
ABcAAAAcAAAAlQAAABwAAAAAAAAAAAAAADYAAACxAAAAlgAAAJAAAACQAAAAmAAAAJYAAAALAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAKwAAACaAAAAkAAAAJAAAACVAAAAngAAABUAAAAAAAAAAAAA
AAAAAAAQAAAAHAAAABwAAAAcAAAAHAAAABMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA4AAAAcAAAAHAAAABwAAAAcAAAAFQAAAAL8AD8A/AA/APwAPwD8AD8A/AA/AP4AfwD+AH8AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAc
AAA=
</value>
</data>
</root>

+ 926
- 0
CNAS_BalanceClient/frmHistory.Designer.cs Ver arquivo

@@ -0,0 +1,926 @@
namespace CNAS_BalanceClient
{
partial class frmHistory
{
/// <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.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.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmHistory));
this.pnlAll = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.pnlCenterBody = new System.Windows.Forms.Panel();
this.dgvShuiFen = new System.Windows.Forms.DataGridView();
this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn7 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn8 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Mad = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn12 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dgvHuiFen = new System.Windows.Forms.DataGridView();
this.ID3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn14 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn15 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn16 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn17 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn18 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn19 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn20 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn21 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn22 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.DecrementValue2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.AAD = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column17 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dgvHuiFaFen = new System.Windows.Forms.DataGridView();
this.ID4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn24 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn25 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn26 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn27 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn28 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn29 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn30 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.VR = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.MAD2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.VAD = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column13 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column14 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn13 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dgvQuanShuiFen = new System.Windows.Forms.DataGridView();
this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Sample_Number = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Instrument_Number = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Crucible_Number = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Empty_Crucible_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Sample_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.AddSample_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Drying_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.SecondDrying_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ThirdDrying_Weight = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Mt = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Auto_Code = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlCenterTop = new System.Windows.Forms.Panel();
this.btnFind = new System.Windows.Forms.Button();
this.txtCode = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.comType = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.dtpEndDate = new System.Windows.Forms.DateTimePicker();
this.dtpStartTime = new System.Windows.Forms.DateTimePicker();
this.label1 = new System.Windows.Forms.Label();
this.pnlBottom = new System.Windows.Forms.Panel();
this.pnlRight = new System.Windows.Forms.Panel();
this.pnlLeft = new System.Windows.Forms.Panel();
this.pnlTop = new System.Windows.Forms.Panel();
this.pnlAll.SuspendLayout();
this.pnlCenter.SuspendLayout();
this.pnlCenterBody.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvShuiFen)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvHuiFen)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvHuiFaFen)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvQuanShuiFen)).BeginInit();
this.pnlCenterTop.SuspendLayout();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.pnlCenter);
this.pnlAll.Controls.Add(this.pnlBottom);
this.pnlAll.Controls.Add(this.pnlRight);
this.pnlAll.Controls.Add(this.pnlLeft);
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(919, 558);
this.pnlAll.TabIndex = 0;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.pnlCenterBody);
this.pnlCenter.Controls.Add(this.pnlCenterTop);
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(899, 538);
this.pnlCenter.TabIndex = 4;
//
// pnlCenterBody
//
this.pnlCenterBody.Controls.Add(this.dgvShuiFen);
this.pnlCenterBody.Controls.Add(this.dgvHuiFen);
this.pnlCenterBody.Controls.Add(this.dgvHuiFaFen);
this.pnlCenterBody.Controls.Add(this.dgvQuanShuiFen);
this.pnlCenterBody.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlCenterBody.Location = new System.Drawing.Point(0, 48);
this.pnlCenterBody.Name = "pnlCenterBody";
this.pnlCenterBody.Size = new System.Drawing.Size(899, 490);
this.pnlCenterBody.TabIndex = 1;
//
// dgvShuiFen
//
this.dgvShuiFen.AllowUserToAddRows = false;
this.dgvShuiFen.BackgroundColor = System.Drawing.Color.White;
this.dgvShuiFen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvShuiFen.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewTextBoxColumn1,
this.dataGridViewTextBoxColumn2,
this.dataGridViewTextBoxColumn3,
this.dataGridViewTextBoxColumn4,
this.dataGridViewTextBoxColumn5,
this.dataGridViewTextBoxColumn6,
this.dataGridViewTextBoxColumn7,
this.dataGridViewTextBoxColumn8,
this.dataGridViewTextBoxColumn9,
this.dataGridViewTextBoxColumn10,
this.Column9,
this.Mad,
this.dataGridViewTextBoxColumn12,
this.Column1});
this.dgvShuiFen.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvShuiFen.Location = new System.Drawing.Point(0, 0);
this.dgvShuiFen.Name = "dgvShuiFen";
this.dgvShuiFen.ReadOnly = true;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.DimGray;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.Color.Black;
this.dgvShuiFen.RowsDefaultCellStyle = dataGridViewCellStyle1;
this.dgvShuiFen.RowTemplate.Height = 23;
this.dgvShuiFen.Size = new System.Drawing.Size(899, 490);
this.dgvShuiFen.TabIndex = 5;
//
// dataGridViewTextBoxColumn1
//
this.dataGridViewTextBoxColumn1.DataPropertyName = "GUID";
this.dataGridViewTextBoxColumn1.HeaderText = "编号";
this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
this.dataGridViewTextBoxColumn1.ReadOnly = true;
this.dataGridViewTextBoxColumn1.Visible = false;
this.dataGridViewTextBoxColumn1.Width = 55;
//
// dataGridViewTextBoxColumn2
//
this.dataGridViewTextBoxColumn2.DataPropertyName = "Sample_Number";
this.dataGridViewTextBoxColumn2.HeaderText = "样品编号";
this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
this.dataGridViewTextBoxColumn2.ReadOnly = true;
//
// dataGridViewTextBoxColumn3
//
this.dataGridViewTextBoxColumn3.DataPropertyName = "Instrument_Number";
this.dataGridViewTextBoxColumn3.HeaderText = "仪器编号";
this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
this.dataGridViewTextBoxColumn3.ReadOnly = true;
//
// dataGridViewTextBoxColumn4
//
this.dataGridViewTextBoxColumn4.DataPropertyName = "Crucible_Number";
this.dataGridViewTextBoxColumn4.HeaderText = "坩埚号";
this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
this.dataGridViewTextBoxColumn4.ReadOnly = true;
//
// dataGridViewTextBoxColumn5
//
this.dataGridViewTextBoxColumn5.DataPropertyName = "Empty_Crucible_Weight";
this.dataGridViewTextBoxColumn5.HeaderText = "空坩埚重(g)";
this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
this.dataGridViewTextBoxColumn5.ReadOnly = true;
//
// dataGridViewTextBoxColumn6
//
this.dataGridViewTextBoxColumn6.DataPropertyName = "Sample_Weight";
this.dataGridViewTextBoxColumn6.HeaderText = "样重(g)";
this.dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6";
this.dataGridViewTextBoxColumn6.ReadOnly = true;
this.dataGridViewTextBoxColumn6.Width = 80;
//
// dataGridViewTextBoxColumn7
//
this.dataGridViewTextBoxColumn7.DataPropertyName = "AddSample_Weight";
this.dataGridViewTextBoxColumn7.HeaderText = "加样重(g)";
this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7";
this.dataGridViewTextBoxColumn7.ReadOnly = true;
this.dataGridViewTextBoxColumn7.Width = 90;
//
// dataGridViewTextBoxColumn8
//
this.dataGridViewTextBoxColumn8.DataPropertyName = "Drying_Weight";
this.dataGridViewTextBoxColumn8.HeaderText = "烘干重(g)";
this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8";
this.dataGridViewTextBoxColumn8.ReadOnly = true;
this.dataGridViewTextBoxColumn8.Width = 90;
//
// dataGridViewTextBoxColumn9
//
this.dataGridViewTextBoxColumn9.DataPropertyName = "SecondDrying_Weight";
this.dataGridViewTextBoxColumn9.HeaderText = "二次烘干重(g)";
this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9";
this.dataGridViewTextBoxColumn9.ReadOnly = true;
this.dataGridViewTextBoxColumn9.Width = 120;
//
// dataGridViewTextBoxColumn10
//
this.dataGridViewTextBoxColumn10.DataPropertyName = "ThirdDrying_Weight";
this.dataGridViewTextBoxColumn10.HeaderText = "三次烘干重(g)";
this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10";
this.dataGridViewTextBoxColumn10.ReadOnly = true;
this.dataGridViewTextBoxColumn10.Width = 120;
//
// Column9
//
this.Column9.DataPropertyName = "DecrementValue";
this.Column9.HeaderText = "减量";
this.Column9.Name = "Column9";
this.Column9.ReadOnly = true;
//
// Mad
//
this.Mad.DataPropertyName = "Mad";
this.Mad.HeaderText = "Mad(%)";
this.Mad.Name = "Mad";
this.Mad.ReadOnly = true;
this.Mad.Width = 50;
//
// dataGridViewTextBoxColumn12
//
this.dataGridViewTextBoxColumn12.DataPropertyName = "Auto_Code";
this.dataGridViewTextBoxColumn12.HeaderText = "自动编号";
this.dataGridViewTextBoxColumn12.Name = "dataGridViewTextBoxColumn12";
this.dataGridViewTextBoxColumn12.ReadOnly = true;
//
// Column1
//
this.Column1.DataPropertyName = "OperaDateTime";
this.Column1.HeaderText = "称量日期";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.Width = 150;
//
// dgvHuiFen
//
this.dgvHuiFen.AllowUserToAddRows = false;
this.dgvHuiFen.BackgroundColor = System.Drawing.Color.White;
this.dgvHuiFen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvHuiFen.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ID3,
this.dataGridViewTextBoxColumn14,
this.dataGridViewTextBoxColumn15,
this.dataGridViewTextBoxColumn16,
this.dataGridViewTextBoxColumn17,
this.dataGridViewTextBoxColumn18,
this.dataGridViewTextBoxColumn19,
this.dataGridViewTextBoxColumn20,
this.dataGridViewTextBoxColumn21,
this.dataGridViewTextBoxColumn22,
this.DecrementValue2,
this.AAD,
this.Column17,
this.dataGridViewTextBoxColumn11});
this.dgvHuiFen.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvHuiFen.Location = new System.Drawing.Point(0, 0);
this.dgvHuiFen.Name = "dgvHuiFen";
this.dgvHuiFen.ReadOnly = true;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.DimGray;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.Color.Black;
this.dgvHuiFen.RowsDefaultCellStyle = dataGridViewCellStyle2;
this.dgvHuiFen.RowTemplate.Height = 23;
this.dgvHuiFen.Size = new System.Drawing.Size(899, 490);
this.dgvHuiFen.TabIndex = 4;
//
// ID3
//
this.ID3.DataPropertyName = "GUID";
this.ID3.HeaderText = "编号";
this.ID3.Name = "ID3";
this.ID3.ReadOnly = true;
this.ID3.Visible = false;
this.ID3.Width = 55;
//
// dataGridViewTextBoxColumn14
//
this.dataGridViewTextBoxColumn14.DataPropertyName = "Sample_Number";
this.dataGridViewTextBoxColumn14.HeaderText = "样品编号";
this.dataGridViewTextBoxColumn14.Name = "dataGridViewTextBoxColumn14";
this.dataGridViewTextBoxColumn14.ReadOnly = true;
//
// dataGridViewTextBoxColumn15
//
this.dataGridViewTextBoxColumn15.DataPropertyName = "Instrument_Number";
this.dataGridViewTextBoxColumn15.HeaderText = "仪器编号";
this.dataGridViewTextBoxColumn15.Name = "dataGridViewTextBoxColumn15";
this.dataGridViewTextBoxColumn15.ReadOnly = true;
//
// dataGridViewTextBoxColumn16
//
this.dataGridViewTextBoxColumn16.DataPropertyName = "Crucible_Number";
this.dataGridViewTextBoxColumn16.HeaderText = "坩埚号";
this.dataGridViewTextBoxColumn16.Name = "dataGridViewTextBoxColumn16";
this.dataGridViewTextBoxColumn16.ReadOnly = true;
//
// dataGridViewTextBoxColumn17
//
this.dataGridViewTextBoxColumn17.DataPropertyName = "Empty_Crucible_Weight";
this.dataGridViewTextBoxColumn17.HeaderText = "空坩埚重(g)";
this.dataGridViewTextBoxColumn17.Name = "dataGridViewTextBoxColumn17";
this.dataGridViewTextBoxColumn17.ReadOnly = true;
//
// dataGridViewTextBoxColumn18
//
this.dataGridViewTextBoxColumn18.DataPropertyName = "Sample_Weight";
this.dataGridViewTextBoxColumn18.HeaderText = "样重(g)";
this.dataGridViewTextBoxColumn18.Name = "dataGridViewTextBoxColumn18";
this.dataGridViewTextBoxColumn18.ReadOnly = true;
this.dataGridViewTextBoxColumn18.Width = 80;
//
// dataGridViewTextBoxColumn19
//
this.dataGridViewTextBoxColumn19.DataPropertyName = "AddSample_Weight";
this.dataGridViewTextBoxColumn19.HeaderText = "加样重(g)";
this.dataGridViewTextBoxColumn19.Name = "dataGridViewTextBoxColumn19";
this.dataGridViewTextBoxColumn19.ReadOnly = true;
this.dataGridViewTextBoxColumn19.Width = 90;
//
// dataGridViewTextBoxColumn20
//
this.dataGridViewTextBoxColumn20.DataPropertyName = "BurningResidue_Weight";
this.dataGridViewTextBoxColumn20.HeaderText = "烧残重(g)";
this.dataGridViewTextBoxColumn20.Name = "dataGridViewTextBoxColumn20";
this.dataGridViewTextBoxColumn20.ReadOnly = true;
this.dataGridViewTextBoxColumn20.Width = 90;
//
// dataGridViewTextBoxColumn21
//
this.dataGridViewTextBoxColumn21.DataPropertyName = "SecondBurningResidue_Weight";
this.dataGridViewTextBoxColumn21.HeaderText = "二次灼烧残重(g)";
this.dataGridViewTextBoxColumn21.Name = "dataGridViewTextBoxColumn21";
this.dataGridViewTextBoxColumn21.ReadOnly = true;
this.dataGridViewTextBoxColumn21.Width = 120;
//
// dataGridViewTextBoxColumn22
//
this.dataGridViewTextBoxColumn22.DataPropertyName = "ThirdBurningResidue_Weight";
this.dataGridViewTextBoxColumn22.HeaderText = "三次灼烧重(g)";
this.dataGridViewTextBoxColumn22.Name = "dataGridViewTextBoxColumn22";
this.dataGridViewTextBoxColumn22.ReadOnly = true;
this.dataGridViewTextBoxColumn22.Width = 120;
//
// DecrementValue2
//
this.DecrementValue2.DataPropertyName = "DecrementValue";
this.DecrementValue2.HeaderText = "减量";
this.DecrementValue2.Name = "DecrementValue2";
this.DecrementValue2.ReadOnly = true;
//
// AAD
//
this.AAD.DataPropertyName = "AAD";
this.AAD.HeaderText = "Aad(%)";
this.AAD.Name = "AAD";
this.AAD.ReadOnly = true;
//
// Column17
//
this.Column17.DataPropertyName = "Auto_Code";
this.Column17.HeaderText = "自动编号";
this.Column17.Name = "Column17";
this.Column17.ReadOnly = true;
//
// dataGridViewTextBoxColumn11
//
this.dataGridViewTextBoxColumn11.DataPropertyName = "OperaDateTime";
this.dataGridViewTextBoxColumn11.HeaderText = "称量日期";
this.dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11";
this.dataGridViewTextBoxColumn11.ReadOnly = true;
this.dataGridViewTextBoxColumn11.Width = 150;
//
// dgvHuiFaFen
//
this.dgvHuiFaFen.AllowUserToAddRows = false;
this.dgvHuiFaFen.BackgroundColor = System.Drawing.Color.White;
this.dgvHuiFaFen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvHuiFaFen.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ID4,
this.dataGridViewTextBoxColumn24,
this.dataGridViewTextBoxColumn25,
this.dataGridViewTextBoxColumn26,
this.dataGridViewTextBoxColumn27,
this.dataGridViewTextBoxColumn28,
this.dataGridViewTextBoxColumn29,
this.dataGridViewTextBoxColumn30,
this.VR,
this.MAD2,
this.VAD,
this.Column13,
this.Column14,
this.dataGridViewTextBoxColumn13});
this.dgvHuiFaFen.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvHuiFaFen.Location = new System.Drawing.Point(0, 0);
this.dgvHuiFaFen.Name = "dgvHuiFaFen";
this.dgvHuiFaFen.ReadOnly = true;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.DimGray;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Black;
this.dgvHuiFaFen.RowsDefaultCellStyle = dataGridViewCellStyle3;
this.dgvHuiFaFen.RowTemplate.Height = 23;
this.dgvHuiFaFen.Size = new System.Drawing.Size(899, 490);
this.dgvHuiFaFen.TabIndex = 3;
//
// ID4
//
this.ID4.DataPropertyName = "GUID";
this.ID4.HeaderText = "编号";
this.ID4.Name = "ID4";
this.ID4.ReadOnly = true;
this.ID4.Visible = false;
this.ID4.Width = 55;
//
// dataGridViewTextBoxColumn24
//
this.dataGridViewTextBoxColumn24.DataPropertyName = "Sample_Number";
this.dataGridViewTextBoxColumn24.HeaderText = "样品编号";
this.dataGridViewTextBoxColumn24.Name = "dataGridViewTextBoxColumn24";
this.dataGridViewTextBoxColumn24.ReadOnly = true;
//
// dataGridViewTextBoxColumn25
//
this.dataGridViewTextBoxColumn25.DataPropertyName = "Instrument_Number";
this.dataGridViewTextBoxColumn25.HeaderText = "仪器编号";
this.dataGridViewTextBoxColumn25.Name = "dataGridViewTextBoxColumn25";
this.dataGridViewTextBoxColumn25.ReadOnly = true;
//
// dataGridViewTextBoxColumn26
//
this.dataGridViewTextBoxColumn26.DataPropertyName = "Crucible_Number";
this.dataGridViewTextBoxColumn26.HeaderText = "坩埚号";
this.dataGridViewTextBoxColumn26.Name = "dataGridViewTextBoxColumn26";
this.dataGridViewTextBoxColumn26.ReadOnly = true;
//
// dataGridViewTextBoxColumn27
//
this.dataGridViewTextBoxColumn27.DataPropertyName = "Empty_Crucible_Weight";
this.dataGridViewTextBoxColumn27.HeaderText = "空坩埚重(g)";
this.dataGridViewTextBoxColumn27.Name = "dataGridViewTextBoxColumn27";
this.dataGridViewTextBoxColumn27.ReadOnly = true;
//
// dataGridViewTextBoxColumn28
//
this.dataGridViewTextBoxColumn28.DataPropertyName = "Sample_Weight";
this.dataGridViewTextBoxColumn28.HeaderText = "样重(g)";
this.dataGridViewTextBoxColumn28.Name = "dataGridViewTextBoxColumn28";
this.dataGridViewTextBoxColumn28.ReadOnly = true;
this.dataGridViewTextBoxColumn28.Width = 80;
//
// dataGridViewTextBoxColumn29
//
this.dataGridViewTextBoxColumn29.DataPropertyName = "AddSample_Weight";
this.dataGridViewTextBoxColumn29.HeaderText = "加样重(g)";
this.dataGridViewTextBoxColumn29.Name = "dataGridViewTextBoxColumn29";
this.dataGridViewTextBoxColumn29.ReadOnly = true;
this.dataGridViewTextBoxColumn29.Width = 90;
//
// dataGridViewTextBoxColumn30
//
this.dataGridViewTextBoxColumn30.DataPropertyName = "Drying_Weight";
this.dataGridViewTextBoxColumn30.HeaderText = "烧残重(g)";
this.dataGridViewTextBoxColumn30.Name = "dataGridViewTextBoxColumn30";
this.dataGridViewTextBoxColumn30.ReadOnly = true;
this.dataGridViewTextBoxColumn30.Width = 90;
//
// VR
//
this.VR.DataPropertyName = "VR";
this.VR.HeaderText = "Vr(%)";
this.VR.Name = "VR";
this.VR.ReadOnly = true;
//
// MAD2
//
this.MAD2.DataPropertyName = "MAD";
this.MAD2.HeaderText = "Mad(%)";
this.MAD2.Name = "MAD2";
this.MAD2.ReadOnly = true;
//
// VAD
//
this.VAD.DataPropertyName = "VAD";
this.VAD.HeaderText = "Vad(%)";
this.VAD.Name = "VAD";
this.VAD.ReadOnly = true;
//
// Column13
//
this.Column13.DataPropertyName = "Cinder_Characteristics";
this.Column13.HeaderText = "焦渣特征";
this.Column13.Name = "Column13";
this.Column13.ReadOnly = true;
//
// Column14
//
this.Column14.DataPropertyName = "Auto_Code";
this.Column14.HeaderText = "自动编号";
this.Column14.Name = "Column14";
this.Column14.ReadOnly = true;
//
// dataGridViewTextBoxColumn13
//
this.dataGridViewTextBoxColumn13.DataPropertyName = "OperaDateTime";
this.dataGridViewTextBoxColumn13.HeaderText = "称量日期";
this.dataGridViewTextBoxColumn13.Name = "dataGridViewTextBoxColumn13";
this.dataGridViewTextBoxColumn13.ReadOnly = true;
this.dataGridViewTextBoxColumn13.Width = 150;
//
// dgvQuanShuiFen
//
this.dgvQuanShuiFen.AllowUserToAddRows = false;
this.dgvQuanShuiFen.BackgroundColor = System.Drawing.Color.White;
this.dgvQuanShuiFen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvQuanShuiFen.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ID,
this.Sample_Number,
this.Instrument_Number,
this.Crucible_Number,
this.Empty_Crucible_Weight,
this.Sample_Weight,
this.AddSample_Weight,
this.Drying_Weight,
this.SecondDrying_Weight,
this.ThirdDrying_Weight,
this.Mt,
this.Auto_Code,
this.Column2});
this.dgvQuanShuiFen.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvQuanShuiFen.Location = new System.Drawing.Point(0, 0);
this.dgvQuanShuiFen.Name = "dgvQuanShuiFen";
this.dgvQuanShuiFen.ReadOnly = true;
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.DimGray;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.Color.Black;
this.dgvQuanShuiFen.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvQuanShuiFen.RowTemplate.Height = 23;
this.dgvQuanShuiFen.Size = new System.Drawing.Size(899, 490);
this.dgvQuanShuiFen.TabIndex = 1;
//
// ID
//
this.ID.DataPropertyName = "GUID";
this.ID.HeaderText = "编号";
this.ID.Name = "ID";
this.ID.ReadOnly = true;
this.ID.Visible = false;
this.ID.Width = 55;
//
// Sample_Number
//
this.Sample_Number.DataPropertyName = "Sample_Number";
this.Sample_Number.HeaderText = "样品编号";
this.Sample_Number.Name = "Sample_Number";
this.Sample_Number.ReadOnly = true;
//
// Instrument_Number
//
this.Instrument_Number.DataPropertyName = "Instrument_Number";
this.Instrument_Number.HeaderText = "仪器编号";
this.Instrument_Number.Name = "Instrument_Number";
this.Instrument_Number.ReadOnly = true;
//
// Crucible_Number
//
this.Crucible_Number.DataPropertyName = "Crucible_Number";
this.Crucible_Number.HeaderText = "坩埚号";
this.Crucible_Number.Name = "Crucible_Number";
this.Crucible_Number.ReadOnly = true;
//
// Empty_Crucible_Weight
//
this.Empty_Crucible_Weight.DataPropertyName = "Empty_Crucible_Weight";
this.Empty_Crucible_Weight.HeaderText = "空坩埚重(g)";
this.Empty_Crucible_Weight.Name = "Empty_Crucible_Weight";
this.Empty_Crucible_Weight.ReadOnly = true;
//
// Sample_Weight
//
this.Sample_Weight.DataPropertyName = "Sample_Weight";
this.Sample_Weight.HeaderText = "样重(g)";
this.Sample_Weight.Name = "Sample_Weight";
this.Sample_Weight.ReadOnly = true;
this.Sample_Weight.Width = 80;
//
// AddSample_Weight
//
this.AddSample_Weight.DataPropertyName = "AddSample_Weight";
this.AddSample_Weight.HeaderText = "加样重(g)";
this.AddSample_Weight.Name = "AddSample_Weight";
this.AddSample_Weight.ReadOnly = true;
this.AddSample_Weight.Width = 90;
//
// Drying_Weight
//
this.Drying_Weight.DataPropertyName = "Drying_Weight";
this.Drying_Weight.HeaderText = "烘干重(g)";
this.Drying_Weight.Name = "Drying_Weight";
this.Drying_Weight.ReadOnly = true;
this.Drying_Weight.Width = 90;
//
// SecondDrying_Weight
//
this.SecondDrying_Weight.DataPropertyName = "SecondDrying_Weight";
this.SecondDrying_Weight.HeaderText = "二次烘干重(g)";
this.SecondDrying_Weight.Name = "SecondDrying_Weight";
this.SecondDrying_Weight.ReadOnly = true;
this.SecondDrying_Weight.Width = 120;
//
// ThirdDrying_Weight
//
this.ThirdDrying_Weight.DataPropertyName = "ThirdDrying_Weight";
this.ThirdDrying_Weight.HeaderText = "三次烘干重(g)";
this.ThirdDrying_Weight.Name = "ThirdDrying_Weight";
this.ThirdDrying_Weight.ReadOnly = true;
this.ThirdDrying_Weight.Width = 120;
//
// Mt
//
this.Mt.DataPropertyName = "Mt";
this.Mt.HeaderText = "Mt(%)";
this.Mt.Name = "Mt";
this.Mt.ReadOnly = true;
this.Mt.Width = 50;
//
// Auto_Code
//
this.Auto_Code.DataPropertyName = "Auto_Code";
this.Auto_Code.HeaderText = "自动编号";
this.Auto_Code.Name = "Auto_Code";
this.Auto_Code.ReadOnly = true;
//
// Column2
//
this.Column2.DataPropertyName = "OperaDateTime";
this.Column2.HeaderText = "称量日期";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
this.Column2.Width = 150;
//
// pnlCenterTop
//
this.pnlCenterTop.Controls.Add(this.btnFind);
this.pnlCenterTop.Controls.Add(this.txtCode);
this.pnlCenterTop.Controls.Add(this.label3);
this.pnlCenterTop.Controls.Add(this.comType);
this.pnlCenterTop.Controls.Add(this.label2);
this.pnlCenterTop.Controls.Add(this.dtpEndDate);
this.pnlCenterTop.Controls.Add(this.dtpStartTime);
this.pnlCenterTop.Controls.Add(this.label1);
this.pnlCenterTop.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlCenterTop.Location = new System.Drawing.Point(0, 0);
this.pnlCenterTop.Name = "pnlCenterTop";
this.pnlCenterTop.Size = new System.Drawing.Size(899, 48);
this.pnlCenterTop.TabIndex = 0;
//
// btnFind
//
this.btnFind.Location = new System.Drawing.Point(808, 12);
this.btnFind.Name = "btnFind";
this.btnFind.Size = new System.Drawing.Size(75, 25);
this.btnFind.TabIndex = 10;
this.btnFind.Text = "查询";
this.btnFind.UseVisualStyleBackColor = true;
this.btnFind.Click += new System.EventHandler(this.btnFind_Click);
//
// txtCode
//
this.txtCode.Location = new System.Drawing.Point(593, 13);
this.txtCode.Name = "txtCode";
this.txtCode.Size = new System.Drawing.Size(173, 23);
this.txtCode.TabIndex = 6;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(530, 16);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 17);
this.label3.TabIndex = 5;
this.label3.Text = "样品编码";
//
// comType
//
this.comType.FormattingEnabled = true;
this.comType.Items.AddRange(new object[] {
"全水分",
"水分",
"灰分",
"挥发分"});
this.comType.Location = new System.Drawing.Point(398, 11);
this.comType.Name = "comType";
this.comType.Size = new System.Drawing.Size(121, 25);
this.comType.TabIndex = 4;
this.comType.SelectedValueChanged += new System.EventHandler(this.comType_SelectedValueChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(359, 15);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(32, 17);
this.label2.TabIndex = 3;
this.label2.Text = "类型";
//
// dtpEndDate
//
this.dtpEndDate.CustomFormat = "yyyy-MM-dd HH:mm";
this.dtpEndDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtpEndDate.Location = new System.Drawing.Point(212, 11);
this.dtpEndDate.Name = "dtpEndDate";
this.dtpEndDate.Size = new System.Drawing.Size(139, 23);
this.dtpEndDate.TabIndex = 2;
//
// dtpStartTime
//
this.dtpStartTime.CustomFormat = "yyyy-MM-dd HH:mm";
this.dtpStartTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtpStartTime.Location = new System.Drawing.Point(69, 11);
this.dtpStartTime.Name = "dtpStartTime";
this.dtpStartTime.Size = new System.Drawing.Size(139, 23);
this.dtpStartTime.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 17);
this.label1.TabIndex = 0;
this.label1.Text = "称量日期";
//
// pnlBottom
//
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(10, 548);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(899, 10);
this.pnlBottom.TabIndex = 3;
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(909, 10);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(10, 548);
this.pnlRight.TabIndex = 2;
//
// pnlLeft
//
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlLeft.Location = new System.Drawing.Point(0, 10);
this.pnlLeft.Name = "pnlLeft";
this.pnlLeft.Size = new System.Drawing.Size(10, 548);
this.pnlLeft.TabIndex = 1;
//
// 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(919, 10);
this.pnlTop.TabIndex = 0;
//
// frmHistory
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(919, 558);
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 = "frmHistory";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "查询";
this.Load += new System.EventHandler(this.frmHistory_Load);
this.Shown += new System.EventHandler(this.frmHistory_Shown);
this.pnlAll.ResumeLayout(false);
this.pnlCenter.ResumeLayout(false);
this.pnlCenterBody.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvShuiFen)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvHuiFen)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvHuiFaFen)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvQuanShuiFen)).EndInit();
this.pnlCenterTop.ResumeLayout(false);
this.pnlCenterTop.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Panel pnlCenterBody;
private System.Windows.Forms.Panel pnlCenterTop;
private System.Windows.Forms.TextBox txtCode;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox comType;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.DateTimePicker dtpEndDate;
private System.Windows.Forms.DateTimePicker dtpStartTime;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Button btnFind;
private System.Windows.Forms.DataGridView dgvQuanShuiFen;
private System.Windows.Forms.DataGridView dgvHuiFaFen;
private System.Windows.Forms.DataGridView dgvHuiFen;
private System.Windows.Forms.DataGridView dgvShuiFen;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
private System.Windows.Forms.DataGridViewTextBoxColumn Column9;
private System.Windows.Forms.DataGridViewTextBoxColumn Mad;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn12;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn ID3;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn14;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn15;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn16;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn17;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn18;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn19;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn20;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn21;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn22;
private System.Windows.Forms.DataGridViewTextBoxColumn DecrementValue2;
private System.Windows.Forms.DataGridViewTextBoxColumn AAD;
private System.Windows.Forms.DataGridViewTextBoxColumn Column17;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
private System.Windows.Forms.DataGridViewTextBoxColumn ID4;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn24;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn25;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn26;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn27;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn28;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn29;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn30;
private System.Windows.Forms.DataGridViewTextBoxColumn VR;
private System.Windows.Forms.DataGridViewTextBoxColumn MAD2;
private System.Windows.Forms.DataGridViewTextBoxColumn VAD;
private System.Windows.Forms.DataGridViewTextBoxColumn Column13;
private System.Windows.Forms.DataGridViewTextBoxColumn Column14;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn13;
private System.Windows.Forms.DataGridViewTextBoxColumn ID;
private System.Windows.Forms.DataGridViewTextBoxColumn Sample_Number;
private System.Windows.Forms.DataGridViewTextBoxColumn Instrument_Number;
private System.Windows.Forms.DataGridViewTextBoxColumn Crucible_Number;
private System.Windows.Forms.DataGridViewTextBoxColumn Empty_Crucible_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn Sample_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn AddSample_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn Drying_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn SecondDrying_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn ThirdDrying_Weight;
private System.Windows.Forms.DataGridViewTextBoxColumn Mt;
private System.Windows.Forms.DataGridViewTextBoxColumn Auto_Code;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
}
}

+ 109
- 0
CNAS_BalanceClient/frmHistory.cs Ver arquivo

@@ -0,0 +1,109 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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_BalanceClient
{
public partial class frmHistory : Form
{
public frmHistory()
{
InitializeComponent();

dgvQuanShuiFen.AutoGenerateColumns = false;
dgvShuiFen.AutoGenerateColumns = false;
dgvHuiFen.AutoGenerateColumns = false;
dgvHuiFaFen.AutoGenerateColumns = false;
}

private void frmHistory_Load(object sender, EventArgs e)
{
this.comType.SelectedIndex = 0;
}

private void comType_SelectedValueChanged(object sender, EventArgs e)
{
switch (comType.SelectedItem)
{
case "全水分":
dgvQuanShuiFen.Visible = true;
dgvShuiFen.Visible = false;
dgvHuiFen.Visible = false;
dgvHuiFaFen.Visible = false;
break;
case "水分":
dgvQuanShuiFen.Visible = false;
dgvShuiFen.Visible = true;
dgvHuiFen.Visible = false;
dgvHuiFaFen.Visible = false;
break;
case "灰分":
dgvQuanShuiFen.Visible = false;
dgvShuiFen.Visible = false;
dgvHuiFen.Visible = true;
dgvHuiFaFen.Visible = false;
break;
case "挥发分":
dgvQuanShuiFen.Visible = false;
dgvShuiFen.Visible = false;
dgvHuiFen.Visible = false;
dgvHuiFaFen.Visible = true;
break;
}
}

private void btnFind_Click(object sender, EventArgs e)
{
List<LaboratoryTest> lstFilterData = new List<LaboratoryTest>();
List<LaboratoryTest> laboratoryTests = new LaboratoryTestBLL().GetLaboratoryTestData();

//过滤时间
if (dtpEndDate.Value >= dtpStartTime.Value)
lstFilterData = laboratoryTests.Where(s => s.OperaDateTime != null && s.OperaDateTime > dtpStartTime.Value && s.OperaDateTime < dtpEndDate.Value).ToList<LaboratoryTest>();
//筛选编码
if (this.txtCode.Text.Trim() != "")
lstFilterData = lstFilterData.Where(s => s.Sample_Number == this.txtCode.Text.Trim()).ToList<LaboratoryTest>();
//筛选类型
switch (comType.SelectedItem)
{
case "全水分":
lstFilterData = lstFilterData.Where(s => s.DataType == "ARB").ToList<LaboratoryTest>();

dgvQuanShuiFen.DataSource = new BindingList<LaboratoryTest>();
dgvQuanShuiFen.DataSource = new BindingList<LaboratoryTest>(lstFilterData);
break;
case "水分":
lstFilterData = lstFilterData.Where(s => s.DataType == "Moisture").ToList<LaboratoryTest>();

dgvShuiFen.DataSource = new BindingList<LaboratoryTest>();
dgvShuiFen.DataSource = new BindingList<LaboratoryTest>(lstFilterData);
break;
case "灰分":
lstFilterData = lstFilterData.Where(s => s.DataType == "Ash").ToList<LaboratoryTest>();

dgvHuiFen.DataSource = new BindingList<LaboratoryTest>();
dgvHuiFen.DataSource = new BindingList<LaboratoryTest>(lstFilterData);
break;
case "挥发分":
lstFilterData = lstFilterData.Where(s => s.DataType == "Volatile").ToList<LaboratoryTest>();

dgvHuiFaFen.DataSource = new BindingList<LaboratoryTest>();
dgvHuiFaFen.DataSource = new BindingList<LaboratoryTest>(lstFilterData);
break;
}
}

private void frmHistory_Shown(object sender, EventArgs e)
{
txtCode.Focus();
txtCode.Select(0, 0);
}
}
}

+ 329
- 0
CNAS_BalanceClient/frmHistory.resx Ver arquivo

@@ -0,0 +1,329 @@
<?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="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Mad.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn15.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn19.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn22.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DecrementValue2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AAD.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn24.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn25.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn26.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn27.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn28.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn29.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn30.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MAD2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VAD.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Sample_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Instrument_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Crucible_Number.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Empty_Crucible_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Sample_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AddSample_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Drying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SecondDrying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ThirdDrying_Weight.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Mt.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Auto_Code.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</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>
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
BwA=
</value>
</data>
</root>

+ 183
- 0
CNAS_BalanceClient/frmLoginServer.Designer.cs Ver arquivo

@@ -0,0 +1,183 @@
namespace CNAS_BalanceClient
{
partial class frmLoginServer
{
/// <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(frmLoginServer));
this.pnlCenter = new System.Windows.Forms.Panel();
this.lblTitle = new System.Windows.Forms.Label();
this.Btn_Logout = new System.Windows.Forms.Button();
this.Btn_Login = new System.Windows.Forms.Button();
this.txtPwd = new System.Windows.Forms.TextBox();
this.lblPwd = new System.Windows.Forms.Label();
this.txtUserName = new System.Windows.Forms.TextBox();
this.lblUser = new System.Windows.Forms.Label();
this.pnlCenter.SuspendLayout();
this.SuspendLayout();
//
// pnlCenter
//
this.pnlCenter.BackColor = System.Drawing.Color.White;
this.pnlCenter.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pnlCenter.BackgroundImage")));
this.pnlCenter.Controls.Add(this.lblTitle);
this.pnlCenter.Controls.Add(this.Btn_Logout);
this.pnlCenter.Controls.Add(this.Btn_Login);
this.pnlCenter.Controls.Add(this.txtPwd);
this.pnlCenter.Controls.Add(this.lblPwd);
this.pnlCenter.Controls.Add(this.txtUserName);
this.pnlCenter.Controls.Add(this.lblUser);
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlCenter.Location = new System.Drawing.Point(0, 0);
this.pnlCenter.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(491, 249);
this.pnlCenter.TabIndex = 3;
this.pnlCenter.MouseDown += new System.Windows.Forms.MouseEventHandler(this.frmLoginServer_MouseDown);
//
// lblTitle
//
this.lblTitle.AutoSize = true;
this.lblTitle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.lblTitle.Font = new System.Drawing.Font("华文新魏", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblTitle.ForeColor = System.Drawing.Color.White;
this.lblTitle.Location = new System.Drawing.Point(176, 22);
this.lblTitle.Name = "lblTitle";
this.lblTitle.Size = new System.Drawing.Size(133, 30);
this.lblTitle.TabIndex = 12;
this.lblTitle.Text = "用户登录";
//
// Btn_Logout
//
this.Btn_Logout.BackColor = System.Drawing.SystemColors.HotTrack;
this.Btn_Logout.FlatAppearance.BorderColor = System.Drawing.Color.DarkGray;
this.Btn_Logout.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Btn_Logout.Font = new System.Drawing.Font("微软雅黑", 9.5F);
this.Btn_Logout.ForeColor = System.Drawing.Color.White;
this.Btn_Logout.Location = new System.Drawing.Point(268, 177);
this.Btn_Logout.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Btn_Logout.Name = "Btn_Logout";
this.Btn_Logout.Size = new System.Drawing.Size(90, 30);
this.Btn_Logout.TabIndex = 6;
this.Btn_Logout.Text = "取 消";
this.Btn_Logout.UseVisualStyleBackColor = false;
this.Btn_Logout.Click += new System.EventHandler(this.Btn_Logout_Click);
//
// Btn_Login
//
this.Btn_Login.BackColor = System.Drawing.SystemColors.HotTrack;
this.Btn_Login.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.Btn_Login.FlatAppearance.BorderColor = System.Drawing.Color.DarkGray;
this.Btn_Login.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Btn_Login.Font = new System.Drawing.Font("微软雅黑", 9.5F);
this.Btn_Login.ForeColor = System.Drawing.Color.White;
this.Btn_Login.Location = new System.Drawing.Point(134, 176);
this.Btn_Login.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Btn_Login.Name = "Btn_Login";
this.Btn_Login.Size = new System.Drawing.Size(90, 30);
this.Btn_Login.TabIndex = 5;
this.Btn_Login.Text = "登 录";
this.Btn_Login.UseVisualStyleBackColor = false;
this.Btn_Login.Click += new System.EventHandler(this.Btn_Login_Click);
//
// txtPwd
//
this.txtPwd.Location = new System.Drawing.Point(181, 122);
this.txtPwd.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtPwd.MaxLength = 10;
this.txtPwd.Name = "txtPwd";
this.txtPwd.PasswordChar = '*';
this.txtPwd.Size = new System.Drawing.Size(186, 23);
this.txtPwd.TabIndex = 2;
this.txtPwd.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmLoginServer_KeyDown);
//
// lblPwd
//
this.lblPwd.AutoSize = true;
this.lblPwd.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblPwd.Location = new System.Drawing.Point(122, 126);
this.lblPwd.Name = "lblPwd";
this.lblPwd.Size = new System.Drawing.Size(39, 17);
this.lblPwd.TabIndex = 6;
this.lblPwd.Text = "密 码:";
//
// txtUserName
//
this.txtUserName.Location = new System.Drawing.Point(181, 84);
this.txtUserName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtUserName.MaxLength = 20;
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(186, 23);
this.txtUserName.TabIndex = 1;
this.txtUserName.Text = "admin";
this.txtUserName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmLoginServer_KeyDown);
//
// lblUser
//
this.lblUser.AutoSize = true;
this.lblUser.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblUser.Location = new System.Drawing.Point(117, 88);
this.lblUser.Name = "lblUser";
this.lblUser.Size = new System.Drawing.Size(47, 17);
this.lblUser.TabIndex = 0;
this.lblUser.Text = "用户名:";
//
// frmLoginServer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(491, 251);
this.Controls.Add(this.pnlCenter);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "frmLoginServer";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "登录";
this.Shown += new System.EventHandler(this.frmLoginServer_Shown);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmLoginServer_KeyDown);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.frmLoginServer_MouseDown);
this.pnlCenter.ResumeLayout(false);
this.pnlCenter.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Label lblTitle;
private System.Windows.Forms.Button Btn_Logout;
private System.Windows.Forms.Button Btn_Login;
private System.Windows.Forms.TextBox txtPwd;
private System.Windows.Forms.Label lblPwd;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Label lblUser;
}
}


+ 130
- 0
CNAS_BalanceClient/frmLoginServer.cs Ver arquivo

@@ -0,0 +1,130 @@
using CnasSynchronousCommon;
using CnasSynchronusClient;
using CnasSynchrousModel;
using log4net;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace CNAS_BalanceClient
{

public partial class frmLoginServer : Form
{
public static string strLoginName = "";
public static string strLoginPwd = "";
public static string strServerIP = "";
public static string strServerPort = "";
//Point mouseOff; //鼠标移动位置
//bool leftFlag; //标签是否为左键
public frmLoginServer()
{
InitializeComponent();

lblTitle.BackColor = Color.Transparent;
lblUser.BackColor = Color.Transparent;
lblPwd.BackColor = Color.Transparent;
}

private void Btn_Login_Click(object sender, EventArgs e)
{
Config();
}
private void Config()
{
//合法行判断
if (this.txtUserName.Text.Trim() == "" || this.txtPwd.Text.Trim() == "")
{
MessageBox.Show("用户名,密码不能为空。", "提示");
return;
}

//1.读取本地数据库配置信息
DataBaseInfo targetdataBase = new DataBaseInfo(); //cnas目标数据库
try
{
//加载CNAS数据库信息
targetdataBase = FileOperation.GetLocalPlatFormDB();

if (!CnasDataOperationFact.CnasDataOperation().TestConnect(targetdataBase))
{
MessageBox.Show("无法连接数据,请联系管理员。", "提示");
return;
}
}
catch (Exception ex)
{
AppLog.Error(ex.Message.ToString());
}
//2.传输输入信息到数据库中,查阅,并返回所需信息
DataTable dtLogin = CnasDataOperationFact.CnasDataOperation().GetLoginNameByPwd(targetdataBase, this.txtUserName.Text.Trim(), this.txtPwd.Text.Trim());
if (dtLogin != null && dtLogin.Rows.Count == 1)
{
GlobalCommonOperation.strLoginName = dtLogin.Rows[0]["username"].ToString();
GlobalCommonOperation.strUserName = this.txtUserName.Text.Trim();
AppLog.Info($"{this.txtUserName.Text.Trim()}登录成功");
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("用户名,密码登录失败,请重新输入。", "提示");
AppLog.Error($"{this.txtUserName.Text.Trim()}尝试登录失败");
return;
}
}
private void Btn_Logout_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.None;
this.Close();
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
private void frmLoginServer_MouseDown(object sender, MouseEventArgs e)
{
try
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
catch(Exception ex)
{
AppLog.Error(ex.Message.ToString());
}
}

private void frmLoginServer_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (!Btn_Login.Focused && !Btn_Logout.Focused)
{
FormKeyEventClass fke = new FormKeyEventClass();
fke.FormKeyEvent += new FormKeyEventClass.FormKey(Config);
fke.FormKeyEventRun(e);
}
}
catch(Exception ex)
{
AppLog.Error(ex.Message.ToString());
}
}

private void frmLoginServer_Shown(object sender, EventArgs e)
{
txtUserName.Select(txtUserName.Text.Length, 0);
}
}
}

+ 407
- 0
CNAS_BalanceClient/frmLoginServer.resx Ver arquivo

@@ -0,0 +1,407 @@
<?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="pnlCenter.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwg
JC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFVAfQDAREAAhEBAxEB/8QA
GwAAAwEBAQEBAAAAAAAAAAAAAQIDAAQFBgf/xAA8EAACAQMCBAMFBQcEAgMAAAAAAQIDERIEIQUxQVET
YXEiMkJSkQYUgaGxIzNDU3KC0RVikuFUwUTw8f/EABoBAQEBAQEBAQAAAAAAAAAAAAEAAgMEBQb/xAAq
EQEBAQEAAgICAgEDBQEBAAAAARECAxIhMUFRBBMyIkJhFFJxgZGhBf/aAAwDAQACEQMRAD8A69PhFr2U
forr85/Xx+nPxThlOS+80qas/eSXIzO79GePj9PIVGHyI17Vr+rj9GVGHyIva/tf1cfpSNCHyIPa/sf1
cfpSNCn8kQ9r+1/T4/0rGhT+SP0D2v7H9Pj/AEoqFPpCP0L2v7H9Pj/7S1NJT96NOPmrDO7+2L4fH+ix
oQ+RfQfasXw8fpRUYfKvoXtWf6uP0bwIfKi9qzfFx+h8GPyovasXx8/osqEWvdQ+1Yvj5/SMqMV8KNSu
d8fP6I6UflRaxeJ+i+FH5UWs+sDwo/KgGQMIroiXwpFJdEZpO6MKi2SuH0fhx1aFvhFOWVNJ8hRHBdgJ
HBdgOkcF2JrSOPkB0jiB0riga0riiJXEFoWI6FgI2BqU0TNKiRlqGxAs4+QojiQI4jqK4iiuIgMSQWFB
ZEBsSGyEGSXYkZJdhZ06S7EDKK7IkdRj2RA6jHshB1CPZEjKEPlQjTqnD5USOqUPlQIypU/kX0EmVGn8
kfoBMqNL+XH6ETqhS/lx+gNQVQo/yo/QNMN93o/yo/QNrT2sWmeux6pXVQqK2MleL2aZy6jTzOIcPenn
4lPelLk+wStSuNRIqKIJSMQSkYkFYxAKKJMUk6GPtR5GpWaCiTJ1EmaOBMVsPIdZsJOjdbDKxeXPOm0b
1xsTcRc7AcQZI4kAsSNGTQWFbGNaNnszH0XDqdO6b3RqXU43EUVoCRxIkcQOkcQJHEGitEStAStAS2Is
gsJkZaikTNaiqVzLQ4giuA6iOJIjiIK4mgRoUVoQFiTWEDYkZEDIQZEDogdCDogdCjokdEjokZEjpgTo
jDIGoZA0NwL3Iroz1Tp7LDqFndFYJXVTlGcHTqLKEuaZx6jWvL1vDpaaWUbypS5SDWpXNGBFSMASkYlo
UjEBVYxJinUdrW2Jmpzo4u65foOsgoiybEhg4EzYOBM4SdBSQysdc65KlFxfI6SuHXNiTiLnSuJMpuJI
pIU7PYMWuiNSFWOFVXXR9UYs/TUrg1eklRlfnB8pLkzUuquRxFEaA6RolpGga0jiB0jRHSNAdK0B0GiJ
bARQVqVSLMWNSqxM2NSqxVzFaguAaSSgOojga0EcBlCcomoE2jQLYk1hDWJCiBkIMiB0IOiB0IOiB0SO
iRkSOiJkROmBMmBFA0YGn1FTTOL5Fx5NfT64wkU49DvOnG8qxjfdDflj6dFNpxdOpFSg+aZy6jTg1fDH
RvVpXlS/OPqZ1qVyKBa0eMAZUjEhVYxJmnUSZoqJMklRtuuXYdAKIimxANiLOCokAlSUkWs3nXJW0rju
lsdJ04d+NyShZ2ZvXCwjgQTcSBWiTElqdVYuFSKlB80zNn6alc+p4e4xdSg3On26op1+Kc/Tz5RNAjiB
I4gSOJEjiB0jiB0riDWkaI6DQELATIzjUqsGZsblWiznY1Kslcw0zgSI4DqTlA1KEpwNyioSjZmoyWwg
LEmsIFCBIGRAyEHRA6FHRA6JHRAyImREyJHTAmQNDcGoNwafqut4M1dpXR8zx+fPiv0Xfi14lbQSg+R7
ePLK8nfixzeFKDPRz28/XC0Unz2Zvdc7MWpuUHbmjNi1HUcMjVTqaZWl1p/4OZnTzfCcW0001zTJrTKJ
M1RRJk6iTI4kBxIFlSvutvIdBbdCApEjYkGwLRg4X5kMc9bRqauuZudY5deOV59XTzpvdbHWda83XFiL
jsLCbiQI0SAitRqum7X2/QzZplGvpKWovKNoT7rk/UzLYXlVtPOjK0427PozcuhFxIkaBEcSOkcQOkcQ
aI4kdK0B0tgLWBo0WZsalWhIxY3K6IM5WNyrJXRloHAtRHA1KE5QNSsuepTOkrNRcTQK0QCwprCGIGRA
yEHRAyEHRI6IHQo6AiiRkRMmFJkDUNcGoJNP1Hhf2vo6iKp62O/zxW/4o+d5P4fU+eH2vF/Nl+O3tvTa
XX086E4TXkebeuL8vXnPc+Hlarg8otuKPTx/I/bh34XmVNFOm94nr48sryd+OwkYuOzR2nUrz9cqwVvd
ZVjTVaFLVK1VWn0muf8A2ZsU6efX0FXT7tZQ6TXL/oGvaVFQIGUSA4kGxEDiQBwUiRHFx5kBSJGSIDiS
FRJYEqMZqzSKVm8yuCvw57yp/Q68+T9vP34PzHn1KMoO0otM6SyvNebPtFxsII0SCxJWnNrZmbDKo1Gc
cZJNPozONa4a+gteVL/ixnX7TgnTcW01Z9jQTcSJXECRxI6RxA6RxA6RoGtCwEArUPGVjNjUq9OZzsbl
dVORysdJVkrow0DgMoTlA1KKjOndHSVmxyzhZnSVipuJoEaJNYQxASAoQZEDoQdEjoQZEjoEKImREyAm
uDUG4NQbk09OE3F7DK7PT0fFNRp5qVOtKEl1TLrjjv8AyjXPk64+ea+n0X2xqRShrqKqR+ePM8vk/g83
54uPX4/5/U+O5r3KOs4VxKK8KtFSfwy2Z5OvD5fH9x6+fP4fL8S/Ja/Br7w3XkPHns+x3/Gl+nnVeHVa
T91nq488rxeTwdRLw5R5o7TqV5uubFINrl9GX2x8xGroKNXeC8Kf5P8AwZM6cVXR1aL9uO3zLdFrWyo4
CmxENiSbEE2JArp9h1Baz3ECgR0iIpAjWJYnV0tOsrSihnVjPXjnX28zU8LnG7p+0ux258sv28nf8ez5
jzZ0nF2aaZ0efMTcRQNEDxl0YWHT3uZsOp1aEKsfaX4h9F51bSThvH2l+ZqVOVxEaRoiRxAkcQMpHEGt
I0B0AalYzWpTRlYzY1K6adQ59R0lddOZxsdJXQldGSVwGVYlKBuVmxz1aV0deaxY5JQszowm4iAaEFsS
EgIgUQMhB0SOiB0KMmBMmSEiZATIGoNwagg09THsZldRV0blC9OrKPU3KHTTrRvdNxfdDor1tHxvX6S3
hV5OPa9/yZjvw+Pv/KOnHn8nj/x6e5pvtapWjqtPCXmvZZ5uv4M/2V6+f/6PX+/nXoQ4jwnVrebpN/Ot
vqcb4PPx9fLrP5H8byffx/5V/wBNpVllp61Oov8AbK4f3dc/HUV/i89/PF1CfD69P4XY6c+aV5e/4nfP
4SwlC6aa8jp7SvP1x1yhU0VGrvjhLvH/AAWs+1jkq8Oqw3ilNf7ef0HW51K5XTcXZppiQxJBiSDEUzgm
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
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAABAnAAAQJwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAsAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA
ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAALAAAAAAAAAAAAAAAAAAAABQAAAJEAAADSAAAA0AAA
AM4AAADPAAAAzwAAAM8AAADPAAAAzwAAAM8AAADPAAAAzwAAAM8AAADPAAAAzwAAAM8AAADOAAAA0AAA
ANIAAACRAAAABQAAAAAAAAAAAAAAAgAAAEEAAABuAAAA4gAAALIAAABhAAAAYwAAAGMAAABjAAAAYwAA
AGMAAABjAAAAYwAAAGMAAABjAAAAYwAAAGEAAACyAAAA4gAAAG4AAABBAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAlgAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAC0AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwAAAOYAAAB7AAAAXAAA
AF4AAABdAAAAWwAAAF0AAABdAAAAWwAAAF0AAABeAAAAXAAAAHsAAADmAAAARwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAADSAAAA1AAAANMAAADiAAAA9wAAANgAAADYAAAA9wAA
AOIAAADTAAAA1AAAANIAAACAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAIAAAASAAAAFgAAABEAAABlAAAA2gAAACsAAAArAAAA2gAAAGUAAAARAAAAFgAAABIAAAACAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWAAAA1wAA
ABYAAAAWAAAA1wAAAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXAAAA1wAAABcAAAAXAAAA1wAAAFcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAEEAAABXAAAAVwAAAFcAAAA8AAAABgAA
AAAAAABXAAAA1gAAABQAAAAUAAAA1gAAAFcAAAAAAAAABgAAADwAAABXAAAAVwAAAFcAAABBAAAACQAA
AAAAAAABAAAAfQAAAOYAAADXAAAA1wAAANgAAADlAAAAbQAAAAAAAABWAAAA6QAAAIgAAACIAAAA6QAA
AFYAAAAAAAAAbQAAAOUAAADYAAAA1wAAANcAAADmAAAAfQAAAAEAAAASAAAAzAAAAH0AAAARAAAAFAAA
ABIAAACPAAAAwAAAAAQAAABVAAAA8wAAAMYAAADGAAAA8wAAAFUAAAAEAAAAwAAAAI8AAAASAAAAFAAA
ABEAAAB9AAAAzAAAABIAAAAVAAAA0AAAAKAAAABhAAAAZAAAAGEAAACsAAAAxAAAAAYAAABWAAAA2AAA
ABwAAAAcAAAA2AAAAFYAAAAGAAAAxAAAAKwAAABhAAAAZAAAAGEAAACgAAAA0AAAABUAAAALAAAAtwAA
AP0AAADUAAAAzgAAANcAAAD/AAAApwAAAAAAAABWAAAA3gAAAEMAAABDAAAA3gAAAFYAAAAAAAAApwAA
AP8AAADXAAAAzgAAANQAAAD9AAAAtwAAAAsAAAAAAAAASAAAAOgAAABnAAAACwAAAHgAAADkAAAAOQAA
AAAAAABVAAAA+AAAAOMAAADjAAAA+AAAAFUAAAAAAAAAOQAAAOQAAAB4AAAACwAAAGcAAADoAAAASAAA
AAAAAAAAAAAAAgAAAIwAAADNAAAASwAAANcAAAB5AAAAAAAAAAAAAABUAAAA3wAAAEkAAABJAAAA3wAA
AFQAAAAAAAAAAAAAAHgAAADXAAAASwAAAM0AAACMAAAAAgAAAAAAAAAAAAAAAAAAAEEAAADlAAAA7gAA
ANwAAABRAAAAPAAAADoAAACAAAAA1wAAABQAAAAUAAAA1wAAAIAAAAA6AAAAPAAAAFAAAADcAAAA7gAA
AOUAAABBAAAAAAAAAAAAAAAAAAAACQAAALUAAAD0AAAA6gAAAOUAAADeAAAA3wAAAN4AAADsAAAA2QAA
AB8AAAAfAAAA2QAAAOwAAADeAAAA3wAAAN4AAADlAAAA6gAAAPQAAAC1AAAACQAAAAAAAAAAAAAAAgAA
AKEAAADSAAAAQwAAACsAAAAsAAAALAAAACgAAAB0AAAA1QAAAIcAAACHAAAA1QAAAHQAAAAoAAAALAAA
ACwAAAArAAAAQwAAANIAAAChAAAAAgAAAAAAAAAAAAAAAAAAADIAAADQAAAAzAAAAKcAAACmAAAApgAA
AKQAAADGAAAA1wAAAEMAAABDAAAA1wAAAMYAAACkAAAApgAAAKYAAACnAAAAzAAAANAAAAAyAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAnAAAAewAAAJgAAACZAAAAmQAAAJcAAAC7AAAA3AAAABYAAAAWAAAA3AAA
ALsAAACXAAAAmQAAAJkAAACYAAAAewAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAtAAAA3wAAAJYAAACWAAAA3wAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAWAAA
AMIAAADCAAAAWAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAANAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAADAMAAAwDgAAcA4AAHAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEA4AAHAP8A
/wA=
</value>
</data>
</root>

BIN
CNAS_BalanceClient/scales_of_Balance_16px_1117673_easyicon.net.ico Ver arquivo

Antes Depois

+ 103
- 0
CNAS_DBSync.sln Ver arquivo

@@ -0,0 +1,103 @@

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}") = "CnasSynchronusDAL", "CnasSynchronusDAL\CnasSynchronusDAL.csproj", "{F4EC1B78-EFF4-4D04-AE79-631D220187AF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CnasSynchrousModel", "CnasSynchrousModel\CnasSynchrousModel.csproj", "{0C3243F5-729E-409C-B406-C6DE56E632E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CnasSynchronusIDAL", "CnasSynchronusIDAL\CnasSynchronusIDAL.csproj", "{284FBC6D-D437-4616-AC96-582974FF390F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CnasSynchronousCommon", "CnasSynchronousCommon\CnasSynchronousCommon.csproj", "{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CnasLocalIDAL", "CnasLocalIDAL\CnasLocalIDAL.csproj", "{49F0F118-144F-4DC5-A980-E845572295EA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncLocalDAL", "SyncLocalDAL\SyncLocalDAL.csproj", "{E1052176-831E-4070-9356-CA0F8108DBDF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CnasSynchronusBLL", "CnasSynchronusClient\CnasSynchronusBLL.csproj", "{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNASBalanceDBManage", "CNASBalanceDBManage\CNASBalanceDBManage.csproj", "{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNAS_SyncService", "CNAS_SyncService\CNAS_SyncService.csproj", "{6FA284AB-8D0D-422C-ABA2-6AAC31B12017}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNAS_RunSync", "CNAS_RunSync\CNAS_RunSync.csproj", "{2F1E5C7F-BEE0-4C40-B928-917AD9A4CF46}"
EndProject
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_BalanceClient", "CNAS_BalanceClient\CNAS_BalanceClient.csproj", "{00BEA43E-D03E-4BF7-9474-F36BD7811F74}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WF-ChangeGUID", "WF-ChangeGUID\WF-ChangeGUID.csproj", "{E20B8662-89F1-42D9-8DC5-0E30E1AADCD6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CNAS_SerialPort", "CNAS_SerialPort\CNAS_SerialPort.csproj", "{ABB56058-B6FD-4747-A4E9-9C9361D6D993}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F4EC1B78-EFF4-4D04-AE79-631D220187AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F4EC1B78-EFF4-4D04-AE79-631D220187AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F4EC1B78-EFF4-4D04-AE79-631D220187AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F4EC1B78-EFF4-4D04-AE79-631D220187AF}.Release|Any CPU.Build.0 = Release|Any CPU
{0C3243F5-729E-409C-B406-C6DE56E632E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C3243F5-729E-409C-B406-C6DE56E632E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C3243F5-729E-409C-B406-C6DE56E632E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C3243F5-729E-409C-B406-C6DE56E632E0}.Release|Any CPU.Build.0 = Release|Any CPU
{284FBC6D-D437-4616-AC96-582974FF390F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{284FBC6D-D437-4616-AC96-582974FF390F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{284FBC6D-D437-4616-AC96-582974FF390F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{284FBC6D-D437-4616-AC96-582974FF390F}.Release|Any CPU.Build.0 = Release|Any CPU
{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}.Release|Any CPU.Build.0 = Release|Any CPU
{49F0F118-144F-4DC5-A980-E845572295EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{49F0F118-144F-4DC5-A980-E845572295EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49F0F118-144F-4DC5-A980-E845572295EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49F0F118-144F-4DC5-A980-E845572295EA}.Release|Any CPU.Build.0 = Release|Any CPU
{E1052176-831E-4070-9356-CA0F8108DBDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E1052176-831E-4070-9356-CA0F8108DBDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E1052176-831E-4070-9356-CA0F8108DBDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E1052176-831E-4070-9356-CA0F8108DBDF}.Release|Any CPU.Build.0 = Release|Any CPU
{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}.Release|Any CPU.Build.0 = Release|Any CPU
{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4D6A680-8B6B-4ECB-96D0-264954DABFC1}.Release|Any CPU.Build.0 = Release|Any CPU
{6FA284AB-8D0D-422C-ABA2-6AAC31B12017}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FA284AB-8D0D-422C-ABA2-6AAC31B12017}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FA284AB-8D0D-422C-ABA2-6AAC31B12017}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FA284AB-8D0D-422C-ABA2-6AAC31B12017}.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
{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
{00BEA43E-D03E-4BF7-9474-F36BD7811F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00BEA43E-D03E-4BF7-9474-F36BD7811F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00BEA43E-D03E-4BF7-9474-F36BD7811F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00BEA43E-D03E-4BF7-9474-F36BD7811F74}.Release|Any CPU.Build.0 = Release|Any CPU
{E20B8662-89F1-42D9-8DC5-0E30E1AADCD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E20B8662-89F1-42D9-8DC5-0E30E1AADCD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E20B8662-89F1-42D9-8DC5-0E30E1AADCD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E20B8662-89F1-42D9-8DC5-0E30E1AADCD6}.Release|Any CPU.Build.0 = Release|Any CPU
{ABB56058-B6FD-4747-A4E9-9C9361D6D993}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABB56058-B6FD-4747-A4E9-9C9361D6D993}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABB56058-B6FD-4747-A4E9-9C9361D6D993}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABB56058-B6FD-4747-A4E9-9C9361D6D993}.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

+ 75
- 0
CNAS_DBSync/App.config Ver arquivo

@@ -0,0 +1,75 @@
<?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"/>
<add name="CNAS_DBSync.Properties.Settings.ConnectionString" connectionString="Data Source=E:\JXD\CNASClient\CNAS_DBSync\dll\database.db" providerName="Devart.Data.SQLite"/>
</connectionStrings>
<appSettings>
<add key="TargetDBType" value="Mysql"/>
<add key="InitalOperationPwd" value="123456"/>
<add key="GetMacMethod" value="1"/>
<add key="StartGeneralVersion" value="1"/>
<add key="StartWebApiUrl" value="1"/>
<add key="WebApiUrl" value="http://localhost:60101/api"/>
</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>
<logger name="Log">
<level value="INFO"/>
<appender-ref ref="RollingLog"/>
</logger>
<logger name="Err">
<level value="ERROR"/>
<appender-ref ref="RollingErr"/>
</logger>
<appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
<file value="Log\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 操作信息:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>
<appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
<file value="ErrorLog\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="记录时间:%d 线程ID:[%thread]- 错误描述:%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

+ 251
- 0
CNAS_DBSync/CNAS_DBSync.csproj Ver arquivo

@@ -0,0 +1,251 @@
<?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.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<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>
<Prefer32Bit>false</Prefer32Bit>
</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>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>drum_set_16px_1218345_easyicon.net.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<NoWin32Manifest>true</NoWin32Manifest>
</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="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.ServiceProcess" />
<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="SourceSettingTextBoxDecrible.cs" />
<Compile Include="frmAddSubtract.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmAddSubtract.Designer.cs">
<DependentUpon>frmAddSubtract.cs</DependentUpon>
</Compile>
<Compile Include="frmCNASValue.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmCNASValue.Designer.cs">
<DependentUpon>frmCNASValue.cs</DependentUpon>
</Compile>
<Compile Include="frmConditionParam.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmConditionParam.Designer.cs">
<DependentUpon>frmConditionParam.cs</DependentUpon>
</Compile>
<Compile Include="frmDatabaseParams.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmDatabaseParams.Designer.cs">
<DependentUpon>frmDatabaseParams.cs</DependentUpon>
</Compile>
<Compile Include="frmIfThenParams.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmIfThenParams.Designer.cs">
<DependentUpon>frmIfThenParams.cs</DependentUpon>
</Compile>
<Compile Include="frmInstrumentCode.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmInstrumentCode.Designer.cs">
<DependentUpon>frmInstrumentCode.cs</DependentUpon>
</Compile>
<Compile Include="frmOperationPwd.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmOperationPwd.Designer.cs">
<DependentUpon>frmOperationPwd.cs</DependentUpon>
</Compile>
<Compile Include="frmSelectInstruItem.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSelectInstruItem.Designer.cs">
<DependentUpon>frmSelectInstruItem.cs</DependentUpon>
</Compile>
<Compile Include="frmServiceConfig.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmServiceConfig.Designer.cs">
<DependentUpon>frmServiceConfig.cs</DependentUpon>
</Compile>
<Compile Include="frmSourceFilter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSourceFilter.Designer.cs">
<DependentUpon>frmSourceFilter.cs</DependentUpon>
</Compile>
<Compile Include="frmSourceSetting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSourceSetting.Designer.cs">
<DependentUpon>frmSourceSetting.cs</DependentUpon>
</Compile>
<Compile Include="frmSplitParam.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSplitParam.Designer.cs">
<DependentUpon>frmSplitParam.cs</DependentUpon>
</Compile>
<Compile Include="frmStartEndSubstring.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmStartEndSubstring.Designer.cs">
<DependentUpon>frmStartEndSubstring.cs</DependentUpon>
</Compile>
<Compile Include="frmSyncParams.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSyncParams.Designer.cs">
<DependentUpon>frmSyncParams.cs</DependentUpon>
</Compile>
<Compile Include="frmSystemSetting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSystemSetting.Designer.cs">
<DependentUpon>frmSystemSetting.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="frmAddSubtract.resx">
<DependentUpon>frmAddSubtract.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmCNASValue.resx">
<DependentUpon>frmCNASValue.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmConditionParam.resx">
<DependentUpon>frmConditionParam.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmDatabaseParams.resx">
<DependentUpon>frmDatabaseParams.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmIfThenParams.resx">
<DependentUpon>frmIfThenParams.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmInstrumentCode.resx">
<DependentUpon>frmInstrumentCode.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmOperationPwd.resx">
<DependentUpon>frmOperationPwd.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSelectInstruItem.resx">
<DependentUpon>frmSelectInstruItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmServiceConfig.resx">
<DependentUpon>frmServiceConfig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSourceFilter.resx">
<DependentUpon>frmSourceFilter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSourceSetting.resx">
<DependentUpon>frmSourceSetting.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSplitParam.resx">
<DependentUpon>frmSplitParam.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmStartEndSubstring.resx">
<DependentUpon>frmStartEndSubstring.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSyncParams.resx">
<DependentUpon>frmSyncParams.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSystemSetting.resx">
<DependentUpon>frmSystemSetting.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>
<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>
<ProjectReference Include="..\CnasSynchronousCommon\CnasSynchronousCommon.csproj">
<Project>{8e0e5f2e-2ba2-4952-9f31-34c072cd86b3}</Project>
<Name>CnasSynchronousCommon</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchronusClient\CnasSynchronusBLL.csproj">
<Project>{cb9b6d92-3cc4-46c6-92e8-a6fd0ad48041}</Project>
<Name>CnasSynchronusClient</Name>
</ProjectReference>
<ProjectReference Include="..\CnasSynchrousModel\CnasSynchrousModel.csproj">
<Project>{0c3243f5-729e-409c-b406-c6de56e632e0}</Project>
<Name>CnasSynchrousModel</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="drum_set_16px_1218345_easyicon.net.ico" />
</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>

+ 76
- 0
CNAS_DBSync/Program.cs Ver arquivo

@@ -0,0 +1,76 @@
using CnasSynchronousCommon;
using CnasSynchronusClient;
using CnasSynchrousModel;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Windows.Forms;

namespace CNAS_DBSync
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string strMsg = "";
/*CheckAvailability(ref strMsg);*/
if (strMsg == "")
{
if (new frmOperationPwd().ShowDialog() == DialogResult.OK)
Application.Run(new frmSyncParams());
}
else
MessageBox.Show(strMsg);
}

///检查当前电脑是否可以启动程序
public static void CheckAvailability(ref string strErrorMsg)
{
//0.读取本地系统配置文件
SystemFormatConfig systemFormat = FileOperation.GetSystemFormatConfigData();
GlobalCommonOperation.strStartGeneralVersion = systemFormat.StartGeneralVersion;
GlobalCommonOperation.strStartWebApi = systemFormat.StartWebApi;
GlobalCommonOperation.strWebApiUrl = systemFormat.WebApiUrl;
GlobalCommonOperation.strTargetDbType = systemFormat.TargetDBType;
if (GlobalCommonOperation.strStartGeneralVersion == "1") //此时启动的时通用版本,不需检查Mac地址
{
return;
}

//1.读取本地CNAS数据库配置信息
DataBaseInfo Cnasdb = null;
if (GlobalCommonOperation.strStartWebApi != "1")
Cnasdb = FileOperation.GetLocalCnasDB();
else
Cnasdb = new DataBaseInfo()
{
DataBaseCode = "cnas"
};
if (!CnasDataOperationFact.CnasDataOperation().TestConnect(Cnasdb))
{
strErrorMsg = "无法正常连接CNAS库,请先配置数据库连接。";
return;
}
//2.获取本机MAC地址
string strLocalMac = ComputeMessage.getLocalMac(ref strErrorMsg);
if (strErrorMsg != "")
{
return;
}
//3 验证是否存在于CNAS数据库相应表中
bool bIfChecked = CnasDataOperationFact.CnasDataOperation().CheckMacMessage(Cnasdb, strLocalMac);
if (!bIfChecked)
{
strErrorMsg = $"当前电脑[{strLocalMac}]没有使用权限,请联系管理员。";
return;
}
}
}
}

+ 37
- 0
CNAS_DBSync/Properties/AssemblyInfo.cs Ver arquivo

@@ -0,0 +1,37 @@
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")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

+ 63
- 0
CNAS_DBSync/Properties/Resources.Designer.cs Ver arquivo

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNAS_DBSync.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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_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;
}
}
}
}

+ 117
- 0
CNAS_DBSync/Properties/Resources.resx Ver arquivo

@@ -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>

+ 36
- 0
CNAS_DBSync/Properties/Settings.Designer.cs Ver arquivo

@@ -0,0 +1,36 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace CNAS_DBSync.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.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;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=E:\\JXD\\CNASClient\\CNAS_DBSync\\dll\\database.db")]
public string ConnectionString {
get {
return ((string)(this["ConnectionString"]));
}
}
}
}

+ 14
- 0
CNAS_DBSync/Properties/Settings.settings Ver arquivo

@@ -0,0 +1,14 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="CNAS_DBSync.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="ConnectionString" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
&lt;ConnectionString&gt;Data Source=E:\JXD\CNASClient\CNAS_DBSync\dll\database.db&lt;/ConnectionString&gt;
&lt;ProviderName&gt;Devart.Data.SQLite&lt;/ProviderName&gt;
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=E:\JXD\CNASClient\CNAS_DBSync\dll\database.db</Value>
</Setting>
</Settings>
</SettingsFile>

+ 63
- 0
CNAS_DBSync/SourceSettingTextBoxDecrible.cs Ver arquivo

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CNAS_DBSync
{
/// <summary>
/// 来源设置界面中提示语言类
/// </summary>
public class SourceSettingTextBoxDecrible
{
/*Excel配置界面中参数*/
public static string txtExcelSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtExcelFileNameFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtExcelAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtExcelAutoSql_Decrible = "请输入自定义查询的sql语句";

/*Access配置界面中参数*/
public static string txtAccessSuffix_Decrible = "请输入文件后缀名";
public static string txtAccessSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtAccessFileName_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtAccessAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtAccessAutoSql_Decrible = "请输入自定义查询的sql语句";

/*FoxPro配置界面中参数*/
public static string txtFoxProSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtFoxProFileNameFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtFoxProAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtFoxProAutoSql_Decrible = "请输入自定义查询的sql语句";
public static string txtFoxProSpecialMethodName_Decrible = "请输入特殊方法的名称(比如comcat)";
public static string txtFoxProSpecialMethod_Decrible = "请输入特殊方法的参数列,用英文逗号隔开";

/*Sqlite配置界面中参数*/
public static string txtSqliteSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtSqliteFileNameFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtSqliteAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtSqliteAutoSql_Decrible = "请输入自定义查询的sql语句";

/*Sqlserver配置界面中参数*/
public static string txtSqlServerSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtSqlServerConnection_Decrible = "请输入连接字符串";
public static string txtSqlServerAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtSqlServerAutoSql_Decrible = "请输入自定义查询的sql语句";

/*MySql配置界面中参数*/
public static string txtMySqlSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtMySqlAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtMySqlAutoSql_Decrible = "请输入自定义查询的sql语句";

/*Oracle配置界面中参数*/
public static string txtOracleSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtOracleAutoSqlName_Decrible = "请定义一个自定义查询的名称或描述";
public static string txtOracleAutoSql_Decrible = "请输入自定义查询的sql语句";

/*TXT配置界面中参数*/
public static string txtNormalFileSpecialDateColumnFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtNormalFileNameFormat_Decrible = "请输入类似于yyyyMMdd样式内容";
public static string txtNormalFileReadDataMode_Decrible = "请输入读取规则选型";
public static string txtNormalFileSuffix_Decrible = "请输入文件后缀名";
public static string txtNormalFileReadSplitMode_Decrible = "请输入文件分割每个数据行的依据。0代表“ ”,1代表“\t”,2代表0和1的集合";
}
}

BIN
CNAS_DBSync/dll/CNAS_DBSync.exe Ver arquivo


+ 58
- 0
CNAS_DBSync/dll/CNAS_DBSync.exe.config Ver arquivo

@@ -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="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
<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>

+ 195
- 0
CNAS_DBSync/dll/Data/SyncInStrumentData.xml Ver arquivo

@@ -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>

BIN
CNAS_DBSync/dll/Document/AshMeltingPoint.xls Ver arquivo


BIN
CNAS_DBSync/dll/Document/IndustrialAnalyzer.xls Ver arquivo


BIN
CNAS_DBSync/dll/Document/InfraredSulfurMeter.xls Ver arquivo


BIN
CNAS_DBSync/dll/Document/MoistureMeter.xls Ver arquivo


BIN
CNAS_DBSync/dll/Document/SulphurMeter.xls Ver arquivo


BIN
CNAS_DBSync/dll/System.Data.SQLite.EF6.dll Ver arquivo


BIN
CNAS_DBSync/dll/System.Data.SQLite.Linq.dll Ver arquivo


BIN
CNAS_DBSync/dll/System.Data.SQLite.dll Ver arquivo


+ 22
- 0
CNAS_DBSync/dll/System.Data.SQLite.dll.config Ver arquivo

@@ -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>

+ 21120
- 0
CNAS_DBSync/dll/System.Data.SQLite.xml
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


BIN
CNAS_DBSync/dll/log4net.dll Ver arquivo


+ 32464
- 0
CNAS_DBSync/dll/log4net.xml
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


BIN
CNAS_DBSync/drum_set_16px_1218345_easyicon.net.ico Ver arquivo

Antes Depois

+ 192
- 0
CNAS_DBSync/frmAddSubtract.Designer.cs Ver arquivo

@@ -0,0 +1,192 @@
namespace CNAS_DBSync
{
partial class frmAddSubtract
{
/// <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.btnOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.cbxParams2 = new System.Windows.Forms.ComboBox();
this.btnSelect3 = new System.Windows.Forms.Button();
this.btnSelect1 = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.txtPrama3 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.txtPrama1 = new System.Windows.Forms.TextBox();
this.pnlAll.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.btnOK);
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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlAll.Name = "pnlAll";
this.pnlAll.Size = new System.Drawing.Size(401, 162);
this.pnlAll.TabIndex = 1;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(306, 127);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// groupBox1
//
this.groupBox1.BackColor = System.Drawing.SystemColors.Control;
this.groupBox1.Controls.Add(this.cbxParams2);
this.groupBox1.Controls.Add(this.btnSelect3);
this.groupBox1.Controls.Add(this.btnSelect1);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.txtPrama3);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.txtPrama1);
this.groupBox1.Location = new System.Drawing.Point(12, 11);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(381, 110);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "参数";
//
// cbxParams2
//
this.cbxParams2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbxParams2.FormattingEnabled = true;
this.cbxParams2.Items.AddRange(new object[] {
"数值相加",
"数值相减"});
this.cbxParams2.Location = new System.Drawing.Point(90, 50);
this.cbxParams2.Name = "cbxParams2";
this.cbxParams2.Size = new System.Drawing.Size(188, 20);
this.cbxParams2.TabIndex = 9;
//
// btnSelect3
//
this.btnSelect3.Location = new System.Drawing.Point(284, 79);
this.btnSelect3.Name = "btnSelect3";
this.btnSelect3.Size = new System.Drawing.Size(66, 23);
this.btnSelect3.TabIndex = 8;
this.btnSelect3.Text = "选择";
this.btnSelect3.UseVisualStyleBackColor = true;
this.btnSelect3.Click += new System.EventHandler(this.btnSelect3_Click);
//
// btnSelect1
//
this.btnSelect1.Location = new System.Drawing.Point(284, 21);
this.btnSelect1.Name = "btnSelect1";
this.btnSelect1.Size = new System.Drawing.Size(66, 23);
this.btnSelect1.TabIndex = 6;
this.btnSelect1.Text = "选择";
this.btnSelect1.UseVisualStyleBackColor = true;
this.btnSelect1.Click += new System.EventHandler(this.btnSelect1_Click);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(33, 83);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(47, 12);
this.label3.TabIndex = 5;
this.label3.Text = "参数3:";
//
// txtPrama3
//
this.txtPrama3.Location = new System.Drawing.Point(90, 79);
this.txtPrama3.Name = "txtPrama3";
this.txtPrama3.Size = new System.Drawing.Size(188, 21);
this.txtPrama3.TabIndex = 4;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(33, 53);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(47, 12);
this.label2.TabIndex = 3;
this.label2.Text = "参数2:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(33, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(47, 12);
this.label1.TabIndex = 1;
this.label1.Text = "参数1:";
//
// txtPrama1
//
this.txtPrama1.Location = new System.Drawing.Point(90, 21);
this.txtPrama1.Name = "txtPrama1";
this.txtPrama1.Size = new System.Drawing.Size(188, 21);
this.txtPrama1.TabIndex = 0;
//
// frmAddSubtract
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(401, 162);
this.Controls.Add(this.pnlAll);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmAddSubtract";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "添加参数(加/减)";
this.Load += new System.EventHandler(this.frmAddSubtract_Load);
this.pnlAll.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.ComboBox cbxParams2;
private System.Windows.Forms.Button btnSelect3;
private System.Windows.Forms.Button btnSelect1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtPrama3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtPrama1;
}
}

+ 89
- 0
CNAS_DBSync/frmAddSubtract.cs Ver arquivo

@@ -0,0 +1,89 @@
using CnasSynchrousModel;
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 partial class frmAddSubtract : Form
{
public SyncInstrumentItemInfo syncInstrument { get; set; }

public CnasConditionMapValue conditionvalue { get; set; }

public frmAddSubtract(SyncInstrumentItemInfo syncInstrument, CnasConditionMapValue conditionvalue)
{
InitializeComponent();

this.syncInstrument = syncInstrument;
this.conditionvalue = conditionvalue;
}

private void frmAddSubtract_Load(object sender, EventArgs e)
{
if (conditionvalue == null) return;

string strValue = "";
if (conditionvalue.Value != null)
strValue = conditionvalue.Value.ToString();

if (strValue != "")
{
string[] strValues = strValue.Split(new string[] { "{", "}" }, StringSplitOptions.RemoveEmptyEntries);
if (strValues.Length == 3)
{
txtPrama1.Text = "{" + strValues[0] +"}";
cbxParams2.Text = strValues[1] == "Add" ?"数值相加": "数值相减";
txtPrama3.Text = "{" + strValues[2]+ "}";
}
else
{
conditionvalue.Condition = new MapCondition();
conditionvalue.Value = "";
}
}
}


private void btnSelect1_Click(object sender, EventArgs e)
{
frmSelectInstruItem frm = new frmSelectInstruItem(syncInstrument);
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.strSelectedColumn != "")
txtPrama1.Text = "{[" + frm.strSelectedColumn + "]}";
}
}

private void btnSelect3_Click(object sender, EventArgs e)
{
frmSelectInstruItem frm = new frmSelectInstruItem(syncInstrument);
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.strSelectedColumn != "")
txtPrama3.Text = "{[" + frm.strSelectedColumn + "]}";
}
}

private void btnOK_Click(object sender, EventArgs e)
{
if (this.txtPrama1.Text.Trim() == "" && this.cbxParams2.Text.Trim() == "" && this.txtPrama3.Text.Trim() == "")
return;
conditionvalue.Value = this.txtPrama1.Text;
if (this.cbxParams2.Text != "")
conditionvalue.Value += this.cbxParams2.Text=="数值相加"?"{Add}":"{Subtract}";
if (this.txtPrama3.Text != "")
conditionvalue.Value += this.txtPrama3.Text;

this.DialogResult = DialogResult.OK;
this.Close();
}

}
}

+ 120
- 0
CNAS_DBSync/frmAddSubtract.resx Ver arquivo

@@ -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>

+ 256
- 0
CNAS_DBSync/frmCNASValue.Designer.cs Ver arquivo

@@ -0,0 +1,256 @@
namespace CNAS_DBSync
{
partial class frmCNASValue
{
/// <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(frmCNASValue));
this.pnlLeft = new System.Windows.Forms.Panel();
this.pnlTop = new System.Windows.Forms.Panel();
this.pnlBottom = new System.Windows.Forms.Panel();
this.pnlRight = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.dgvCnas = new System.Windows.Forms.DataGridView();
this.pnlCenterBottom = new System.Windows.Forms.Panel();
this.btnDelete = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.TableName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.TableColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.DataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.condition = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlCenter.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).BeginInit();
this.pnlCenterBottom.SuspendLayout();
this.SuspendLayout();
//
// pnlLeft
//
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlLeft.Location = new System.Drawing.Point(0, 0);
this.pnlLeft.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlLeft.Name = "pnlLeft";
this.pnlLeft.Size = new System.Drawing.Size(10, 403);
this.pnlLeft.TabIndex = 0;
//
// pnlTop
//
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlTop.Location = new System.Drawing.Point(10, 0);
this.pnlTop.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlTop.Name = "pnlTop";
this.pnlTop.Size = new System.Drawing.Size(512, 10);
this.pnlTop.TabIndex = 1;
//
// pnlBottom
//
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(10, 393);
this.pnlBottom.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(512, 10);
this.pnlBottom.TabIndex = 1;
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(512, 10);
this.pnlRight.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(10, 383);
this.pnlRight.TabIndex = 1;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.groupBox1);
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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(502, 383);
this.pnlCenter.TabIndex = 2;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.dgvCnas);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox1.Location = new System.Drawing.Point(0, 0);
this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBox1.Size = new System.Drawing.Size(502, 344);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "CNAS列";
//
// dgvCnas
//
this.dgvCnas.AllowUserToAddRows = false;
this.dgvCnas.BackgroundColor = System.Drawing.Color.White;
this.dgvCnas.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvCnas.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.TableName,
this.TableColumn,
this.DataType,
this.condition,
this.Value});
this.dgvCnas.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvCnas.Location = new System.Drawing.Point(3, 20);
this.dgvCnas.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.dgvCnas.Name = "dgvCnas";
this.dgvCnas.RowTemplate.Height = 23;
this.dgvCnas.Size = new System.Drawing.Size(496, 320);
this.dgvCnas.TabIndex = 0;
this.dgvCnas.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellClick);
this.dgvCnas.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellDoubleClick);
this.dgvCnas.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellEndEdit);
this.dgvCnas.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCnas_CellValueChanged);
this.dgvCnas.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvCnas_RowPostPaint);
//
// pnlCenterBottom
//
this.pnlCenterBottom.Controls.Add(this.btnDelete);
this.pnlCenterBottom.Controls.Add(this.btnOK);
this.pnlCenterBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlCenterBottom.Location = new System.Drawing.Point(0, 344);
this.pnlCenterBottom.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlCenterBottom.Name = "pnlCenterBottom";
this.pnlCenterBottom.Size = new System.Drawing.Size(502, 39);
this.pnlCenterBottom.TabIndex = 0;
//
// btnDelete
//
this.btnDelete.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnDelete.Location = new System.Drawing.Point(332, 8);
this.btnDelete.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnDelete.Name = "btnDelete";
this.btnDelete.Size = new System.Drawing.Size(71, 25);
this.btnDelete.TabIndex = 1;
this.btnDelete.Text = "全部清除";
this.btnDelete.UseVisualStyleBackColor = true;
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// btnOK
//
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnOK.Location = new System.Drawing.Point(409, 4);
this.btnOK.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 0;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// TableName
//
this.TableName.DataPropertyName = "CnasTableName";
this.TableName.HeaderText = "表名";
this.TableName.Name = "TableName";
this.TableName.Visible = false;
this.TableName.Width = 120;
//
// TableColumn
//
this.TableColumn.DataPropertyName = "CnasFieldName";
this.TableColumn.HeaderText = "列名";
this.TableColumn.Name = "TableColumn";
this.TableColumn.ReadOnly = true;
this.TableColumn.Width = 150;
//
// DataType
//
this.DataType.DataPropertyName = "CnasDataType";
this.DataType.HeaderText = "类型";
this.DataType.Name = "DataType";
this.DataType.ReadOnly = true;
this.DataType.Visible = false;
this.DataType.Width = 120;
//
// condition
//
this.condition.HeaderText = "条件";
this.condition.Name = "condition";
this.condition.ReadOnly = true;
this.condition.Resizable = System.Windows.Forms.DataGridViewTriState.True;
//
// Value
//
this.Value.HeaderText = "值";
this.Value.Name = "Value";
this.Value.Width = 150;
//
// frmCNASValue
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(522, 403);
this.Controls.Add(this.pnlCenter);
this.Controls.Add(this.pnlRight);
this.Controls.Add(this.pnlBottom);
this.Controls.Add(this.pnlTop);
this.Controls.Add(this.pnlLeft);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.Name = "frmCNASValue";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "CNAS条件映射";
this.Load += new System.EventHandler(this.frmCNASValue_Load);
this.pnlCenter.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvCnas)).EndInit();
this.pnlCenterBottom.ResumeLayout(false);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.DataGridView dgvCnas;
private System.Windows.Forms.Panel pnlCenterBottom;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.DataGridViewTextBoxColumn TableName;
private System.Windows.Forms.DataGridViewTextBoxColumn TableColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn DataType;
private System.Windows.Forms.DataGridViewTextBoxColumn condition;
private System.Windows.Forms.DataGridViewTextBoxColumn Value;
}
}

+ 546
- 0
CNAS_DBSync/frmCNASValue.cs Ver arquivo

@@ -0,0 +1,546 @@
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;
using CnasSynchronusClient;
using CnasSynchrousModel;

namespace CNAS_DBSync
{
public partial class frmCNASValue : Form
{
public SyncInstrumentItemInfo syncInstrument;
private ComboBox cbxConditionValue;
private List<string> lstConditionValueType = new List<string>() { "等于", "连接", "若...则...", "截取", "除以", "乘以", "小数位数","数值相加(减)","截断开头(结尾)" };

public frmCNASValue(SyncInstrumentItemInfo syncInstrument)
{
InitializeComponent();

this.syncInstrument = syncInstrument;
}

private void frmCNASValue_Load(object sender, EventArgs e)
{
if (syncInstrument == null || syncInstrument.LstSyncPramas == null|| syncInstrument.LstSyncPramas.Count==0)
{
MessageBox.Show("请先指定至少一个映射字段。");
return;
}
//初始化ComBobox
InnitalComboBox();

//加载数据
LoadShowData();
}

private void InnitalComboBox()
{
cbxConditionValue = new ComboBox();
cbxConditionValue.SelectedIndexChanged += new EventHandler(cbxConditionValue_SelectedIndexChanged);
cbxConditionValue.SelectionChangeCommitted += new EventHandler(cbxConditionValue_SelectionChangedCommitted);

cbxConditionValue.Visible = false;

cbxConditionValue.DataSource = lstConditionValueType;
}

private void cbxConditionValue_SelectionChangedCommitted(object sender, EventArgs e)
{
cbxConditionValue.Visible = false;
}

private void cbxConditionValue_SelectedIndexChanged(object sender, EventArgs e)
{
//当前选中单元格的值将随之发生更改
if (dgvCnas.CurrentCell == null) return;
dgvCnas.Rows[dgvCnas.CurrentCell.RowIndex].Cells["condition"].Value = cbxConditionValue.Text;
}

private void LoadShowData()
{
//1.根据映射表中的表名,获取该表所有字段,全部显示
string strTableName = syncInstrument.LstSyncPramas[0].TargetTable;
DataTable dtTableStruct = CnasDataOperationFact.CnasDataOperation().GetCNASTablesStruct(strTableName, syncInstrument.SyncTargetDBInfo);
if (dtTableStruct != null)
{
DataTable dtCnasShow = new DataTable();
dtCnasShow.Columns.Add("CnasTableName");
dtCnasShow.Columns.Add("CnasFieldName");
dtCnasShow.Columns.Add("CnasDataType");
foreach (DataColumn dc in dtTableStruct.Columns)
{
if (dc.ColumnName.ToUpper() == "ID") continue;
dtCnasShow.Rows.Add(new object[] { strTableName,dc.ColumnName, dc.DataType });
}

dgvCnas.DataSource = dtCnasShow;
}
//2.根据已存储数据,匹配后填充到datagridview中
if (syncInstrument.lstFixedValue == null)
syncInstrument.lstFixedValue = new List<CnasConditionMapValue>();
if (syncInstrument.lstFixedValue.Count == 0) return;
foreach (DataGridViewRow dgvRow in dgvCnas.Rows)
{
string strCurrentTable = dgvRow.Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvRow.Cells["TableColumn"].Value.ToString();

if (strCurrentTable == "" || strCurrentColumn == "") continue;
var query=syncInstrument.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count == 1)
{
dgvRow.Cells["Value"].Value = query[0].Value;
dgvRow.Cells["Condition"].Value = GiveShowByCondition(query[0]);
}
}
}

private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}

private void dgvCnas_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1) //此时是“值”列
{
//如果没有指定条件,无法存储结果
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value == null) return;

//当前列名
string strCurrentTable = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString();
string strCurrentType = dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value.ToString();
string strCurrentCondition= dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString();

if (dgvCnas.CurrentCell.Value == null)
{
syncInstrument.lstFixedValue.RemoveAll(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn);
return;
}
string strInputValue = dgvCnas.CurrentCell.Value.ToString();

//检查合法性
if (strCurrentColumn == "ID")
{
MessageBox.Show("该列不能指定固定值。");
return;
}
bool bIfSuccess = true;
switch (strCurrentType)
{
case "System.Decimal":
decimal defaultdecimal = 0;
if (!decimal.TryParse(strInputValue, out defaultdecimal))
bIfSuccess = false;
break;
case "System.Int":
int defaultint = 0;
if (!int.TryParse(strInputValue, out defaultint))
bIfSuccess = false;
break;
case "System.String":
default:
break;
}
if (!bIfSuccess)
{
MessageBox.Show("输入格式不正确,请重新输入。");
return;
}

if (GetBytesOfString(strInputValue) > 20)
{
MessageBox.Show("输入内容超出限制,请重新输入。");
dgvCnas.CurrentCell.Value = "";
return;
}

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
GiveConditionByShow(query[0],strCurrentCondition);
//query[0].Condition = strCurrentCondition == "Sub" ? MapCondition.Sub : (strCurrentCondition == "IFThen" ? MapCondition.IFThen: MapCondition.Equal);
query[0].Value = strInputValue;
}
else
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue();
cnasFixed.TableName = strCurrentTable;
cnasFixed.ColumnName = strCurrentColumn;
cnasFixed.Value = strInputValue;
//cnasFixed.Condition= strCurrentCondition == "Sub" ? MapCondition.Sub : (strCurrentCondition == "IFThen" ? MapCondition.IFThen : MapCondition.Equal);
GiveConditionByShow(cnasFixed, strCurrentCondition);

syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}

public int GetBytesOfString(string Text)
{
int nByte = 0;
byte[] bytes = Encoding.Unicode.GetBytes(Text);
for (int i = 0; i < bytes.GetLength(0); i++)
{
// 偶数位置,如0、2、4等,为UCS2编码中两个字节的第一个字节
if (i % 2 == 0)
{
nByte++; // 在UCS2第一个字节时n加1
}
else
{
// 当UCS2编码的第二个字节大于0时,该UCS2字符为汉字,一个汉字算两个字节
if (bytes[i] > 0)
{
nByte++;
}
}
}

return nByte;
}

public void GiveConditionByShow(CnasConditionMapValue cnasFixed,string strCurrentCondition)
{
switch (strCurrentCondition)
{
case "连接":
cnasFixed.Condition = MapCondition.Sub;
break;
case "若...则...":
cnasFixed.Condition = MapCondition.IFThen;
break;
case "截取":
cnasFixed.Condition = MapCondition.SubString;
break;
case "除以":
cnasFixed.Condition = MapCondition.Divided;
break;
case "乘以":
cnasFixed.Condition = MapCondition.Multiplied;
break;
case "小数位数":
cnasFixed.Condition = MapCondition.DecimalDigits;
break;
case "等于":
cnasFixed.Condition = MapCondition.Equal;
break;
case "数值相加(减)":
cnasFixed.Condition = MapCondition.AddSubtract;
break;
case "截断开头(结尾)":
cnasFixed.Condition = MapCondition.SubstringStartEnd;
break;
default:
break;
}
}
public string GiveShowByCondition(CnasConditionMapValue cnasFixed)
{
string strCurrentCondition = "";
switch (cnasFixed.Condition)
{
case MapCondition.Equal:
strCurrentCondition = "等于";
break;
case MapCondition.Sub:
strCurrentCondition = "连接";
break;
case MapCondition.IFThen:
strCurrentCondition = "若...则...";
break;
case MapCondition.Divided:
strCurrentCondition = "除以";
break;
case MapCondition.Multiplied:
strCurrentCondition = "乘以";
break;
case MapCondition.SubString:
strCurrentCondition = "截取";
break;
case MapCondition.DecimalDigits:
strCurrentCondition = "小数位数";
break;
case MapCondition.AddSubtract:
strCurrentCondition = "数值相加(减)";
break;
case MapCondition.SubstringStartEnd:
strCurrentCondition = "截断开头(结尾)";
break;
}
return strCurrentCondition;
}

private void dgvCnas_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
dgvCnas.RowHeadersWidth - 4,
e.RowBounds.Height);

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
dgvCnas.RowHeadersDefaultCellStyle.Font,
rectangle,
dgvCnas.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}

private void dgvCnas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0) //如果此时是“条件”列
{
ShowConditionValue();
}
if (e.ColumnIndex == 1)//如果此时是“值”列
{
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "连接")
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue
{
TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
Condition = MapCondition.Sub
};
if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value!=null)
cnasFixed.Value= dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

frmConditionParam frmCondition = new frmConditionParam(syncInstrument, cnasFixed);
if (frmCondition.ShowDialog() == DialogResult.OK)
{
if (frmCondition.conditionvalue.Value != null&& frmCondition.conditionvalue.Value.ToString()!="")
{
dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmCondition.conditionvalue.Value;

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
query[0].Condition = cnasFixed.Condition;
query[0].Value = frmCondition.conditionvalue.Value;
}
else
{
cnasFixed.Value = frmCondition.conditionvalue.Value;
syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}
}
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "若...则...")
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue
{
TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
Condition = MapCondition.IFThen
};
if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

frmIfThenParams frmIfThen = new frmIfThenParams(syncInstrument, cnasFixed);
if (frmIfThen.ShowDialog() == DialogResult.OK)
{
if (frmIfThen.conditionvalue.Value != null && frmIfThen.conditionvalue.Value.ToString() != "")
{
dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmIfThen.conditionvalue.Value;

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
query[0].Condition = cnasFixed.Condition;
query[0].Value = frmIfThen.conditionvalue.Value;
}
else
{
cnasFixed.Value = frmIfThen.conditionvalue.Value;
syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}
}
if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "截取")
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue
{
TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
Condition = MapCondition.SubString
};
if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

frmSplitParam frmSplitParam = new frmSplitParam(cnasFixed);
if (frmSplitParam.ShowDialog() == DialogResult.OK)
{
if (frmSplitParam.conditionvalue.Value != null && frmSplitParam.conditionvalue.Value.ToString() != "")
{
dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmSplitParam.conditionvalue.Value;

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
query[0].Condition = cnasFixed.Condition;
query[0].Value = frmSplitParam.conditionvalue.Value;
}
else
{
cnasFixed.Value = frmSplitParam.conditionvalue.Value;
syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}
}

if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "截断开头(结尾)")
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue
{
TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
Condition = MapCondition.SubstringStartEnd
};
if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

frmStartEndSubstring frmStartEnd = new frmStartEndSubstring(cnasFixed);
if (frmStartEnd.ShowDialog() == DialogResult.OK)
{
if (frmStartEnd.conditionvalue.Value != null && frmStartEnd.conditionvalue.Value.ToString() != "")
{
dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmStartEnd.conditionvalue.Value;

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
query[0].Condition = cnasFixed.Condition;
query[0].Value = frmStartEnd.conditionvalue.Value;
}
else
{
cnasFixed.Value = frmStartEnd.conditionvalue.Value;
syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}
}

if (dgvCnas.Rows[e.RowIndex].Cells["condition"].Value.ToString() == "数值相加(减)")
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue
{
TableName = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString(),
ColumnName = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString(),
Condition = MapCondition.AddSubtract
};
if (dgvCnas.Rows[e.RowIndex].Cells["Value"].Value != null)
cnasFixed.Value = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

frmAddSubtract frmAddSubtract = new frmAddSubtract(syncInstrument, cnasFixed);
if (frmAddSubtract.ShowDialog() == DialogResult.OK)
{
if (frmAddSubtract.conditionvalue.Value != null && frmAddSubtract.conditionvalue.Value.ToString() != "")
{
dgvCnas.Rows[e.RowIndex].Cells["Value"].Value = frmAddSubtract.conditionvalue.Value;

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == cnasFixed.TableName && s.ColumnName == cnasFixed.ColumnName).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
query[0].Condition = cnasFixed.Condition;
query[0].Value = frmAddSubtract.conditionvalue.Value;
}
else
{
cnasFixed.Value = frmAddSubtract.conditionvalue.Value;
syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}
}

dgvCnas.EndEdit();
}
}

private void btnDelete_Click(object sender, EventArgs e)
{
if (syncInstrument == null) return;
if (syncInstrument.lstFixedValue == null) return;
if (dgvCnas == null) return;
if (dgvCnas.Rows.Count <= 0) return;
foreach (DataGridViewRow dr in dgvCnas.Rows)
{
dr.Cells["condition"].Value = "";
dr.Cells["Value"].Value = "";
}
syncInstrument.lstFixedValue.Clear();
}

private void dgvCnas_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex <= 0) return;
if (e.ColumnIndex == 0) //此时是“条件”列
{
if (dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value == null) return;
if (dgvCnas.Rows[e.RowIndex].Cells["Condition"].Value == null) return;

//当前列名
string strCurrentTable = dgvCnas.Rows[e.RowIndex].Cells["TableName"].Value.ToString();
string strCurrentColumn = dgvCnas.Rows[e.RowIndex].Cells["TableColumn"].Value.ToString();
string strCurrentType = dgvCnas.Rows[e.RowIndex].Cells["DataType"].Value.ToString();
string strCurrentCondition = dgvCnas.Rows[e.RowIndex].Cells["Condition"].Value.ToString();
string strCurrentValue = dgvCnas.Rows[e.RowIndex].Cells["Value"].Value == null ? "" : dgvCnas.Rows[e.RowIndex].Cells["Value"].Value.ToString();

//将数据插入到数据源中
var query = syncInstrument.lstFixedValue.Where(s => s.TableName == strCurrentTable && s.ColumnName == strCurrentColumn).ToList<CnasConditionMapValue>();
if (query.Count >= 1)
{
GiveConditionByShow(query[0], strCurrentCondition);
}
else
{
CnasConditionMapValue cnasFixed = new CnasConditionMapValue();
cnasFixed.TableName = strCurrentTable;
cnasFixed.ColumnName = strCurrentColumn;
cnasFixed.Value = strCurrentValue;
GiveConditionByShow(cnasFixed, strCurrentCondition);

syncInstrument.lstFixedValue.Add(cnasFixed);
}
}
}

private void dgvCnas_CellClick(object sender, DataGridViewCellEventArgs e)
{
cbxConditionValue.Visible = false;
}

private void ShowConditionValue()
{
Rectangle TmpRect = dgvCnas.GetCellDisplayRectangle(dgvCnas.CurrentCell.ColumnIndex, dgvCnas.CurrentCell.RowIndex, true);
cbxConditionValue.Size = TmpRect.Size;
cbxConditionValue.Top = TmpRect.Top;
cbxConditionValue.Left = TmpRect.Left;
cbxConditionValue.DropDownStyle = ComboBoxStyle.DropDownList;
cbxConditionValue.FormattingEnabled = true;
cbxConditionValue.Visible = true;

if (!this.dgvCnas.Controls.Contains(cbxConditionValue))
this.dgvCnas.Controls.Add(cbxConditionValue);
}
}
}

+ 182
- 0
CNAS_DBSync/frmCNASValue.resx Ver arquivo

@@ -0,0 +1,182 @@
<?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="TableName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TableColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="condition.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Value.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</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>
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
ACcAAAAZAAAAMgAAAFUAAACCAAAApQAAAL8AAADTAAAA3wAAAOcAAADnAAAA3wAAANMAAAC/AAAApQAA
AIIAAABVAAAAMQAAABkAAAAnAAAAKwAAAAAAAAAAAAAACQAAAFEAAACpAAAA4gAAAP0AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA4QAAAKgAAABPAAAACAAA
AAAAAAAAAAAAVgAAAOgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADlAAAAUwAAAAAAAAAAAAAAVQAAAOcAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADlAAAAUgAAAAAAAAAAAAAACAAAAFAAAACoAAAA4QAAAPwAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD8AAAA4QAAAKcAAABPAAAABwAAAAAAAAAAAAAAAAAA
AAAAAAAUAAAAOAAAAGEAAACRAAAAtwAAANIAAADoAAAA9AAAAPwAAAD8AAAA9AAAAOcAAADSAAAAtgAA
AJAAAABhAAAAOAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA=
</value>
</data>
</root>

+ 204
- 0
CNAS_DBSync/frmConditionParam.Designer.cs Ver arquivo

@@ -0,0 +1,204 @@
namespace CNAS_DBSync
{
partial class frmConditionParam
{
/// <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.btnOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.btnSelect3 = new System.Windows.Forms.Button();
this.btnSelect2 = new System.Windows.Forms.Button();
this.btnSelect1 = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.txtPrama3 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtPrama2 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.txtPrama1 = new System.Windows.Forms.TextBox();
this.pnlAll.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.btnOK);
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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlAll.Name = "pnlAll";
this.pnlAll.Size = new System.Drawing.Size(435, 184);
this.pnlAll.TabIndex = 0;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(336, 149);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// groupBox1
//
this.groupBox1.BackColor = System.Drawing.SystemColors.Control;
this.groupBox1.Controls.Add(this.btnSelect3);
this.groupBox1.Controls.Add(this.btnSelect2);
this.groupBox1.Controls.Add(this.btnSelect1);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.txtPrama3);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.txtPrama2);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.txtPrama1);
this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(414, 131);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "条件XXX参数";
//
// btnSelect3
//
this.btnSelect3.Location = new System.Drawing.Point(270, 89);
this.btnSelect3.Name = "btnSelect3";
this.btnSelect3.Size = new System.Drawing.Size(66, 23);
this.btnSelect3.TabIndex = 8;
this.btnSelect3.Text = "选择";
this.btnSelect3.UseVisualStyleBackColor = true;
this.btnSelect3.Click += new System.EventHandler(this.btnSelect3_Click);
//
// btnSelect2
//
this.btnSelect2.Location = new System.Drawing.Point(270, 60);
this.btnSelect2.Name = "btnSelect2";
this.btnSelect2.Size = new System.Drawing.Size(66, 23);
this.btnSelect2.TabIndex = 7;
this.btnSelect2.Text = "选择";
this.btnSelect2.UseVisualStyleBackColor = true;
this.btnSelect2.Click += new System.EventHandler(this.btnSelect2_Click);
//
// btnSelect1
//
this.btnSelect1.Location = new System.Drawing.Point(270, 31);
this.btnSelect1.Name = "btnSelect1";
this.btnSelect1.Size = new System.Drawing.Size(66, 23);
this.btnSelect1.TabIndex = 6;
this.btnSelect1.Text = "选择";
this.btnSelect1.UseVisualStyleBackColor = true;
this.btnSelect1.Click += new System.EventHandler(this.btnSelect1_Click);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(19, 92);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(51, 17);
this.label3.TabIndex = 5;
this.label3.Text = "参数3:";
//
// txtPrama3
//
this.txtPrama3.Location = new System.Drawing.Point(76, 89);
this.txtPrama3.Name = "txtPrama3";
this.txtPrama3.Size = new System.Drawing.Size(188, 23);
this.txtPrama3.TabIndex = 4;
this.txtPrama3.TextChanged += new System.EventHandler(this.txtPrama3_TextChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(19, 63);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(51, 17);
this.label2.TabIndex = 3;
this.label2.Text = "参数2:";
//
// txtPrama2
//
this.txtPrama2.Location = new System.Drawing.Point(76, 60);
this.txtPrama2.Name = "txtPrama2";
this.txtPrama2.Size = new System.Drawing.Size(188, 23);
this.txtPrama2.TabIndex = 2;
this.txtPrama2.TextChanged += new System.EventHandler(this.txtPrama2_TextChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(19, 34);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(51, 17);
this.label1.TabIndex = 1;
this.label1.Text = "参数1:";
//
// txtPrama1
//
this.txtPrama1.Location = new System.Drawing.Point(76, 31);
this.txtPrama1.Name = "txtPrama1";
this.txtPrama1.Size = new System.Drawing.Size(188, 23);
this.txtPrama1.TabIndex = 0;
//
// frmConditionParam
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(435, 184);
this.Controls.Add(this.pnlAll);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmConditionParam";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "添加参数(SUB)";
this.Load += new System.EventHandler(this.frmConditionParam_Load);
this.pnlAll.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button btnSelect3;
private System.Windows.Forms.Button btnSelect2;
private System.Windows.Forms.Button btnSelect1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtPrama3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtPrama2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtPrama1;
}
}

+ 127
- 0
CNAS_DBSync/frmConditionParam.cs Ver arquivo

@@ -0,0 +1,127 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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 partial class frmConditionParam : Form
{
private SyncInstrumentItemInfo syncInstrument = new SyncInstrumentItemInfo();
public CnasConditionMapValue conditionvalue = new CnasConditionMapValue();
public frmConditionParam(SyncInstrumentItemInfo syncInstrument, CnasConditionMapValue conditionvalue)
{
InitializeComponent();
this.syncInstrument = syncInstrument;
this.conditionvalue = conditionvalue;
}

private void frmConditionParam_Load(object sender, EventArgs e)
{
if (conditionvalue == null) return;

string strCondition = conditionvalue.Condition.ToString();
this.groupBox1.Text = $"条件<{strCondition}>参数配置";

string strValue = "";
if(conditionvalue.Value!=null)
strValue = conditionvalue.Value.ToString();

if (strValue != "")
{
string[] strValues = strValue.Split(new string[] { "+" }, StringSplitOptions.RemoveEmptyEntries);
if (strValues.Length >= 1 && strValues.Length <= 3)
{
switch (strValues.Length)
{
case 1:
this.txtPrama1.Text = strValues[0];
break;
case 2:
this.txtPrama1.Text = strValues[0];
this.txtPrama2.Text = strValues[1];
break;
case 3:
this.txtPrama1.Text = strValues[0];
this.txtPrama2.Text = strValues[1];
this.txtPrama3.Text = strValues[2];
break;
}
}
else
{
conditionvalue.Condition = new MapCondition();
conditionvalue.Value = "";
}
}
}

private void btnOK_Click(object sender, EventArgs e)
{
if (this.txtPrama1.Text.Trim() == "" && this.txtPrama2.Text.Trim() == "" && this.txtPrama3.Text.Trim() == "")
return;
conditionvalue.Value = this.txtPrama1.Text;
if (this.txtPrama2.Text != "")
conditionvalue.Value += "+" + this.txtPrama2.Text;
if(this.txtPrama3.Text != "")
conditionvalue.Value += "+" + this.txtPrama3.Text;

this.DialogResult = DialogResult.OK;
this.Close();
}

private void txtPrama2_TextChanged(object sender, EventArgs e)
{
if (this.txtPrama1.Text == "")
{
MessageBox.Show("请按照顺序添加参数");
this.txtPrama2.Text = "";
}
}

private void txtPrama3_TextChanged(object sender, EventArgs e)
{
if (this.txtPrama1.Text == ""||this.txtPrama2.Text == "")
{
MessageBox.Show("请按照顺序添加参数");
this.txtPrama3.Text = "";
}
}

private void btnSelect1_Click(object sender, EventArgs e)
{
frmSelectInstruItem frm = new frmSelectInstruItem(syncInstrument);
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.strSelectedColumn != "")
txtPrama1.Text = "{" + frm.strSelectedColumn+"} ";
}
}

private void btnSelect2_Click(object sender, EventArgs e)
{
frmSelectInstruItem frm = new frmSelectInstruItem(syncInstrument);
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.strSelectedColumn != "")
txtPrama2.Text = "{" + frm.strSelectedColumn + "} ";
}
}

private void btnSelect3_Click(object sender, EventArgs e)
{
frmSelectInstruItem frm = new frmSelectInstruItem(syncInstrument);
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.strSelectedColumn != "")
txtPrama3.Text = "{" + frm.strSelectedColumn + "} ";
}
}
}
}

+ 120
- 0
CNAS_DBSync/frmConditionParam.resx Ver arquivo

@@ -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>

+ 1546
- 0
CNAS_DBSync/frmDatabaseParams.Designer.cs
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1057
- 0
CNAS_DBSync/frmDatabaseParams.cs
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 167
- 0
CNAS_DBSync/frmDatabaseParams.resx Ver arquivo

@@ -0,0 +1,167 @@
<?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>
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
ABAAAAB7AAAAHQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAA
AAAAAAAAAAAAZgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAB3AAAAQgAAABwAAABWAAAAdwAA
AE0AAAAcAAAAAQAAAAAAAAAAAAAADAAAADcAAABtAAAAbAAAADAAAAAeAAAAeQAAADQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAfAAAAegAAAH4AAABXAAAALwAAAF0AAACAAAAAHwAAAAAAAAACAAAAYwAA
AHMAAAA7AAAAPgAAAHMAAACCAAAARwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA
ABEAAAAAAAAAAAAAAAAAAABdAAAATQAAAAAAAAAVAAAAgQAAAA0AAAAAAAAAAAAAAAkAAAATAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAfQAA
AEEAAABpAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAARAAAAG8AAABhAAAAFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Af8A/gD/AMAABwCAAAMAgAADAIAAAwCAAAMAgAADAIAA
AQAAAAAAAAAAAAAYAAAAGAAAABAAAAAAAAAAAAAAgAABAIIAAwCAAAMAgAADAIAAAwCAAAMAwAAHAP8B
/wA=
</value>
</data>
</root>

+ 217
- 0
CNAS_DBSync/frmIfThenParams.Designer.cs Ver arquivo

@@ -0,0 +1,217 @@
namespace CNAS_DBSync
{
partial class frmIfThenParams
{
/// <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.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.pnlAll = new System.Windows.Forms.Panel();
this.btnOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.btnAdd = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.dgvIfThen = new System.Windows.Forms.DataGridView();
this.btnDelete = new System.Windows.Forms.Button();
this.cbxInstrument = new System.Windows.Forms.ComboBox();
this.CalcuCondition = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.ColumnValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.CurrentValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlAll.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvIfThen)).BeginInit();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.btnOK);
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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlAll.Name = "pnlAll";
this.pnlAll.Size = new System.Drawing.Size(486, 302);
this.pnlAll.TabIndex = 1;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(384, 264);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// groupBox1
//
this.groupBox1.BackColor = System.Drawing.SystemColors.Control;
this.groupBox1.Controls.Add(this.cbxInstrument);
this.groupBox1.Controls.Add(this.btnDelete);
this.groupBox1.Controls.Add(this.dgvIfThen);
this.groupBox1.Controls.Add(this.btnAdd);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(462, 246);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "条件XXX参数";
//
// btnAdd
//
this.btnAdd.Location = new System.Drawing.Point(316, 26);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(66, 23);
this.btnAdd.TabIndex = 6;
this.btnAdd.Text = "新增条件";
this.btnAdd.UseVisualStyleBackColor = true;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 29);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(68, 17);
this.label1.TabIndex = 1;
this.label1.Text = "条件列名:";
//
// dgvIfThen
//
this.dgvIfThen.AllowUserToAddRows = false;
this.dgvIfThen.BackgroundColor = System.Drawing.Color.White;
this.dgvIfThen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvIfThen.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.CalcuCondition,
this.ColumnValue,
this.CurrentValue,
this.ID});
this.dgvIfThen.Location = new System.Drawing.Point(9, 55);
this.dgvIfThen.MultiSelect = false;
this.dgvIfThen.Name = "dgvIfThen";
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.dgvIfThen.RowHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dgvIfThen.RowHeadersVisible = false;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dgvIfThen.RowsDefaultCellStyle = dataGridViewCellStyle2;
this.dgvIfThen.RowTemplate.Height = 23;
this.dgvIfThen.Size = new System.Drawing.Size(447, 181);
this.dgvIfThen.TabIndex = 7;
//
// btnDelete
//
this.btnDelete.Location = new System.Drawing.Point(388, 26);
this.btnDelete.Name = "btnDelete";
this.btnDelete.Size = new System.Drawing.Size(66, 23);
this.btnDelete.TabIndex = 8;
this.btnDelete.Text = "删除条件";
this.btnDelete.UseVisualStyleBackColor = true;
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// cbxInstrument
//
this.cbxInstrument.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbxInstrument.FormattingEnabled = true;
this.cbxInstrument.Location = new System.Drawing.Point(80, 24);
this.cbxInstrument.Name = "cbxInstrument";
this.cbxInstrument.Size = new System.Drawing.Size(175, 25);
this.cbxInstrument.TabIndex = 9;
//
// CalcuCondition
//
this.CalcuCondition.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
this.CalcuCondition.HeaderText = "条件";
this.CalcuCondition.Items.AddRange(new object[] {
"等于"});
this.CalcuCondition.Name = "CalcuCondition";
//
// ColumnValue
//
this.ColumnValue.HeaderText = "条件列值";
this.ColumnValue.Name = "ColumnValue";
this.ColumnValue.Width = 150;
//
// CurrentValue
//
this.CurrentValue.HeaderText = "当前列值";
this.CurrentValue.Name = "CurrentValue";
this.CurrentValue.Width = 150;
//
// ID
//
this.ID.HeaderText = "ID";
this.ID.Name = "ID";
this.ID.ReadOnly = true;
this.ID.Visible = false;
//
// frmIfThenParams
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(486, 302);
this.Controls.Add(this.pnlAll);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmIfThenParams";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "添加参数(IFThen)";
this.Load += new System.EventHandler(this.frmIfThenParams_Load);
this.pnlAll.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvIfThen)).EndInit();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button btnAdd;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.DataGridView dgvIfThen;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.ComboBox cbxInstrument;
private System.Windows.Forms.DataGridViewComboBoxColumn CalcuCondition;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnValue;
private System.Windows.Forms.DataGridViewTextBoxColumn CurrentValue;
private System.Windows.Forms.DataGridViewTextBoxColumn ID;
}
}

+ 125
- 0
CNAS_DBSync/frmIfThenParams.cs Ver arquivo

@@ -0,0 +1,125 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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 partial class frmIfThenParams : Form
{
private SyncInstrumentItemInfo syncInstrument = new SyncInstrumentItemInfo();
public CnasConditionMapValue conditionvalue = new CnasConditionMapValue();
public frmIfThenParams(SyncInstrumentItemInfo syncInstrument, CnasConditionMapValue conditionvalue)
{
InitializeComponent();

this.conditionvalue = conditionvalue;
this.syncInstrument = syncInstrument;
}

private void frmIfThenParams_Load(object sender, EventArgs e)
{
if (conditionvalue == null) return;

string strCondition = conditionvalue.Condition.ToString();
this.groupBox1.Text = $"条件<{strCondition}>";

//加载所有来源数据库的列名
InstrumentData instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrument.SyncInstrumentDSInfo, new object[] { "", "", "" });
Dictionary<string, DataTable> dictInstruTables = instrumentData.GetInstrumentData();

//来源库的表名
if (syncInstrument.LstSyncPramas == null || syncInstrument.LstSyncPramas.Count == 0) return;
string strSourceTableName = syncInstrument.LstSyncPramas[0].SourceTable;
//绑定ComboBox数据
if (!dictInstruTables.ContainsKey(strSourceTableName)) return;
List<string> lstColumns = new List<string>();
foreach (DataColumn dc in dictInstruTables[strSourceTableName].Columns)
{
lstColumns.Add(dc.ColumnName);
}
cbxInstrument.DataSource = lstColumns;
cbxInstrument.ValueMember = "";

//加载旧数据
string strValue = "";
if (conditionvalue.Value != null)
strValue = conditionvalue.Value.ToString();

if (strValue != "")
{
//解析字符串,创建datagridviewrow显示
List<IFThenConditionParams> lstParams = GlobalCommonOperation.AnanlysisIFThenString(strValue);
if (lstParams.Count > 0)
{
cbxInstrument.Text = lstParams[0].ConditionColumnName;

foreach (var conditionparams in lstParams)
{
//构建datagridview行数据
int index = this.dgvIfThen.Rows.Add();
this.dgvIfThen.Rows[index].Cells[0].Value = conditionparams.ConditionAlgorithm;
this.dgvIfThen.Rows[index].Cells[1].Value = conditionparams.ConditionColumnValue;
this.dgvIfThen.Rows[index].Cells[2].Value = conditionparams.ColumnValue;
}
}
}
}

private void btnAdd_Click(object sender, EventArgs e)
{
int index = this.dgvIfThen.Rows.Add();
this.dgvIfThen.Rows[index].Cells[0].Value = "等于";
}

private void btnDelete_Click(object sender, EventArgs e)
{
this.dgvIfThen.Rows.RemoveAt(dgvIfThen.CurrentCell.RowIndex);
}

private void btnOK_Click(object sender, EventArgs e)
{
//if()
string strReturnValue = "";
string strConditionColumn = cbxInstrument.Text.ToString();
if (strConditionColumn == "") return;
for (int i = 0; i < dgvIfThen.Rows.Count; i++)
{
string strConditionType = this.dgvIfThen.Rows[i].Cells[0].Value==null?"": this.dgvIfThen.Rows[i].Cells[0].Value.ToString();
string strConditionValue = this.dgvIfThen.Rows[i].Cells[1].Value == null ? "" : this.dgvIfThen.Rows[i].Cells[1].Value.ToString();
string strResultValue = this.dgvIfThen.Rows[i].Cells[2].Value == null ? "" : this.dgvIfThen.Rows[i].Cells[2].Value.ToString();

if (strConditionValue == "" && strResultValue == "") continue;
if (!StringIegitimacy(strConditionValue) || !StringIegitimacy(strResultValue))
{
MessageBox.Show("输入值存在不被允许的字符,请重新输入。");
break;
}

strReturnValue += "IF{" + strConditionColumn + "}{" + strConditionType + "}{" + strConditionValue + "}THEN{" + strResultValue + "};";
}
conditionvalue.Value = strReturnValue;
this.DialogResult = DialogResult.OK;
this.Close();
}

/// <summary>
/// 字符串合法性判断(不允许输入跟解析字符串相同的字符,否则将无法正常解析)
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public bool StringIegitimacy(string strValue)
{
if (strValue.Contains('{') || strValue.Contains('}') || strValue.Contains("IF") || strValue.Contains("THEN") || strValue.Contains(';'))
return false;
else
return true;
}
}
}

+ 132
- 0
CNAS_DBSync/frmIfThenParams.resx Ver arquivo

@@ -0,0 +1,132 @@
<?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="CalcuCondition.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="CurrentValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

+ 92
- 0
CNAS_DBSync/frmInstrumentCode.Designer.cs Ver arquivo

@@ -0,0 +1,92 @@
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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmInstrumentCode));
this.txtCode = new System.Windows.Forms.TextBox();
this.btnOK = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// txtCode
//
this.txtCode.Location = new System.Drawing.Point(83, 25);
this.txtCode.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtCode.Name = "txtCode";
this.txtCode.Size = new System.Drawing.Size(275, 23);
this.txtCode.TabIndex = 0;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(293, 66);
this.btnOK.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 30);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(11, 28);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(68, 17);
this.label1.TabIndex = 2;
this.label1.Text = "仪器编号:";
//
// frmInstrumentCode
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(395, 101);
this.Controls.Add(this.label1);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.txtCode);
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.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;
private System.Windows.Forms.Label label1;
}
}

+ 105
- 0
CNAS_DBSync/frmInstrumentCode.cs Ver arquivo

@@ -0,0 +1,105 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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 InstrumentType type = InstrumentType.None;

public frmInstrumentCode(List<SyncInstrumentItemInfo> lstSyncInstrument)
{
InitializeComponent();

this.lstSyncInstrument = lstSyncInstrument;
this.DialogResult = DialogResult.None;
}

public frmInstrumentCode(List<SyncInstrumentItemInfo> lstSyncInstrument,string strOldCode=null)
{
InitializeComponent();

this.lstSyncInstrument = lstSyncInstrument;
this.strOldCode=this.txtCode.Text=strOldCode;

var lstInstrument = lstSyncInstrument.Where(s => s.Code == strOldCode).ToList<SyncInstrumentItemInfo>();
if (lstInstrument.Count == 1)
{
type = lstInstrument[0].InstruType;
//this.cbxInstruType.Text =GlobalCommonOperation.GetTitleByInstruType(type);
}
}

private void btnOK_Click(object sender, EventArgs e)
{
//if (this.txtCode.Text.Trim() == strOldCode&& GlobalCommonOperation.GetInstruTypeBySelectedItem(this.cbxInstruType.Text)==type) //此时没有修改任何内容
if (this.txtCode.Text.Trim() == strOldCode) //此时没有修改任何内容,直接关闭界面
{
//return;
this.Close();
return;
}

if (this.txtCode.Text.Trim() != strOldCode)
{
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;
}
}

//if (this.cbxInstruType.Text == "")
//{
// MessageBox.Show("类型不允许为空!请重新选择!");
// return;
//}


//传输输入到父界面
SyncInstrumentItemInfo syncinstrument = new SyncInstrumentItemInfo
{
GUID = Guid.NewGuid().ToString(),
Code = this.txtCode.Text.Trim(),
//InstruType = GlobalCommonOperation.GetInstruTypeBySelectedItem(this.cbxInstruType.Text)
InstruType = InstrumentType.None
};

this.InstrumentDelegate(syncinstrument);

this.DialogResult = DialogResult.OK;

//关闭界面
this.Close();
}
}


}

+ 159
- 0
CNAS_DBSync/frmInstrumentCode.resx Ver arquivo

@@ -0,0 +1,159 @@
<?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>
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
YAA=
</value>
</data>
</root>

+ 96
- 0
CNAS_DBSync/frmOperationPwd.Designer.cs Ver arquivo

@@ -0,0 +1,96 @@
namespace CNAS_DBSync
{
partial class frmOperationPwd
{
/// <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(frmOperationPwd));
this.txtOldPwd = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// txtOldPwd
//
this.txtOldPwd.Location = new System.Drawing.Point(67, 31);
this.txtOldPwd.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtOldPwd.Name = "txtOldPwd";
this.txtOldPwd.PasswordChar = '*';
this.txtOldPwd.Size = new System.Drawing.Size(214, 23);
this.txtOldPwd.TabIndex = 35;
this.txtOldPwd.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmOperationPwd_KeyDown);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(20, 34);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(44, 17);
this.label2.TabIndex = 34;
this.label2.Text = "密码:";
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(296, 29);
this.btnOK.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(60, 25);
this.btnOK.TabIndex = 36;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// frmOperationPwd
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(386, 85);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.txtOldPwd);
this.Controls.Add(this.label2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.Name = "frmOperationPwd";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "输入操作密码";
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmOperationPwd_KeyDown);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.frmOperationPwd_MouseDown);
this.ResumeLayout(false);
this.PerformLayout();

}

#endregion

private System.Windows.Forms.TextBox txtOldPwd;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button btnOK;
}
}

+ 78
- 0
CNAS_DBSync/frmOperationPwd.cs Ver arquivo

@@ -0,0 +1,78 @@
using CnasSynchronousCommon;
using CnasSynchronusClient;
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 partial class frmOperationPwd : Form
{
public frmOperationPwd()
{
InitializeComponent();
}

private void btnOK_Click(object sender, EventArgs e)
{
Config();
}
public void Config()
{
//获取本地存储的操作密码
string strPwd = FileOperation.GetLocalOperationPwd();
if (this.txtOldPwd.Text.Trim() == strPwd)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("密码无效.");
}
}
private void frmOperationPwd_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (!btnOK.Focused)
{
FormKeyEventClass fke = new FormKeyEventClass();
fke.FormKeyEvent += new FormKeyEventClass.FormKey(Config);
fke.FormKeyEventRun(e);
}
}
catch (Exception ex)
{
AppLog.Error(ex.Message.ToString());
}
}


[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;

private void frmOperationPwd_MouseDown(object sender, MouseEventArgs e)
{
try
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
catch (Exception ex)
{
AppLog.Error(ex.Message.ToString());
}
}
}
}

+ 145
- 0
CNAS_DBSync/frmOperationPwd.resx Ver arquivo

@@ -0,0 +1,145 @@
<?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>
AAABAAEAGAsAAAEAIAB0BAAAFgAAACgAAAAYAAAAFgAAAAEAIAAAAAAAIAQAAMIeAADCHgAAAAAAAAAA
AAAAAAAAAAAAAAAAACMAAAB0AAAAkgAAAJMAAACTAAAAkwAAAJMAAACTAAAAkwAAAJMAAACTAAAAkwAA
AJMAAACTAAAAkwAAAJMAAACTAAAAkwAAAHcAAAAnAAAAAAAAAAAAAAAAAAAAMwAAAM4AAADnAAAA0gAA
ANEAAADRAAAA0QAAANEAAADRAAAA0QAAANEAAADRAAAA0QAAANEAAADRAAAA0QAAANEAAADRAAAA0gAA
AOYAAADTAAAAOQAAAAAAAAAGAAAAqgAAANAAAAA0AAAAEAAAAA8AAAARAAAAEQAAABEAAAAQAAAAEQAA
ABEAAAARAAAAEQAAAA8AAAARAAAAEQAAABEAAAAQAAAAEAAAAC8AAADJAAAAswAAAAkAAAAVAAAA1AAA
AIEAAAAAAAAABwAAABsAAAAAAAAAAAAAAAAAAAAZAAAACQAAAAAAAAAAAAAABwAAABsAAAAAAAAAAAAA
AAAAAAAaAAAACQAAAAAAAAB3AAAA1QAAABcAAAAXAAAA1gAAAHgAAAAgAAAAmgAAAMkAAABmAAAACAAA
AF8AAADGAAAAoAAAACgAAAAjAAAAmwAAAMkAAABlAAAACAAAAGAAAADHAAAAnwAAACQAAABuAAAA1AAA
ABcAAAAXAAAA1QAAAHcAAAA7AAAA9gAAAP8AAAC2AAAACwAAAKoAAAD/AAAA+wAAAEYAAAA9AAAA9wAA
AP8AAAC0AAAACwAAAKwAAAD/AAAA+gAAAEMAAABtAAAA1AAAABcAAAAXAAAA1gAAAHgAAAAgAAAAmwAA
AMoAAABnAAAACAAAAF8AAADHAAAAoQAAACgAAAAjAAAAnAAAAMkAAABlAAAACAAAAGEAAADHAAAAoAAA
ACUAAABuAAAA1AAAABcAAAAWAAAA1AAAAIEAAAAAAAAABwAAABsAAAAAAAAAAAAAAAAAAAAaAAAACQAA
AAAAAAAAAAAACAAAABsAAAAAAAAAAAAAAAAAAAAaAAAACQAAAAAAAAB2AAAA1QAAABcAAAAGAAAAqgAA
AM8AAAAzAAAAEAAAAA8AAAARAAAAEQAAABEAAAAPAAAAEAAAABEAAAARAAAAEAAAAA8AAAARAAAAEQAA
ABEAAAAPAAAAEAAAAC8AAADJAAAAswAAAAkAAAAAAAAAMwAAAM4AAADnAAAA0QAAANAAAADQAAAA0AAA
ANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0QAAAOYAAADTAAAAOgAA
AAAAAAAAAAAAAAAAACQAAAB0AAAAkwAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAA
AJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAHcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

+ 145
- 0
CNAS_DBSync/frmSelectInstruItem.Designer.cs Ver arquivo

@@ -0,0 +1,145 @@
namespace CNAS_DBSync
{
partial class frmSelectInstruItem
{
/// <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.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.pnlAll = new System.Windows.Forms.Panel();
this.btnCancel = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
this.dgvInstruDS = new System.Windows.Forms.DataGridView();
this.InstruFieldName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.InstruDataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.pnlAll.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvInstruDS)).BeginInit();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.btnCancel);
this.pnlAll.Controls.Add(this.btnOK);
this.pnlAll.Controls.Add(this.dgvInstruDS);
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(502, 329);
this.pnlAll.TabIndex = 0;
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(400, 46);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(90, 28);
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(400, 12);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(90, 28);
this.btnOK.TabIndex = 3;
this.btnOK.Text = "确定";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// dgvInstruDS
//
this.dgvInstruDS.AllowUserToAddRows = false;
this.dgvInstruDS.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.dgvInstruDS.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dgvInstruDS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvInstruDS.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.InstruFieldName,
this.InstruDataType});
this.dgvInstruDS.Location = new System.Drawing.Point(8, 8);
this.dgvInstruDS.Name = "dgvInstruDS";
this.dgvInstruDS.ReadOnly = true;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dgvInstruDS.RowsDefaultCellStyle = dataGridViewCellStyle2;
this.dgvInstruDS.RowTemplate.Height = 23;
this.dgvInstruDS.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvInstruDS.Size = new System.Drawing.Size(377, 309);
this.dgvInstruDS.TabIndex = 2;
//
// 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;
//
// frmSelectInstruItem
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(502, 329);
this.Controls.Add(this.pnlAll);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmSelectInstruItem";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "选择项";
this.Load += new System.EventHandler(this.frmSelectInstruItem_Load);
this.pnlAll.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvInstruDS)).EndInit();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.DataGridView dgvInstruDS;
private System.Windows.Forms.DataGridViewTextBoxColumn InstruFieldName;
private System.Windows.Forms.DataGridViewTextBoxColumn InstruDataType;
private System.Windows.Forms.Button btnCancel;
}
}

+ 63
- 0
CNAS_DBSync/frmSelectInstruItem.cs Ver arquivo

@@ -0,0 +1,63 @@
using CnasSynchronusClient;
using CnasSynchrousModel;
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 partial class frmSelectInstruItem : Form
{
private SyncInstrumentItemInfo syncInstrument;
public string strSelectedColumn = "";
public frmSelectInstruItem(SyncInstrumentItemInfo syncInstrument)
{
InitializeComponent();

this.syncInstrument = syncInstrument;
}

private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}

private void btnOK_Click(object sender, EventArgs e)
{
strSelectedColumn = dgvInstruDS.Rows[dgvInstruDS.CurrentCell.RowIndex].Cells["InstruFieldName"].Value.ToString();

this.DialogResult = DialogResult.OK;
this.Close();
}

private void frmSelectInstruItem_Load(object sender, EventArgs e)
{
InstrumentData instrumentData = InstrumentDataFact.CreateInstrumentDataSource(syncInstrument.SyncInstrumentDSInfo, new object[] { "", "", "" });
Dictionary<string,DataTable> dictInstruTables = instrumentData.GetInstrumentData();

string strTableName_Instru = syncInstrument.LstSyncPramas[0].SourceTable;
if (dictInstruTables.ContainsKey(strTableName_Instru))
{
DataTable dt = dictInstruTables[strTableName_Instru];
if (dt != null)
{
DataTable dtInstruShow = new DataTable();
dtInstruShow.Columns.Add("InstruFieldName");
dtInstruShow.Columns.Add("InstruDataType");

foreach (DataColumn dc in dt.Columns)
{
dtInstruShow.Rows.Add(new object[] { dc.ColumnName, dc.DataType });
}

dgvInstruDS.DataSource = dtInstruShow;
}
}
}
}
}

+ 126
- 0
CNAS_DBSync/frmSelectInstruItem.resx Ver arquivo

@@ -0,0 +1,126 @@
<?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="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>
</root>

+ 306
- 0
CNAS_DBSync/frmServiceConfig.Designer.cs Ver arquivo

@@ -0,0 +1,306 @@
namespace CNAS_DBSync
{
partial class frmServiceConfig
{
/// <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(frmServiceConfig));
this.pnlAll = new System.Windows.Forms.Panel();
this.pnlCenter = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.dtpSource = new System.Windows.Forms.DateTimePicker();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.numService = new System.Windows.Forms.NumericUpDown();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.cbxAutoStart = new System.Windows.Forms.CheckBox();
this.panel2 = new System.Windows.Forms.Panel();
this.btnInstallService = new System.Windows.Forms.Button();
this.btnRun = new System.Windows.Forms.Button();
this.pnlRight = new System.Windows.Forms.Panel();
this.pnlLeft = new System.Windows.Forms.Panel();
this.pnlBottom = new System.Windows.Forms.Panel();
this.pnlTop = new System.Windows.Forms.Panel();
this.pnlAll.SuspendLayout();
this.pnlCenter.SuspendLayout();
this.panel3.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numService)).BeginInit();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// pnlAll
//
this.pnlAll.Controls.Add(this.pnlCenter);
this.pnlAll.Controls.Add(this.pnlRight);
this.pnlAll.Controls.Add(this.pnlLeft);
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.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlAll.Name = "pnlAll";
this.pnlAll.Size = new System.Drawing.Size(435, 183);
this.pnlAll.TabIndex = 0;
//
// pnlCenter
//
this.pnlCenter.Controls.Add(this.panel3);
this.pnlCenter.Controls.Add(this.panel1);
this.pnlCenter.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlCenter.Location = new System.Drawing.Point(12, 14);
this.pnlCenter.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlCenter.Name = "pnlCenter";
this.pnlCenter.Size = new System.Drawing.Size(411, 159);
this.pnlCenter.TabIndex = 4;
//
// panel3
//
this.panel3.Controls.Add(this.groupBox1);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(411, 115);
this.panel3.TabIndex = 1;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.dtpSource);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.numService);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox1.Location = new System.Drawing.Point(0, 0);
this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.groupBox1.Size = new System.Drawing.Size(411, 115);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.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(159, 68);
this.dtpSource.Name = "dtpSource";
this.dtpSource.Size = new System.Drawing.Size(179, 23);
this.dtpSource.TabIndex = 5;
this.dtpSource.Value = new System.DateTime(2019, 6, 15, 0, 0, 0, 0);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(40, 71);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(116, 17);
this.label4.TabIndex = 4;
this.label4.Text = "获取数据初始时间:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(342, 39);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(32, 17);
this.label3.TabIndex = 3;
this.label3.Text = "分钟";
//
// numService
//
this.numService.Location = new System.Drawing.Point(196, 35);
this.numService.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.numService.Name = "numService";
this.numService.Size = new System.Drawing.Size(140, 23);
this.numService.TabIndex = 2;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(156, 38);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(32, 17);
this.label2.TabIndex = 1;
this.label2.Text = "每隔";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(40, 38);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(116, 17);
this.label1.TabIndex = 0;
this.label1.Text = "数据同步执行时间:";
//
// panel1
//
this.panel1.Controls.Add(this.cbxAutoStart);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 115);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(411, 44);
this.panel1.TabIndex = 0;
//
// cbxAutoStart
//
this.cbxAutoStart.AutoSize = true;
this.cbxAutoStart.Location = new System.Drawing.Point(24, 8);
this.cbxAutoStart.Name = "cbxAutoStart";
this.cbxAutoStart.Size = new System.Drawing.Size(99, 21);
this.cbxAutoStart.TabIndex = 1;
this.cbxAutoStart.Text = "是否开机启动";
this.cbxAutoStart.UseVisualStyleBackColor = true;
//
// panel2
//
this.panel2.Controls.Add(this.btnInstallService);
this.panel2.Controls.Add(this.btnRun);
this.panel2.Dock = System.Windows.Forms.DockStyle.Right;
this.panel2.Location = new System.Drawing.Point(205, 0);
this.panel2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(206, 44);
this.panel2.TabIndex = 0;
//
// btnInstallService
//
this.btnInstallService.Location = new System.Drawing.Point(3, 4);
this.btnInstallService.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnInstallService.Name = "btnInstallService";
this.btnInstallService.Size = new System.Drawing.Size(90, 30);
this.btnInstallService.TabIndex = 1;
this.btnInstallService.Text = "安装服务";
this.btnInstallService.UseVisualStyleBackColor = true;
this.btnInstallService.Click += new System.EventHandler(this.btnInstallService_Click);
//
// btnRun
//
this.btnRun.Location = new System.Drawing.Point(109, 4);
this.btnRun.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btnRun.Name = "btnRun";
this.btnRun.Size = new System.Drawing.Size(90, 30);
this.btnRun.TabIndex = 0;
this.btnRun.Text = "启动服务";
this.btnRun.UseVisualStyleBackColor = true;
this.btnRun.Click += new System.EventHandler(this.btnRun_Click);
//
// pnlRight
//
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlRight.Location = new System.Drawing.Point(423, 14);
this.pnlRight.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlRight.Name = "pnlRight";
this.pnlRight.Size = new System.Drawing.Size(12, 159);
this.pnlRight.TabIndex = 3;
//
// pnlLeft
//
this.pnlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.pnlLeft.Location = new System.Drawing.Point(0, 14);
this.pnlLeft.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlLeft.Name = "pnlLeft";
this.pnlLeft.Size = new System.Drawing.Size(12, 159);
this.pnlLeft.TabIndex = 2;
//
// pnlBottom
//
this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlBottom.Location = new System.Drawing.Point(0, 173);
this.pnlBottom.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.pnlBottom.Name = "pnlBottom";
this.pnlBottom.Size = new System.Drawing.Size(435, 10);
this.pnlBottom.TabIndex = 1;
//
// pnlTop
//
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(435, 14);
this.pnlTop.TabIndex = 0;
//
// frmServiceConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(435, 183);
this.Controls.Add(this.pnlAll);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "frmServiceConfig";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "服务配置";
this.Load += new System.EventHandler(this.frmServiceConfig_Load);
this.pnlAll.ResumeLayout(false);
this.pnlCenter.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numService)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Panel pnlAll;
private System.Windows.Forms.Panel pnlCenter;
private System.Windows.Forms.Panel pnlRight;
private System.Windows.Forms.Panel pnlLeft;
private System.Windows.Forms.Panel pnlBottom;
private System.Windows.Forms.Panel pnlTop;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown numService;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnRun;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.DateTimePicker dtpSource;
private System.Windows.Forms.CheckBox cbxAutoStart;
private System.Windows.Forms.Button btnInstallService;
}
}

+ 310
- 0
CNAS_DBSync/frmServiceConfig.cs Ver arquivo

@@ -0,0 +1,310 @@
using CnasSynchronousCommon;
using CnasSynchronusClient;
using CnasSynchrousModel;
using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace CNAS_DBSync
{
public partial class frmServiceConfig : Form
{
ServiceConfig serviceConfig = new ServiceConfig();
public frmServiceConfig()
{
InitializeComponent();
}

private void frmServiceConfig_Load(object sender, EventArgs e)
{
//1.读取本地配置文件,填充上次配置时间
try
{
XmlSerializer serializer = new XmlSerializer(serviceConfig.GetType());
FileStream stream = new FileStream(FileHelper.getBasePath() + "/DataConfig/SyncServiceData.xml", FileMode.Open);
serviceConfig = (ServiceConfig)serializer.Deserialize(stream);
stream.Close();

this.numService.Value = serviceConfig.Minutes;
this.dtpSource.Value = serviceConfig.InitalDT;

this.cbxAutoStart.Checked = getServiceStartType("SyncService") == 2 ? true : false;
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
}
//2.检查本地是否存在已经启动的服务,初始化btn的显示
string strMsg = IfStartService();
switch (strMsg)
{
case "1":
btnInstallService.Text = "安装服务";
btnRun.Text = "启动服务";
this.numService.Enabled = true;
break;
case "2":
btnInstallService.Text = "卸载服务";
btnRun.Text = "启动服务";
this.numService.Enabled = true;
break;
case "3":
btnInstallService.Text = "卸载服务";
btnRun.Text = "停止服务";
this.numService.Enabled = false;
break;
}
}

private string IfStartService()
{
ServiceController[] service = ServiceController.GetServices();
string strMsg = "1";
for (int i = 0; i < service.Length; i++)
{
if (service[i].DisplayName.ToUpper().Equals("SyncService".ToUpper()))
{
strMsg = "2";
if (service[i].Status == ServiceControllerStatus.Running)
{
strMsg = "3";
break;
}
}
}
return strMsg;
}

private void btnRun_Click(object sender, EventArgs e)
{
if (btnRun.Text == "启动服务") //此时启动服务
{
if (this.numService.Value < 1)
{
MessageBox.Show("服务至少每隔1分钟执行");
return;
}
serviceConfig.Minutes = (Int32)this.numService.Value;

serviceConfig.InitalDT = this.dtpSource.Value;
//修改服务为开启启动
if(cbxAutoStart.Checked)
ChangeServiceStartType(2, "SyncService");
if (StartService())
{
SaveServiceConfig(serviceConfig); //存储配置文件
btnRun.Text = "停止服务";
}
else
{
MessageBox.Show("启动服务失败!");
}
}
else //此时停止服务
{
if (StopService())
{
if (cbxAutoStart.Checked)
{
ChangeServiceStartType(3, "SyncService");
cbxAutoStart.Checked = false;
}
btnRun.Text = "启动服务";
}
else
{
MessageBox.Show("停止服务失败!");
}
}
}
private bool StartService()
{
bool bIfSuccess = true;
try
{
ServiceController serviceController = new ServiceController("SyncService");
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running);
serviceController.Close();
}
catch (Exception ex)
{
bIfSuccess = false;
AppLog.Error(ex.Message);
}
return bIfSuccess;
}
private bool StopService()
{
bool bIfSuccess = true;
try
{
ServiceController serviceController = new ServiceController("SyncService");
serviceController.Stop();
serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
serviceController.Close();
}
catch (Exception ex)
{
bIfSuccess = false;
AppLog.Error(ex.Message);
}
return bIfSuccess;
}

private void SaveServiceConfig(ServiceConfig config)
{
try
{
XmlSerializer serializer = new XmlSerializer(config.GetType());
TextWriter writer = new StreamWriter(FileHelper.getBasePath() + "/DataConfig/SyncServiceData.xml");
serializer.Serialize(writer, config);
writer.Close();
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
}
}

/// <summary>
/// 修改服务的启动项 2为自动,3为手动
/// </summary>
/// <param name="startType"></param>
/// <param name="serviceName"></param>
/// <returns></returns>
public static bool ChangeServiceStartType(int startType, string serviceName)
{
try
{
RegistryKey regist = Registry.LocalMachine;
RegistryKey sysReg = regist.OpenSubKey("SYSTEM");
RegistryKey currentControlSet = sysReg.OpenSubKey("CurrentControlSet");
RegistryKey services = currentControlSet.OpenSubKey("Services");
RegistryKey servicesName = services.OpenSubKey(serviceName, true);
servicesName.SetValue("Start", startType);
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
return false;
}
return true;
}

/// <summary>
/// 获取服务启动类型
/// </summary>
/// <param name="serviceName"></param>
/// <returns></returns>
public static int getServiceStartType(string serviceName)
{
int startType = 0;
try
{
RegistryKey regist = Registry.LocalMachine;
RegistryKey sysReg = regist.OpenSubKey("SYSTEM");
RegistryKey currentControlSet = sysReg.OpenSubKey("CurrentControlSet");
RegistryKey services = currentControlSet.OpenSubKey("Services");
RegistryKey servicesName = services.OpenSubKey(serviceName, true);
if(servicesName != null)
startType=(int)servicesName.GetValue("Start");
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
return 0;
}
return startType;
}

private void btnInstallService_Click(object sender, EventArgs e)
{
string serviceFilePath = FileHelper.getBasePath() + @"\CNAS_SyncService.exe";
if (btnInstallService.Text == "安装服务")
{
if (InstallService(serviceFilePath))
{
btnInstallService.Text = "卸载服务";
}
else
{
MessageBox.Show("安装服务失败。");
}
}
else if (btnInstallService.Text == "卸载服务")
{
if (UninstallService(serviceFilePath))
{
btnInstallService.Text = "安装服务";
btnRun.Text = "启动服务";
}
else
{
MessageBox.Show("卸载服务失败。");
}
}
}

/// <summary>
/// 安装服务
/// </summary>
/// <param name="serviceFilePath"></param>
private bool InstallService(string serviceFilePath)
{
bool bIfSuccess = true;
try
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
IDictionary savedState = new Hashtable();
installer.Install(savedState);
installer.Commit(savedState);
}
}
catch (Exception ex)
{
bIfSuccess = false;
AppLog.Error(ex.Message);
}
return bIfSuccess;
}

/// <summary>
/// 卸载服务
/// </summary>
/// <param name="serviceFilePath"></param>
private bool UninstallService(string serviceFilePath)
{
bool bIfSuccess = true;
try
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
installer.Uninstall(null);
}
}
catch (Exception ex)
{
bIfSuccess = false;
AppLog.Error(ex.Message);
}
return bIfSuccess;
}
}
}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff

Carregando…
Cancelar
Salvar