發表文章

目前顯示的是 7月, 2025的文章

如何解決 Oracle ORA-00904: “FALSE” 無效的 ID 錯誤?完整解析與三種實戰方案

  前言 在使用 .NET 與 Entity Framework Core 連接 Oracle 資料庫時,常會遇到一個看似莫名其妙的錯誤訊息: OracleException: ORA-00904: "FALSE": 無效的 ID 如果你不是資料庫專家,看到這裡可能會疑惑:「為什麼寫程式時只是用到 C# 裡的 false ,居然跑到 SQL 裡變成了 FALSE ,而 Oracle 不認得?」本篇文章將深入淺出,帶你了解其成因,並提供三種可行的解決方案,讓你快速排除故障、恢復正常開發流程。 為什麼會發生 ORA-00904: “FALSE” 無效的 ID? Oracle 不支援 Boolean 在 Oracle 的 SQL 語言裡,並沒有像 TRUE 、 FALSE 這樣的布林(Boolean)字面量。 EF Core Provider 自動翻譯 當你在 LINQ 查詢或投影中使用了 C# 的布林值(例如 p => p.APS_DEAL ? "Y" : "N" 或直接把 bool 欄位投影),Oracle 的 EF Core 外掛在產生 SQL 時,會把 false / true 翻譯成 FALSE / TRUE ,這就觸發了「無效的 ID」錯誤。 解法一:在記憶體端處理投影(Pull then Project) 概念 :先把純資料實體取回(不帶任何方法呼叫),再用 LINQ-to-Objects 做 ToString() 、三元運算、bool→字串、格式化等邏輯。 // 1) 把實體一次查回 var plans = await _context.APSZPLANs .Where(p => p.APS_VERSION == apsVersion) .ToListAsync(); // 2) 在 C# 記憶體端再投影 var result = plans.Select(p => new APSZRESULTA { APS_PLAN_NO = p.APS_PLAN_NO, // 把布林轉成字串 APS_DEAL = p.APS_DEAL ? "Y" : "N",...

【完整教學】Vue 3 + Vite 串接 .NET API 並以中文表格輸出網頁與 Excel(含樣式與欄位對應)

圖片
✨ 前言:當工程師遇上 Excel 輸出與中文表格的挑戰 在企業內部系統開發中,「將資料表格輸出成 Excel」是常見的需求之一。如果你使用 Vue 3 搭配 Vite 作為前端框架,並以 .NET Core API 提供後端資料,還希望將表格顯示為「中文欄位名稱」並美觀呈現在網頁上與 Excel 檔中,那你可能會遇到以下挑戰: API 回傳資料是英文欄位,但客戶要看中文 Excel 匯出標題變成英文字串,不符合格式 頁面表格欄寬不一致,看起來很亂 想要像群創光電一樣的表格 UI 和下載功能 別擔心,這篇文章一步一步教你解決以上所有問題! 🧱 系統架構概覽 前端技術 :Vue 3 + Vite + Axios 後端技術 :ASP.NET Core Web API 匯出工具 :xlsx + file-saver API 範例 : /api/Data/GetDataByVersionA?apsVersion=V1 🛠️ Step 1:建立 API 並正確回傳資料 .NET API Controller 中,我們設計一個 GetDataByVersionA 方法:  [HttpGet("GetDataByVersionA")] public async Task >> GetDataByVersionA([FromQuery] string apsVersion) { var result = await _dataProcessor.GetDataByVersionA(apsVersion); return Ok(result); } 這個方法會依據使用者傳入的版本編號(例如 V1 ),回傳對應的資料清單。 🧩 Step 2:Vue 3 前端如何串接並轉換欄位為中文? ✍️ 對照欄位轉換表(Mapping) 我們使用 JavaScript 將英文欄位名稱轉換為中文: const columnMapping = { APS_VERSION: "計畫版本", DOC_NO: "急單編號", DEMAND_DATE: "需求日期", DEMAND_QT...

🐳 解決 Docker Desktop 無法連線錯誤:connect ENOENT \.\pipe\dockerDesktopEngine

  🧠 前言:什麼是 connect ENOENT? 當你在 Windows 上開發 .NET Core 或其他應用程式,使用 Docker Desktop 打包時,可能會遇到以下錯誤: connect ENOENT \\.\pipe\dockerDesktopEngine 這代表 你的電腦無法連接 Docker Engine 背後的服務(Daemon) 。簡單來說,Docker 沒有啟動,或是你目前的 Docker 使用方式不對。 🧪 錯誤重現場景 你可能在執行以下指令時發生錯誤: docker build -t net_app . 系統回傳錯誤訊息: ERROR: error during connect: Head "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/_ping": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified. 🧯 常見原因 Docker Desktop 沒有啟動或已閃退。 使用了錯誤的 Docker 容器模式(如 Windows 容器 vs Linux 容器)。 Windows 的 Docker 引擎服務(daemon)沒有啟動。 WSL2 被關閉或設定錯誤。 防毒軟體或防火牆阻擋 Docker 的內部連線。 🛠 解決方法(完整步驟) ✅ 1. 重新啟動 Docker Desktop 點選右下角的 Docker 圖示 > Quit Docker Desktop。 重新用管理員身份開啟 Docker Desktop。 打開 PowerShell 測試: docker version ✅ 2. 確認 Docker 服務狀態       Get-Service docker           若狀態為 Stopped,請啟動:     Start-Service docker ✅ 3. 重置 Docker 為出廠設定...

🌐【教學】用 Podman + Vue + Nginx 打包你的前端專案並部署:完整步驟與常見錯誤解析

  ✨ 前言:為什麼要學會 Vue + Podman + Nginx 的部署流程? 身為軟體工程師,我們經常會開發 Vue 應用程式,但部署上線卻常是另一個世界。這篇文章是寫給「不熟 Docker、不了解容器的前端開發者」看的,我會用最簡單的例子教你如何用 Podman(Docker 替代品)+ Nginx 把 Vue 項目打包並部署,並解釋其中錯誤原因。 🔧 技術架構總覽 Vue 3 前端應用 ✅ Podman 取代 Docker 作為容器引擎 ✅ Nginx 作為靜態檔案服務器 ✅ 多階段 Dockerfile 打包 Vue 專案 ✅ 🪜 步驟 1:Vue 專案目錄結構說明 你應該有如下結構(重要!否則 build 會報錯): front/ ├── public/ │ └── index.html ├── src/ │ ├── views/ │ │ └── Home.vue │ ├── App.vue │ └── main.js ├── router/index.js ├── nginx.conf ├── Dockerfile └── package.json 👉 關鍵:你的 src/views/Home.vue 必須存在,否則會導致找不到 module 的錯誤! 🪜 步驟 2:Dockerfile 正確寫法(多階段建置) # Stage 1: Build Vue App FROM node:16 AS build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN chmod -R 777 /app RUN npm run build # Stage 2: Serve with Nginx FROM nginx:stable-alpine as production-stage WORKDIR /usr/share/nginx/html COPY --from=build-stage /app/dist ./ COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", ...