1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
#region
 
using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.Common;
using CSFrameworkV5.Library;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
 
#endregion
 
namespace CSFrameworkV5.SystemModule
{
    /// <summary>
    ///     字段名对应的中文名称管理
    /// </summary>
    public partial class frmFieldNameMgr : frmBase
    {
        private bllFieldNameDefs _BLLInstance;
        private string _DBID = "";
        private string _TableName = "";
 
        public frmFieldNameMgr()
        {
            InitializeComponent();
        }
 
        private void btnDel_Click(object sender, EventArgs e)
        {
            if (gvSummary.FocusedRowHandle >= 0)
            {
                if (Msg.AskQuestion("确定要删除当前记录吗?"))
                    try
                    {
                        frmWaitingEx.ShowMe(this);
 
                        var row = gvSummary.GetFocusedDataRow();
                        var key =
                            ConvertEx.ToString(
                                row[sys_FieldNameDefs.__KeyName]);
                        if (_BLLInstance.Delete(key)) //从物理表删除
                        {
                            gvSummary.DeleteRow(gvSummary
                                .FocusedRowHandle); //删除表格中缓存的记录
                            (gcSummary.DataSource as DataTable).AcceptChanges();
                        }
                    }
                    finally
                    {
                        frmWaitingEx.HideMe(this);
                    }
            }
            else
            {
                Msg.Warning("没有选择记录!");
            }
        }
 
        private void btnEmpty_Click(object sender, EventArgs e)
        {
            txt_DisplayName.Text = "";
            txt_FieldName.Text = "";
            txt_TableName.Text = "";
            txt_TableName.Focus();
        }
 
        private void btnFillCaption_Click(object sender, EventArgs e)
        {
            var dt = gcSummary.DataSource as DataTable;
 
            foreach (DataRow R in dt.Rows)
            {
                var caption = R[sys_FieldNameDefs.DisplayName].ToStringEx();
                var field = R[sys_FieldNameDefs.FieldName].ToStringEx();
                var db = R[sys_FieldNameDefs.DBName].ToStringEx();
 
                if (string.IsNullOrEmpty(caption) ||
                    caption.ToLower() == field.ToLower())
                    //获取字段标题
                    R[sys_FieldNameDefs.DisplayName] =
                        _BLLInstance.GetCaption(db, field);
            }
        }
 
        private void btnQuery_Click(object sender, EventArgs e)
        {
            try
            {
                frmWaitingEx.ShowMe(this);
                //搜索数据     
                var dt = _BLLInstance.Search(txt_TableName.Text,
                    txt_FieldName.Text, txt_DisplayName.Text);
                gcSummary.DataSource = dt;
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
 
            if (gvSummary.RowCount == 0 && txt_FieldName.Text == "" &&
                txt_DisplayName.Text == "")
            {
                Msg.Warning("当前表没有字段资料,请确认表名是否输入正确,或者同步表结构!");
                btnSync.Focus();
            }
        }
 
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                frmWaitingEx.ShowMe(this);
 
                var data = (gcSummary.DataSource as DataTable).GetChanges();
                if (data != null)
                {
                    _BLLInstance.Update(data);
                    (gcSummary.DataSource as DataTable).AcceptChanges();
                    gcSummary.RefreshDataSource();
                    Msg.ShowInformation("保存成功!");
                }
                else
                {
                    Msg.Warning("您没有修改数据!");
                }
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
        }
 
        private void btnSync_Click(object sender, EventArgs e)
        {
            Assertion.AssertEditorEmpty(txt_DBs, "请选择数据库!", true);
            Assertion.AssertEditorEmpty(txt_TableNameSync, "请输入表名!", true);
 
            var msg = "确定要同步表结构数据吗? 注:保留中文字段描述";
 
            if (Msg.AskQuestion(msg))
                try
                {
                    frmWaitingEx.ShowMe(this);
 
                    //同步表名
                    var dt = _BLLInstance.SyncTable(txt_DBs.Text,
                        txt_TableNameSync.Text);
 
                    if (dt.Rows.Count > 0)
                    {
                        gcSummary.DataSource = dt;
                        Msg.ShowInformation("同步完成,共生成" +
                                            dt.Rows.Count.ToStringEx() +
                                            "条记录!");
                    }
                    else
                    {
                        Msg.Warning("资料表不存在!");
                    }
                }
                catch (Exception ex)
                {
                    Msg.ShowError(ex.Message);
                }
                finally
                {
                    frmWaitingEx.HideMe(this);
                }
        }
 
        /// <summary>
        ///     由外部程序调用打开窗体
        /// </summary>
        /// <param name="ownerForm">父级窗体</param>
        /// <param name="dataSetID">当前数据库</param>
        /// <param name="dataSetDBName">当前数据库</param>
        /// <param name="tableName">表名</param>
        /// <param name="loginAccount">登录账号</param>
        /// <param name="loginPwd">登录密码(明文密码)</param>
        /// <param name="isExternalCall">是否外部调用</param>
        public static void Exceute(
            Form ownerForm,
            string dataSetID,
            string dataSetDBName,
            string tableName,
            string loginAccount,
            string loginPwd,
            bool isExternalCall)
        {
            //外部调用传入登录信息
            if (isExternalCall)
            {
                KeyProvider.Default =
                    new KeyProviderRijndael("%SaFz$^p", "3aW%^&Fd");
 
                var user = new Loginer();
                user.Account = loginAccount;
                user.Password = KeyProvider.Default.Encrypt(loginPwd); //test
                user.AccountName = loginAccount;
                user.DBID = dataSetID;
                user.DBName = dataSetDBName;
                user.LoginAuthType = LoginAuthType.LocalSystemAuth;
                user.LoginTime = DateTime.Now;
 
                Loginer.CurrentUser = user;
 
                //外部调用,要初始化连接以及加载账套!
                if (BridgeFactory.InitializeBridge())
                {
                    Loginer.CurrentUser = user;
 
                    //未登陆:加载系统参数配置
                    var dtConfig = CommonData.GetSystemSettings4Program("", "");
                    SystemSettings.Current.Load(dtConfig);
                }
                else
                {
                    throw new CustomException("初始化后连接连接策略失败!");
                }
            }
 
            var form = new frmFieldNameMgr();
            form.Owner = ownerForm;
            form.ShowInTaskbar = true;
            form.Init(dataSetDBName, tableName);
            frmWaitingEx.HideMe(form);
            form.ShowDialog();
        }
 
        private void frmFieldNameMgr_Load(object sender, EventArgs e)
        {
            CCursor.ShowDefaultCursor();
 
            frmGridCustomize.RegisterGrid(gvSummary);
        }
 
        private void gcSummary_Click(object sender, EventArgs e)
        {
        }
 
        /// <summary>
        ///     外部调用初始化窗体
        /// </summary>
        /// <param name="DBName"></param>
        /// <param name="tableName"></param>
        private void Init(string DBName, string tableName)
        {
            _BLLInstance = new bllFieldNameDefs();
 
            _DBID = DBName;
            _TableName = tableName;
 
            //加载数据库
            LoadDB();
 
            if (!string.IsNullOrEmpty(_DBID)) txt_DBs.EditValue = _DBID;
 
            //加载数据表
            if (!string.IsNullOrEmpty(DBName)) LoadTable(DBName);
 
            if (!string.IsNullOrEmpty(_TableName))
            {
                txt_TableName.EditValue = _TableName;
                txt_TableNameSync.EditValue = _TableName;
            }
        }
 
        /// <summary>
        ///     加载系统数据库所在服务器的全部数据库清单
        /// </summary>
        /// <param name="defaultDB"></param>
        private void LoadDB()
        {
            txt_DBs.Properties.DisplayMember = "DBName";
            txt_DBs.Properties.ValueMember = "DBName";
            txt_DBs.Properties.DataSource = _BLLInstance.GetDataBaseList();
        }
 
        private void LoadTable(string DBName)
        {
            if (ConvertEx.ToString(txt_TableNameSync.Tag) != DBName)
            {
                txt_TableNameSync.Properties.DisplayMember = "TableName";
                txt_TableNameSync.Properties.ValueMember = "TableName";
                txt_TableNameSync.Properties.DataSource =
                    _BLLInstance.GetTableNames(DBName);
                txt_TableNameSync.Tag = DBName; //标记
            }
        }
 
        private void txt_DBs_EditValueChanged(object sender, EventArgs e)
        {
            txt_TableNameSync.Properties.DataSource = null;
            txt_TableNameSync.EditValue = null;
        }
 
        private void txt_TableNameSync_EditValueChanged(object sender,
            EventArgs e)
        {
            //清空记录
            if (gcSummary.DataSource != null &&
                gcSummary.DataSource is DataTable)
            {
                var dt = gcSummary.DataSource as DataTable;
                dt.Rows.Clear();
                dt.AcceptChanges();
                gcSummary.RefreshDataSource();
            }
        }
 
        private void txt_TableNameSync_QueryPopUp(object sender,
            CancelEventArgs e)
        {
            if (txt_DBs.Text != "")
                LoadTable(txt_DBs.Text);
            else
                txt_DBs.Focus();
        }
    }
}