2021年9月12日 星期日
Try..Except..End 例外狀況處理
2021年9月2日 星期四
Delphi DataSet和JSON互轉函式
一、DataSet轉JSON
//1)資料集轉換為JSON字串://需USES System.JSON;
二、JSON轉DataSet
//2)JSON字串轉換為資料集:Json To ClientDataset
2021年9月1日 星期三
截取 ADO 錯誤訊息
const Error: Error; var EventStatus: TEventStatus; const Command: _Command; const Recordset: _Recordset);
begin
//ADO 錯誤訊息
if EventStatus=esErrorsOccured then
begin
ShowMessage(Error.Description);
end;
end;
組件資源引用
![]() |
C:\Program Files (x86)\Embarcadero\Studio\17.0\source\Property Editors
2021年8月27日 星期五
[^] (萬用字元 - 不相符的字元) (Transact-SQL)
[^] (萬用字元 - 不相符的字元) (Transact-SQL)
比對不在方括弧 [^] 之間指定範圍或集合內的任何單一字元。 這些萬用字元可用於包含模式比對 (如 LIKE 和 PATINDEX) 的字串比較中。
範例
簡單範例
下列範例會使用 [^] 運算子來尋找 Contact 資料表中前 5 個名字開頭都是 Al 且名字第三個字母不是 a 的人員。
-- Uses AdventureWorks SELECT TOP 5 FirstName, LastName FROM Person.Person WHERE FirstName LIKE 'Al[^a]%';
以下為結果集。
FirstName LastName --------- -------- Alex Adams Alexandra Adams Allison Adams Alisha Alan Alexandra Alexander
搜尋字元範圍
萬用字元集合可以包含單一字元或字元範圍,以及字元和範圍的組合。 下列範例會使用 [^] 運算子來尋找開頭並非字母或數字的字串。
SELECT [object_id], OBJECT_NAME(object_id) AS [object_name], name, column_id FROM sys.columns WHERE name LIKE '[^0-9A-z]%';
以下為結果集。
object_id object_name name column_id --------- ----------- ---- --------- 1591676718 JunkTable _xyz 1
轉貼至: https://docs.microsoft.com/zh-tw/sql/t-sql/language-elements/wildcard-character-s-not-to-match-transact-sql?view=sql-server-ver15
2021年8月26日 星期四
[] (萬用字元-字元 (s) 以符合) (transact-sql)
符合方括號 [ ] 之間所指定之指定範圍或集合內的任何單一字元。 這些萬用字元可用於包含模式比對 (如 LIKE 和 PATINDEX) 的字串比較中。
範例
簡單範例
下列範例會傳回開頭為字母 m 的名稱。 [n-z] 會指定第二個字母必須是範圍從 n 到 z 中的某一個字母。 百分比萬用字元 % 允許開頭為字元 3 的任何字元或沒有字元。 model 和 msdb 資料庫符合此原則。 master 資料庫不符合準則,並會從結果集中加以排除。
SELECT name FROM sys.databases WHERE name LIKE 'm[n-z]%';
以下為結果集。
name ----- model msdb
使用結合範圍和單一字元的集合
萬用字元集合可同時包含單一字元和範圍。 下列範例會使用 [] 運算子來尋找開頭為數字或一系列特殊字元的字串。
SELECT [object_id], OBJECT_NAME(object_id) AS [object_name], name, column_id FROM sys.columns WHERE name LIKE '[0-9!@#$.,;_]%';
以下為結果集。
object_id object_name name column_id --------- ----------- ---- --------- 615673241 vSalesPersonSalesByFiscalYears 2002 5 615673241 vSalesPersonSalesByFiscalYears 2003 6 615673241 vSalesPersonSalesByFiscalYears 2004 7 1591676718 JunkTable _xyz 1
轉貼至: https://docs.microsoft.com/zh-tw/sql/t-sql/language-elements/wildcard-character-s-to-match-transact-sql?view=sql-server-ver15
2021年8月19日 星期四
2021年8月17日 星期二
2021年8月9日 星期一
須臾
須臾
維基百科,自由的百科全書
須臾,指很短的時間。早見於《荀子・勸學篇第一》:「吾嘗終日而思,不如須臾之所學也。」(我整天思考,也不及片刻學習的得著。)
漢字翻譯佛教經典時,則把時間單位 muhūrta 譯作須臾。根據佛教《僧祇律》中記載:「剎那者為一念, 二十念為一瞬, 二十瞬為一彈指,二十彈指為一羅預, 二十羅預為一須臾, 一日一夜為三十須臾。」所以一須臾等於0.8小時,換算為48分鐘或2880秒。
後來,又有某些書籍將其混入詞頭中,用來表達10^{{-15}},但現在更常使用「飛」或「飛母托」(相當於歐文的前輟 femto-),如 femtosecond 一般譯作「飛秒」。
轉貼自: https://zh.wikipedia.org/wiki/%E9%A0%88%E8%87%BE
2021年6月20日 星期日
Windows Task Scheduler 工作排程,程式中使用CreateOleObject操作Excel,出現錯誤訊息
Windows Task Scheduler 工作排程,程式中使用CreateOleObject操作Excel,出現錯誤訊息
EOleException
The file name or path does not exist.
The file is being used by another program.
The workbook you are trying to save has the same name as a currently open workbook
2021年5月3日 星期一
Excel Sheet Save as HTML File
vProcedureData:OleVariant;
i, iTitleLine, iSheetIndex, iRowCount, iColCount:Integer;
sSampleFile, sFileAlias, sFileName, sBeginCell, sEndCell, sFormulaBeginCell, sFormulaEndCell:String;
sRange, sSheetName:String;
begin
Result := '';
vProcedureData := UnitLib.fn_Get_Data_Array_From_Attach_Procedure;
iTitleLine := DM1.adoAutoMail.FieldByName('TitleLine').AsInteger;
sSampleFile := DM1.adoAutoMail.FieldByName('SampleFile').AsString;
sFileAlias := UnitLib.fn_Get_AutoMail_FieldValue('FileAlias');
iSheetIndex := DM1.adoAutoMail.FieldByName('SheetIndex').AsInteger;
//
XLApp := CreateOleObject('Excel.Application');
try
XLApp.Visible := False;
XLApp.DisplayAlerts := False; //關掉警告訊息
XLApp.WorkBooks.Open(sSampleFile);
vWorkBook := XLApp.Workbooks[1];
Sheet := vWorkBook.Worksheets[iSheetIndex];
//
sSheetName := Sheet.Name;
iRowCount := DM1.adoAttach_Procedure.RecordCount;
iColCount := DM1.adoAttach_Procedure.FieldCount;
sBeginCell := RefToCell(iTitleLine+1, 1);
sEndCell := RefToCell(iTitleLine+iRowCount+1, iColCount);
Sheet.Range[sBeginCell, sEndCell].Value := vProcedureData;
//SubTotal Row
for i := 0 to iColCount-1 do
begin
if fn_IsNumericField(DM1.adoAttach_Procedure.Fields[i]) then
begin
sBeginCell := RefToCell(iTitleLine+iRowCount+1, i+1);
sEndCell := RefToCell(iTitleLine+iRowCount+1, i+1);
sFormulaBeginCell := RefToCell(iTitleLine+1, i+1);
sFormulaEndCell := RefToCell(iTitleLine+iRowCount, i+1);
Sheet.Range[sBeginCell, sEndCell].Formula := '=SUM('+sFormulaBeginCell+':'+sFormulaEndCell+')';
end;
end;
//Save as Xlsx
sFileName := ChangeFileExt(sFileAlias, '.xlsx'); //xlOpenXMLWorkbook(51) Xlsx Format / xlHtml
vWorkBook.SaveAs(sFileName);
Result := sFileName;
//Save Sheet to Html
sFileName := ChangeFileExt(sFileAlias, '.html');
sBeginCell := RefToCell(1, 1);
sEndCell := RefToCell(iTitleLine+iRowCount+1, iColCount);
sRange := sBeginCell+':'+sEndCell;
vWorkBook.PublishObjects.Add(xlSourceRange, sFileName, sSheetName, sRange, xlHtmlStatic).Publish(True);
finally
if not VarIsEmpty(XLApp) then
begin
vWorkBook.Close;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Application.ProcessMessages;
end;
end;
end;
2021年4月22日 星期四
Delphi Ole excel container, Save Xlsx file
uses ComObj, Excel;
var Excel: OleVariant;
Excel := CreateOleObject('EXCEL.Application');
Excel.Application.Workbooks.Add;
Excel.Application.Workbooks[1].SaveAs('c:\test.xlsx', xlWorkbookDefault); // or xlOpenXMLWorkbook (51)
Excel.Application.Quit;
-----------------------------------------
unit Excel;
interface
// originally from Excel97.pas
// XlFileFormat constants
XlFileFormat = TOleEnum;
const
xlAddIn = $00000012;
xlCSV = $00000006;
xlCSVMac = $00000016;
xlCSVMSDOS = $00000018;
xlCSVWindows = $00000017;
xlDBF2 = $00000007;
xlDBF3 = $00000008;
xlDBF4 = $0000000B;
xlDIF = $00000009;
xlExcel2 = $00000010;
xlExcel2FarEast = $0000001B;
xlExcel3 = $0000001D;
xlExcel4 = $00000021;
xlExcel5 = $00000027;
xlExcel7 = $00000027;
xlExcel9795 = $0000002B;
xlExcel4Workbook = $00000023;
xlIntlAddIn = $0000001A;
xlIntlMacro = $00000019;
xlWorkbookNormal = $FFFFEFD1;
xlSYLK = $00000002;
xlTemplate = $00000011;
xlCurrentPlatformText = $FFFFEFC2;
xlTextMac = $00000013;
xlTextMSDOS = $00000015;
xlTextPrinter = $00000024;
xlTextWindows = $00000014;
xlWJ2WD1 = $0000000E;
xlWK1 = $00000005;
xlWK1ALL = $0000001F;
xlWK1FMT = $0000001E;
xlWK3 = $0000000F;
xlWK4 = $00000026;
xlWK3FM3 = $00000020;
xlWKS = $00000004;
xlWorks2FarEast = $0000001C;
xlWQ1 = $00000022;
xlWJ3 = $00000028;
xlWJ3FJ3 = $00000029;
xlExcel12 =50;
xlExcel8 = 56;
xlHtml = 44;
xlOpenXMLAddIn = 55;
xlOpenXMLTemplate = 54;
xlOpenXMLTemplateMacroEnabled = 53;
xlOpenXMLWorkbook = 51;
xlOpenXMLWorkbookMacroEnabled = 52;
xlTemplate8 = 17;
xlUnicodeText = 42;
xlWebArchive = 45;
xlWorkbookDefault = 51;
xlXMLSpreadsheet = 46;
implementation
end.
XlFileFormat 枚举 (Excel)
指定保存工作表时的文件格式。
| 名称 | 值 | 说明 | 扩展名 |
|---|---|---|---|
| xlAddIn | 18 | Microsoft Excel 97-2003 外接程序 | *.xla |
| xlAddIn8 | 18 | Microsoft Excel 97-2003 外接程序 | *.xla |
| xlCSV | 6 | CSV | *.csv |
| xlCSVMac | 22 | Macintosh CSV | *.csv |
| xlCSVMSDOS | 24 | MSDOS CSV | *.csv |
| xlCSVUTF8 | 62 | UTF8 CSV | *.csv |
| xlCSVWindows | 23 | Windows CSV | *.csv |
| xlCurrentPlatformText | -4158 | 当前平台文本 | *.txt |
| xlDBF2 | 7 | Dbase 2 格式 | *.dbf |
| xlDBF3 | 8 | Dbase 3 格式 | *.dbf |
| xlDBF4 | 11 | Dbase 4 格式 | *.dbf |
| xlDIF | 9 | 数据交换格式 | *.dif |
| xlExcel12 | 50 | Excel 二进制工作簿 | *.xlsb |
| xlExcel2 | 16 | Excel 版本 2.0 (1987) | *.xls |
| xlExcel2FarEast | 27 | Excel 版本 2.0 中文 (1987) | *.xls |
| xlExcel3 | 29 | Excel 版本 3.0 (1990) | *.xls |
| xlExcel4 | 33 | Excel 版本 4.0 (1992) | *.xls |
| xlExcel4Workbook | 35 | Excel 版本 4.0 工作簿格式 (1992) | *.xlw |
| xlExcel5 | 39 | Excel 版本 5.0 (1994) | *.xls |
| xlExcel7 | 39 | Excel 95(版本 7.0) | *.xls |
| xlExcel8 | 56 | Excel 97-2003 工作簿 | *.xls |
| xlExcel9795 | 43 | Excel 版本 95 和 97 | *.xls |
| xlHtml | 44 | HTML 格式 | .htm;.html |
| xlIntlAddIn | 26 | 国际外接程序 | 无文件扩展名 |
| xlIntlMacro | 25 | 国际宏 | 无文件扩展名 |
| xlOpenDocumentSpreadsheet | 60 | OpenDocument 电子表格 | *.ods |
| xlOpenXMLAddIn | 55 | Open XML 外接程序 | *.xlam |
| xlOpenXMLStrictWorkbook | 61 (&H3D) | Strict Open XML 文件 | *.xlsx |
| xlOpenXMLTemplate | 54 | Open XML 模板 | *.xltx |
| xlOpenXMLTemplateMacroEnabled | 53 | 启用 Open XML 模板宏 | *.xltm |
| xlOpenXMLWorkbook | 51 | Open XML 工作簿 | *.xlsx |
| xlOpenXMLWorkbookMacroEnabled | 52 | 启用 Open XML 工作簿宏 | *.xlsm |
| xlSYLK | 2 | 符号链接格式 | *.slk |
| xlTemplate | 17 | Excel 模板格式 | *.xlt |
| xlTemplate8 | 17 | 模板 8 | *.xlt |
| xlTextMac | 19 | Macintosh 文本 | *.txt |
| xlTextMSDOS | 21 | MSDOS 文本 | *.txt |
| xlTextPrinter | 36 | 打印机文本 | *.prn |
| xlTextWindows | 20 | Windows 文本 | *.txt |
| xlUnicodeText | 42 | Unicode 文本 | 无文件扩展名;*.txt |
| xlWebArchive | 45 | Web 档案 | .mh;.mhtml |
| xlWJ2WD1 | 14 | 日语 1-2-3 | *.wj2 |
| xlWJ3 | 40 | 日语 1-2-3 | *.wj3 |
| xlWJ3FJ3 | 41 | 日语 1-2-3 格式 | *.wj3 |
| xlWK1 | 5 | Lotus 1-2-3 格式 | *.wk1 |
| xlWK1ALL | 31 | Lotus 1-2-3 格式 | *.wk1 |
| xlWK1FMT | 30 | Lotus 1-2-3 格式 | *.wk1 |
| xlWK3 | 15 | Lotus 1-2-3 格式 | *.wk3 |
| xlWK3FM3 | 32 | Lotus 1-2-3 格式 | *.wk3 |
| xlWK4 | 38 | Lotus 1-2-3 格式 | *.wk4 |
| xlWKS | 4 | Lotus 1-2-3 格式 | *.wks |
| xlWorkbookDefault | 51 | 默认工作簿 | *.xlsx |
| xlWorkbookNormal | -4143 | 常规工作簿 | *.xls |
| xlWorks2FarEast | 28 | Microsoft Works 2.0 两端对齐格式 | *.wks |
| xlWQ1 | 34 | Quattro Pro 格式 | *.wq1 |
| xlXMLSpreadsheet | 46 | XML 电子表格 | *.xml |





