發表文章

.net Crystal Report dynamic columns

圖片
  前言:  聽說Crystal Report 官方已經很久沒有維護了 公司在用的版本 也都找不到文件 ((而且公司用的是VB 想到頭就好痛QAQ 正文: 最近在寫一個需求 有一個可選欄位(動態)的Table 要用CR呈現資料 想呈現的樣子如圖: 但使用者可以 任意選擇需要的欄位 例如: 且單個欄位資料可能有 多行 如果用visual studio設計工具直接拉 可能很難達成以上需求 如果全部用 RAS (Report Application Server) API 寫是可以達到目的 但用程式layout 也是有些麻煩 於是我的腦袋瓜想到把兩個摻在一起做撒尿牛丸 把元件排用設計工具layout完成後 在用RAS API動態設定欄位 在開始之前先說明一下 本文使用環境為 .Net Framework 4.7.2 Crystal Report for .Net 13.0.4000  UI大概長這樣 資料會用System.DataSet傳給報表 所以我們要新增資料集.xsd檔 設計如下: 我們有 test 這個table , 裡面有 4 個欄位分別為 col1~4, 型別都是 string 接著到report的設計頁面用資料庫專家把他加入 然後把report的畫面拉成下圖 接著回到winform 我們想要按下generate後 根據CheckedListBox勾選的內容 動態調整欄位長寬位置等 部分程式如下 執行結果如下 附上github連結 https://github.com/aps32221/CRDynamicMultipleColumn 有疑問或錯誤的話歡迎指教

[c#筆記]所以為甚麼T[]有Length屬性HashSet<T>卻沒有

圖片
  前言:  最近面試一直撞牆 打工又不能停  搞得身心俱疲((這不是不寫筆記藉口 草稿夾那4篇啥時要解決 (笑 但原地踏步是不行的 之前報名某C# backend培訓計畫 在HR面試被刷掉了QQ 想說那我就自學C#好了 然後就又開始刷題地獄... 正文:  近日在練習C# 的各種 container 某天在刷 LeetCode 26.  的時候 我: 也太簡單了八www, 丟到set再走訪寫回原本的array就好了, 時間複雜度 O(n) 解決 開心按下run結果: does not contain a definition for 'Length' and...

Docker image for Selenium grid server 簡易介紹

前言:  最近刷題刷的我豪崩潰, 所以沒有前言  正文:  要做e2e測試要找特定版本的瀏覽器們  或是  需要跑多個爬蟲任務  這個 docker image 可能可以滿足你的需求 

python selenium 爬蟲文字登入驗證碼處理

圖片
 前言: 我不喜歡說爬蟲這個詞, 講"自動化測試"不是帥多了嗎(笑 雖然爬蟲案子錢都不多, 但不用動甚麼腦子, 做起來很愉也很快, 是個不錯的選擇 正文: 首先, 目標網頁是 https://csms.mohw.gov.tw/lcms/ 我們用到的package有 : selenium opencv-python numpy ddddocr

佈署ReactJS App到 App Engine

圖片
前言廢話: 最近需要佈署React App 到 Google App Engine 過程還遇到蠻多問題的 來寫個筆記壓壓驚 App Engine 有兩種環境 分別為 standard 和 flexible standard有免費使用額度 用完才會開始計費  flexible則沒有這個優惠 兩種環境的比較如下圖

[Python] 重新開始學Python : 目錄

前言: 以前常常會用沒接觸過的語言開發一些小程式,但是到頭來發現,對語言的特性,又或某些概念是不了解的,無法有自信的回答別人的問題或是說明自己學到的東西,於是決定跟著官方的教學,以筆記的方式將自己學到的重點記錄下來。 使用Python 直譯器 (Using the Python Interpreter)

[Python] 使用Python 直譯器 (Using the Python Interpreter)

呼叫直譯器: 通常在安裝好Python且設定好環境後的任何系統下,在命令列輸入 python 就可以呼叫直譯器 如果要關閉,可以使用 quit() 或是輸入EOF(end of file)字元 (( 在 Unix 為 Ctrl + D Window 為 Ctrl + Z 第二種方式可以使用 python -c command command 為要執行的指令 例如說我想要印一個list裡面包含整數0~9 可以這樣寫 python -c "print([x for x in range(0, 10)])" 執行結果為 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 或是你想要使用某些module 可以使用 python -m module module 為想要使用的module name 使用方法可以去參考你想使用的module 的官方文件會有一欄Command-Line Interface 例如我想用timeit 這個 module timeit的Command-Line Interface 然後測試String.find() 找某個字元的速度 可以這樣寫 python -m timeit -s 'text="sample string";char="g"' 'text.find(char)' 執行的結果為 50000000 loops, best of 5: 6.31 nsec per loop 參數傳遞: 若要存取在script 後面跟著的參數 可以 import sys 參數會被轉成list並指派給sys.argv 當沒指令或參數時 sys.argv[0] 為空字串 直譯器和環境: 原始碼的編碼 在預設情況下 python的原始碼檔案編碼為UTF-8 若要使用其他編碼可以在檔案 第一行 中加入 # -*- coding: encoding -*- encoding 可以替換成任意python支援的編解碼器 例如使用windows-1252 encoding 可以這樣寫 # -*- coding: cp1252 -*- 唯一一個例外可以不用寫在第一行 就是...