From 9ed75d22ff910fba86c9844fcadd30908fd81165 Mon Sep 17 00:00:00 2001 From: OCEAN <1010331798@qq.com> Date: Sun, 16 Feb 2025 14:03:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=BE=E6=A2=A6=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E9=85=8D=E7=BD=AE=20=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CNAS_DBSync/frmDatabaseParams.Designer.cs | 276 +++++++++++----------- CNAS_DBSync/frmDatabaseParams.cs | 52 ++-- dll/CNAS_DBSync.exe | Bin 249856 -> 249856 bytes dll/Data/SyncInStrumentData.mes | 2 +- dll/ErrorLog/20250216.txt | 66 ++++++ 5 files changed, 234 insertions(+), 162 deletions(-) diff --git a/CNAS_DBSync/frmDatabaseParams.Designer.cs b/CNAS_DBSync/frmDatabaseParams.Designer.cs index 2df9813..cbe6c3c 100644 --- a/CNAS_DBSync/frmDatabaseParams.Designer.cs +++ b/CNAS_DBSync/frmDatabaseParams.Designer.cs @@ -156,6 +156,18 @@ this.txtKingbaselUser = new System.Windows.Forms.TextBox(); this.label45 = new System.Windows.Forms.Label(); this.label46 = new System.Windows.Forms.Label(); + this.tabDm = new System.Windows.Forms.TabPage(); + this.txtDmPort = new System.Windows.Forms.TextBox(); + this.label47 = new System.Windows.Forms.Label(); + this.btnDmConn = new System.Windows.Forms.Button(); + this.txtDmServer = new System.Windows.Forms.TextBox(); + this.txtDmHost = new System.Windows.Forms.TextBox(); + this.label48 = new System.Windows.Forms.Label(); + this.label49 = new System.Windows.Forms.Label(); + this.txtDmPwd = new System.Windows.Forms.TextBox(); + this.txtDmUser = new System.Windows.Forms.TextBox(); + this.label50 = new System.Windows.Forms.Label(); + this.label51 = new System.Windows.Forms.Label(); this.tabCnas = new System.Windows.Forms.TabPage(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.txtDBHost = new System.Windows.Forms.TextBox(); @@ -175,18 +187,6 @@ this.pnlBottom = new System.Windows.Forms.Panel(); this.btnOK = new System.Windows.Forms.Button(); this.pnlTop = new System.Windows.Forms.Panel(); - this.tabDm = new System.Windows.Forms.TabPage(); - this.btnDmConn = new System.Windows.Forms.TextBox(); - this.label47 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.txtDmServer = new System.Windows.Forms.TextBox(); - this.txtDmHost = new System.Windows.Forms.TextBox(); - this.label48 = new System.Windows.Forms.Label(); - this.label49 = new System.Windows.Forms.Label(); - this.txtDmPwd = new System.Windows.Forms.TextBox(); - this.txtDmUser = new System.Windows.Forms.TextBox(); - this.label50 = new System.Windows.Forms.Label(); - this.label51 = new System.Windows.Forms.Label(); this.pnlAll.SuspendLayout(); this.pnlCenter.SuspendLayout(); this.tabParamas.SuspendLayout(); @@ -202,11 +202,11 @@ this.tabTxt.SuspendLayout(); this.tabPostgreSql.SuspendLayout(); this.tabKingbase.SuspendLayout(); + this.tabDm.SuspendLayout(); this.tabCnas.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox1.SuspendLayout(); this.pnlBottom.SuspendLayout(); - this.tabDm.SuspendLayout(); this.SuspendLayout(); // // pnlAll @@ -1576,6 +1576,127 @@ this.label46.TabIndex = 48; this.label46.Text = "用户名:"; // + // tabDm + // + this.tabDm.Controls.Add(this.txtDmPort); + this.tabDm.Controls.Add(this.label47); + this.tabDm.Controls.Add(this.btnDmConn); + this.tabDm.Controls.Add(this.txtDmServer); + this.tabDm.Controls.Add(this.txtDmHost); + this.tabDm.Controls.Add(this.label48); + this.tabDm.Controls.Add(this.label49); + this.tabDm.Controls.Add(this.txtDmPwd); + this.tabDm.Controls.Add(this.txtDmUser); + this.tabDm.Controls.Add(this.label50); + this.tabDm.Controls.Add(this.label51); + this.tabDm.Location = new System.Drawing.Point(4, 28); + this.tabDm.Name = "tabDm"; + this.tabDm.Size = new System.Drawing.Size(968, 521); + this.tabDm.TabIndex = 10; + this.tabDm.Text = "Dm"; + this.tabDm.UseVisualStyleBackColor = true; + // + // txtDmPort + // + this.txtDmPort.Location = new System.Drawing.Point(167, 226); + this.txtDmPort.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtDmPort.Name = "txtDmPort"; + this.txtDmPort.Size = new System.Drawing.Size(472, 28); + this.txtDmPort.TabIndex = 68; + // + // label47 + // + this.label47.AutoSize = true; + this.label47.Location = new System.Drawing.Point(100, 229); + this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(62, 18); + this.label47.TabIndex = 66; + this.label47.Text = "端口:"; + // + // btnDmConn + // + this.btnDmConn.Location = new System.Drawing.Point(599, 272); + this.btnDmConn.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btnDmConn.Name = "btnDmConn"; + this.btnDmConn.Size = new System.Drawing.Size(118, 36); + this.btnDmConn.TabIndex = 69; + this.btnDmConn.Text = "测试连接"; + this.btnDmConn.UseVisualStyleBackColor = true; + this.btnDmConn.Click += new System.EventHandler(this.btnDmConn_Click); + // + // txtDmServer + // + this.txtDmServer.Location = new System.Drawing.Point(167, 90); + this.txtDmServer.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtDmServer.Name = "txtDmServer"; + this.txtDmServer.Size = new System.Drawing.Size(472, 28); + this.txtDmServer.TabIndex = 64; + // + // txtDmHost + // + this.txtDmHost.Location = new System.Drawing.Point(167, 47); + this.txtDmHost.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtDmHost.Name = "txtDmHost"; + this.txtDmHost.Size = new System.Drawing.Size(472, 28); + this.txtDmHost.TabIndex = 63; + // + // label48 + // + this.label48.AutoSize = true; + this.label48.Location = new System.Drawing.Point(100, 96); + this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label48.Name = "label48"; + this.label48.Size = new System.Drawing.Size(62, 18); + this.label48.TabIndex = 62; + this.label48.Text = "实例:"; + // + // label49 + // + this.label49.AutoSize = true; + this.label49.Location = new System.Drawing.Point(82, 53); + this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label49.Name = "label49"; + this.label49.Size = new System.Drawing.Size(80, 18); + this.label49.TabIndex = 61; + this.label49.Text = "服务器:"; + // + // txtDmPwd + // + this.txtDmPwd.Location = new System.Drawing.Point(167, 180); + this.txtDmPwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtDmPwd.Name = "txtDmPwd"; + this.txtDmPwd.Size = new System.Drawing.Size(472, 28); + this.txtDmPwd.TabIndex = 67; + // + // txtDmUser + // + this.txtDmUser.Location = new System.Drawing.Point(167, 135); + this.txtDmUser.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtDmUser.Name = "txtDmUser"; + this.txtDmUser.Size = new System.Drawing.Size(472, 28); + this.txtDmUser.TabIndex = 65; + // + // label50 + // + this.label50.AutoSize = true; + this.label50.Location = new System.Drawing.Point(100, 184); + this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(62, 18); + this.label50.TabIndex = 60; + this.label50.Text = "密码:"; + // + // label51 + // + this.label51.AutoSize = true; + this.label51.Location = new System.Drawing.Point(82, 141); + this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(80, 18); + this.label51.TabIndex = 59; + this.label51.Text = "用户名:"; + // // tabCnas // this.tabCnas.Controls.Add(this.groupBox2); @@ -1780,127 +1901,6 @@ this.pnlTop.Size = new System.Drawing.Size(992, 7); this.pnlTop.TabIndex = 2; // - // tabDm - // - this.tabDm.Controls.Add(this.btnDmConn); - this.tabDm.Controls.Add(this.label47); - this.tabDm.Controls.Add(this.button1); - this.tabDm.Controls.Add(this.txtDmServer); - this.tabDm.Controls.Add(this.txtDmHost); - this.tabDm.Controls.Add(this.label48); - this.tabDm.Controls.Add(this.label49); - this.tabDm.Controls.Add(this.txtDmPwd); - this.tabDm.Controls.Add(this.txtDmUser); - this.tabDm.Controls.Add(this.label50); - this.tabDm.Controls.Add(this.label51); - this.tabDm.Location = new System.Drawing.Point(4, 28); - this.tabDm.Name = "tabDm"; - this.tabDm.Size = new System.Drawing.Size(968, 521); - this.tabDm.TabIndex = 10; - this.tabDm.Text = "Dm"; - this.tabDm.UseVisualStyleBackColor = true; - // - // btnDmConn - // - this.btnDmConn.Location = new System.Drawing.Point(167, 226); - this.btnDmConn.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.btnDmConn.Name = "txtDmPort"; - this.btnDmConn.Size = new System.Drawing.Size(472, 28); - this.btnDmConn.TabIndex = 68; - // - // label47 - // - this.label47.AutoSize = true; - this.label47.Location = new System.Drawing.Point(100, 229); - this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label47.Name = "label47"; - this.label47.Size = new System.Drawing.Size(62, 18); - this.label47.TabIndex = 66; - this.label47.Text = "端口:"; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(599, 272); - this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.button1.Name = "btnDmConn"; - this.button1.Size = new System.Drawing.Size(118, 36); - this.button1.TabIndex = 69; - this.button1.Text = "测试连接"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.btnDmConn_Click); - // - // txtDmServer - // - this.txtDmServer.Location = new System.Drawing.Point(167, 90); - this.txtDmServer.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtDmServer.Name = "txtDmServer"; - this.txtDmServer.Size = new System.Drawing.Size(472, 28); - this.txtDmServer.TabIndex = 64; - // - // txtDmHost - // - this.txtDmHost.Location = new System.Drawing.Point(167, 47); - this.txtDmHost.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtDmHost.Name = "txtDmHost"; - this.txtDmHost.Size = new System.Drawing.Size(472, 28); - this.txtDmHost.TabIndex = 63; - // - // label48 - // - this.label48.AutoSize = true; - this.label48.Location = new System.Drawing.Point(100, 96); - this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label48.Name = "label48"; - this.label48.Size = new System.Drawing.Size(62, 18); - this.label48.TabIndex = 62; - this.label48.Text = "实例:"; - // - // label49 - // - this.label49.AutoSize = true; - this.label49.Location = new System.Drawing.Point(82, 53); - this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label49.Name = "label49"; - this.label49.Size = new System.Drawing.Size(80, 18); - this.label49.TabIndex = 61; - this.label49.Text = "服务器:"; - // - // txtDmPwd - // - this.txtDmPwd.Location = new System.Drawing.Point(167, 180); - this.txtDmPwd.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtDmPwd.Name = "txtDmPwd"; - this.txtDmPwd.Size = new System.Drawing.Size(472, 28); - this.txtDmPwd.TabIndex = 67; - // - // txtDmUser - // - this.txtDmUser.Location = new System.Drawing.Point(167, 135); - this.txtDmUser.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.txtDmUser.Name = "txtDmUser"; - this.txtDmUser.Size = new System.Drawing.Size(472, 28); - this.txtDmUser.TabIndex = 65; - // - // label50 - // - this.label50.AutoSize = true; - this.label50.Location = new System.Drawing.Point(100, 184); - this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label50.Name = "label50"; - this.label50.Size = new System.Drawing.Size(62, 18); - this.label50.TabIndex = 60; - this.label50.Text = "密码:"; - // - // label51 - // - this.label51.AutoSize = true; - this.label51.Location = new System.Drawing.Point(82, 141); - this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label51.Name = "label51"; - this.label51.Size = new System.Drawing.Size(80, 18); - this.label51.TabIndex = 59; - this.label51.Text = "用户名:"; - // // frmDatabaseParams // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); @@ -1940,14 +1940,14 @@ this.tabPostgreSql.PerformLayout(); this.tabKingbase.ResumeLayout(false); this.tabKingbase.PerformLayout(); + this.tabDm.ResumeLayout(false); + this.tabDm.PerformLayout(); this.tabCnas.ResumeLayout(false); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.pnlBottom.ResumeLayout(false); - this.tabDm.ResumeLayout(false); - this.tabDm.PerformLayout(); this.ResumeLayout(false); } @@ -2101,9 +2101,9 @@ private System.Windows.Forms.Label label45; private System.Windows.Forms.Label label46; private System.Windows.Forms.TabPage tabDm; - private System.Windows.Forms.TextBox btnDmConn; + private System.Windows.Forms.TextBox txtDmPort; private System.Windows.Forms.Label label47; - private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button btnDmConn; private System.Windows.Forms.TextBox txtDmServer; private System.Windows.Forms.TextBox txtDmHost; private System.Windows.Forms.Label label48; diff --git a/CNAS_DBSync/frmDatabaseParams.cs b/CNAS_DBSync/frmDatabaseParams.cs index bb2b180..060a5c2 100644 --- a/CNAS_DBSync/frmDatabaseParams.cs +++ b/CNAS_DBSync/frmDatabaseParams.cs @@ -266,6 +266,13 @@ namespace CNAS_DBSync syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = this.txtKingbaselPwd.Text.Trim(); syncInstrumentItem.SyncInstrumentDSInfo.Port = this.txtKingbaselPort.Text.Trim(); break; + case DataSourceType.Dm: + syncInstrumentItem.SyncInstrumentDSInfo.Host = this.txtDmHost.Text.Trim(); + syncInstrumentItem.SyncInstrumentDSInfo.ServerName = this.txtDmServer.Text.Trim(); + syncInstrumentItem.SyncInstrumentDSInfo.UserId = this.txtDmUser.Text.Trim(); + syncInstrumentItem.SyncInstrumentDSInfo.UserPwd = this.txtDmPwd.Text.Trim(); + //syncInstrumentItem.SyncInstrumentDSInfo.Port = this.tx.Text.Trim(); + break; default: syncInstrumentItem.SyncInstrumentDSInfo.Path = this.txtInportExcel.Text.Trim(); syncInstrumentItem.SyncInstrumentDSInfo.Host = ""; @@ -1298,33 +1305,12 @@ namespace CNAS_DBSync // MessageBox.Show("连接失败!"); } - private void btnDmConn_Click(object sender, EventArgs e) - { - if (this.txtDmHost.Text.Trim() == "" || this.txtDmServer.Text.Trim() == "" || - this.txtDmUser.Text.Trim() == "" || this.btnDmConn.Text.Trim() == "") - { - MessageBox.Show("请填写相关连接信息。"); - return; - } - - InstrumentDataSourceInfo dbinfo = new InstrumentDataSourceInfo(); - dbinfo.Host = this.txtDmHost.Text.Trim(); - dbinfo.ServerName = this.txtDmServer.Text.Trim(); - dbinfo.UserId = this.txtDmUser.Text.Trim(); - dbinfo.UserPwd = this.txtDmPwd.Text.Trim(); - dbinfo.Port = this.btnDmConn.Text.Trim(); - - if (new DmServerInstrumentData(dbinfo, new object[] { "", "", "" }).TestSQLServerLink()) - MessageBox.Show("连接成功!"); - else - MessageBox.Show("连接失败!"); - } private bool CheckDmControl() { if (this.txtDmHost.Text.Trim() != "" || this.txtDmServer.Text.Trim() != "" || this.txtDmUser.Text.Trim() != "" || this.txtDmPwd.Text.Trim() != "" || - this.btnDmConn.Text.Trim() != "") + this.txtDmPort.Text.Trim() != "") return false; else return true; @@ -1336,9 +1322,29 @@ namespace CNAS_DBSync this.txtDmServer.Text = ""; this.txtDmUser.Text = ""; this.txtDmPwd.Text = ""; - this.btnDmConn.Text = ""; + this.txtDmPort.Text = ""; } + private void btnDmConn_Click(object sender, EventArgs e) + { + if (this.txtDmHost.Text.Trim() == "" || this.txtDmServer.Text.Trim() == "" || + this.txtDmUser.Text.Trim() == "" || this.txtDmPort.Text.Trim() == "") + { + MessageBox.Show("请填写相关连接信息。"); + return; + } + InstrumentDataSourceInfo dbinfo = new InstrumentDataSourceInfo(); + dbinfo.Host = this.txtDmHost.Text.Trim(); + dbinfo.ServerName = this.txtDmServer.Text.Trim(); + dbinfo.UserId = this.txtDmUser.Text.Trim(); + dbinfo.UserPwd = this.txtDmPwd.Text.Trim(); + dbinfo.Port = this.txtDmPort.Text.Trim(); + + if (new DmServerInstrumentData(dbinfo, new object[] { "", "", "" }).TestSQLServerLink()) + MessageBox.Show("连接成功!"); + else + MessageBox.Show("连接失败!"); + } } } diff --git a/dll/CNAS_DBSync.exe b/dll/CNAS_DBSync.exe index b25f3b4a466fbbd8f5ff03663003f05adec11b6b..3702ca5923bd6e0112540c808a6b959b0c7176c9 100644 GIT binary patch delta 22521 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

W~Czght3l4yuSlq>ns(|`#W%5 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 djb$kBX4&g@P`%}(v<#