private void 別檔案ToolStripMenuItem_Click(object sender, EventArgs e) { FolderBrowserDialog dirDlg = new FolderBrowserDialog(); dirDlg.ShowDialog(); var dir = dirDlg.SelectedPath; ProgressDialog pDialog = new ProgressDialog(); pDialog.Title = "SQL物件轉出"; pDialog.DoWork += delegate(object dialog, DoWorkEventArgs dwe) { var i = 1; foreach (DataGridViewRow row in DGVObject.Rows) { var sqlObj = (SqlObject)row.DataBoundItem; if (!string.IsNullOrEmpty(sqlObj.Definition)) { SqlDefinition.ExportDefinitionToFile(CurrDBConnInfo, sqlObj.Name, $"{dir}\\{sqlObj.Name}.sql"); } pDialog.ReportProgress(i++); } }; pDialog.Completed += delegate(object dialog, RunWorkerCompletedEventArgs re) { MessageBox.Show("完成"); }; pDialog.Run(DGVObject.Rows.Count); }
private void contextMenuStrip2_Opening(object sender, CancelEventArgs e) { var sqlObj = (SqlObject)DGVObject.CurrentRow.DataBoundItem; TsmiCompare.DropDownItems.Clear(); TsmiSync.DropDownItems.Clear(); foreach (var info in DBConnInfoList.Where(x => x != CurrDBConnInfo)) { var miCompare = new ToolStripMenuItem(info.FullName); //比對 miCompare.Click += (obj, args) => { var sourFile = SqlDefinition.ExportDefinitionToTempCompareFile(CurrDBConnInfo, sqlObj.Name); var trgtFile = SqlDefinition.ExportDefinitionToTempCompareFile(info, sqlObj.Name); var cmd = $@"{System.IO.Directory.GetCurrentDirectory()}\Tools\WinMergeU.exe ""{sourFile}"" ""{trgtFile}"""; CommandUtils.ExecuteCommandSync(cmd); }; TsmiCompare.DropDownItems.Add(miCompare); var miSync = new ToolStripMenuItem(info.FullName); miSync.Click += (obj, args) => { if (MessageBox.Show($"是否確定同步物件[{sqlObj.Name}]從{CurrDBConnInfo.FullName}-->{info.FullName}", "物件同步", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } var rslt = SqlDefinition.SyncObj(CurrDBConnInfo, info, sqlObj.Name); MessageBox.Show(rslt != string.Empty ? rslt : "同步成功"); }; TsmiSync.DropDownItems.Add(miSync); } }
private void 合併為單檔ToolStripMenuItem_Click(object sender, EventArgs e) { var exportStrs = new List <string>(); SaveFileDialog saveFileDlg = new SaveFileDialog(); saveFileDlg.Filter = "SQL|*.sql"; saveFileDlg.Title = "轉出SQL檔案"; saveFileDlg.ShowDialog(); if (string.IsNullOrEmpty(saveFileDlg.FileName)) { return; } ProgressDialog pDialog = new ProgressDialog(); pDialog.Title = "SQL物件轉出"; pDialog.DoWork += delegate(object dialog, DoWorkEventArgs dwe) { var i = 1; foreach (DataGridViewRow row in DGVObject.Rows) { var sqlObj = (SqlObject)row.DataBoundItem; if (!string.IsNullOrEmpty(sqlObj.Definition)) { exportStrs.Add($"if exists(select 1 from sys.sysobjects where name ='{sqlObj.Name}' and Type='{sqlObj.Type}')"); exportStrs.Add($"Drop {sqlObj.TypeFullName} [{sqlObj.Name}]"); exportStrs.Add("GO"); exportStrs.Add(SqlDefinition.GetDefinition(CurrDBConnInfo, sqlObj.Name)); exportStrs.Add("GO"); exportStrs.Add(""); } pDialog.ReportProgress(i++); } }; pDialog.Completed += delegate(object dialog, RunWorkerCompletedEventArgs re) { var dir = Path.GetDirectoryName(saveFileDlg.FileName); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(saveFileDlg.FileName, string.Join(Environment.NewLine, exportStrs)); MessageBox.Show("完成"); }; pDialog.Run(DGVObject.Rows.Count); }