跳到主要內容

發表文章

目前顯示的是 2022的文章

SQL Server 使用者定義的資料表錯誤 User-Defined Table Type Error

最近有個新專案,由於資料表的欄位很多,還要Call Stored Procedure,所以請DBA將資料表做成User-Defined Table Type,沒想到我呼叫Stored Procedure更新時發生一個錯誤:    將 nvarchar 資料類型轉換成 datetime 資料類型時,產生超出範圍的值。 資料表值參數 "@MyUDT" 的資料不符合參數的資料表類型。SQL Server 錯誤為: 242,狀態: 3 陳述式已經結束。   使用User-Defined Table Type(以下簡稱UDT)做為參數非常簡單大概就是 SqlParameter parameter = new SqlParameter("@MyUDT", SqlDbType.Structured); parameter.Value = dataTable; 乍看之下會以為是資料內容錯誤,但這次我的內容人工出對後完全沒錯,欄位名稱也對。經過一天一夜的試誤,終於發現問題出在: 欄位順序 ! 以前我自己寫ADO.Net呼叫時,都會利用資料表先做出一個XML Schema(xsd),利用DataTable.ReadXmlSchema 產生結構,這樣Data Table裡的欄位順序絕對不會錯;而這次首度使用 List to DataTable 的公用程式自動產生DataTable,不用另外去產生XSD,整個程式變很順,不需要一個一個欄位塞值。 以上提供也使用UDT 做為SqlParameter的朋友參考。 後記:最近在測試時又發生過一次錯誤,是UDT屬性裡某個Not Null的欄位在DataTable裡缺值為null,也會造成呼叫UDT時錯誤。

vite編譯typescript時發生錯誤 Property 'xxx' does not exist on type

從vue/cli改為vite時,首先遇到 Property 'xxx' does not exist on type ,這種很鳥的錯誤,不知道為什麼沒找到很好的解法,但我就先把package.json裡的 "build": "vue-tsc --noEmit  && vite build" 直接改成  "build": "vite build" ,等正式發行 vite 3.0時應該這些設定檔都會校調好吧?

Vue 3 出現 error Component name "About" should always be multi-word

使用新版(2021年底到2022年初)的Vue 3樣板時,會出現很多奇怪的錯誤,我又遇到一個:error  Component name "XXX" should always be multi-word 。 查了原廠手冊,發現是 Vue Style Guide  裡有提到要使用 Multi-word component names ,可是我抓 Vue Mastery的 Github 範例 也有使用 Single word component name 耶! 無論如何,總是要讓現有的程式能夠成功編譯,查到是在eslint-plugin-vue 裡檢查的,所以只要改 .eslintrc.js ,加上  rules: {    "vue/multi-word-component-names": "off" }, 就可以忽視這個規則,成功編譯。

Vue 3 使用 script setup 時出現 defineEmits is not defined與 defineProps is not defined 錯誤

當使用<script setup> 語法撰寫時,若出現 defineEmits is not defined 或 defineProps is not defined 時,不一定是真的錯,很可能只是eslint檢查出錯。 解決方法:  加上import { defineEmits, defineProps } from "vue";  直接在 .eslintrc.js 加上 env: { "vue/setup-compiler-macros": true }, ,就不必在每個vue檔裡加入上述引用