發表文章

MSSQL error: Unclosed quotation mark after the character string

錯誤訊息:MSSQL error: Unclosed quotation mark after the character string   前陣子在處理一些資料寫入 SQL SERVER 時出現這個錯誤訊息,檢查 SQL 語法後都沒問題。 後來才查到,因為儲存的資料裡有中文字,可能中文字的編碼和 DB 的編碼不同造成,將資料轉為 UTF-8 後在執行,資料就能順利存入啦 !     我的執行程式是 PHP ,以下是 PHP 轉編碼的方式 : Iconv('UTF-8','BIG5', 存入資料 )

OCIStmtExecute: ORA-01400: cannot insert NULL into

圖片
OCIStmtExecute: ORA-01400: cannot insert NULL into 有新增的資料是空值,有欄位在型態中被設定不能為空,因此會出現此類錯誤訊息。 解決方法: 1. 新增時 SQL 語法調整輸入非空值的資料 2. 調整欄位的設定,改為可接受空值得輸入,除非特殊需求,一般不建議資料表欄位為空 參考網址: https://www.tekstream.com/resource-center/ora-01400-error-message/

SQLite錯誤訊息整理

圖片
最近在寫app有用到sqlite的東西還遇到了蠻多的錯誤,這些訊息我覺得還蠻有紀錄價值的慢慢的在整理貼上來。 2020/1/22 錯誤訊息: android.database.sqlite.SQLiteException: no such table 在新增資料時,找不要插入資料的 table ,因為 table 還未被建立,才會發生的錯誤。 解決方法: 1. 更改資料庫版本。 2. onUpgrage 若資料庫的結構有改變時必須變更資料庫版本,像是建立 table 、新增欄位 … 等,就會觸發進行建立。 補充: onCreate 在載入資料庫找不到 table 就會觸發 onCreate 執行 SQL ----------------------------------------------------------------------------------------------------------------------------- 前不久在忙其他的事情,最近終於有空了!!想到還有這些資料沒有整理,趕快上來把後續的其他錯誤訊息整理好~ 2020/9/6 錯誤訊息: E/SQLiteLog: (1) unrecognized token 檢查 SQL 語法是否有違反基本原則造成語法無法辨識,像是漏掉單字或是符號多打都有可能,我遇到的情況為語法內沒有空格,改掉後就不會有這樣的錯誤訊息產生。   SQL 語法內 WHERE 到 ORDER BY 之間沒有空格 錯誤: SELECT * FROM TABLE WHERE A='B'ORDER BY ID DESC 正確: SELECT * FROM TABLE WHERE A='B'  ORDER BY ID DESC   參考連結: https://blog.csdn.net/pbm863521/article/details/78582267 錯誤訊息: Couldn't read row 0, col 1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data fro...

Iframe在IOS使用Bootstrap失效

圖片
                這是我將一個資料維護的網頁版面改成 RWD 時遇到的問題,在 Android 的手機上和桌機上看的網頁明明都有隨著螢幕大小做調整,為何在 IOS 的系統上看 RWD 的效果卻跑不出來,以下是我做的測試截圖及最後查了好幾天的資料才找到解決的方法:                 這個是內部職員使用的資訊系統,要改版的網頁是整個資訊系統內其中一個子系統,系統內的網頁導覽列應該要是把表題內縮到圖中右上角的按鈕內,資料表格當欄位過多時 ( 資料表格有 14 欄 ) 可以往右滑動,不會因為超出螢幕的欄位而讓資料很難觀看或頁面很亂。 Ipad mini 4-IOS瀏覽器 實機測試我用的是平板 Ipad mini 4 ,當網頁使用 IOS 的 Safrai 瀏覽器觀看時,導覽列應該出現的三欄式按鈕不見了,而導覽列標題沒有內縮到三欄式按鈕內。表格超出螢幕範圍頁面並沒有照著螢幕大小做調整。 Ipad mini 4-IOS瀏覽器 一開始我認為是導覽列的斷點失效,但在 Chrome 用模擬器查看 Ipad mini 4 的尺寸發現導覽列可以依尺寸做調整,那問題就不在導覽列上了。因此,我推測有可能是表格的欄位欄位長度造成,原本 14 欄的表格,先做註解剩 3 欄,果然導覽列能調整成三列式的按鈕,但頁面還是沒有調整至螢幕能觀看的最好狀態,那問題就應該是在表格上面了,但為什麽會造成這樣的狀況 ? Chrome 模擬器寬度(756px) 我又用 jquery 印出桌機和 Ipad mini 4 螢幕的寬度,發現和桌機 21 吋的螢幕印出來的數值竟然差不多,平板也才 7 吋大而已,這是一件很奇怪的事,而當我把網頁移出資訊系統的 Iframe框架外用Ipad mini 4 單獨看發現斷點並沒有失效,所有的功能都能正常運作,那就可以推斷是資訊系統的框架和 RWD 的 CSS 可能在 IOS 系統下會有不支援的情況。 桌機寬度(1641px) Ipad mini 4寬度(1672px)  ...

01791. 00000 - not a SELECTed expression

01791. 00000 - "not a SELECTed expression" 不是選取的表示式 使用 DISTINCT 語法抓出重複的資料時,在使用 ORDER BY 排序的欄位和 DISTINCT 搜尋的欄位不同。因為 ORDER BY 不會確保結果是唯一值,因此查詢欄位和排序欄位不同時 ORDER BY 無法使用。 錯誤語法: SELECT DISTINCT(TITLE1) FROM EXAMPLE ORDER BY TITLE2 SELECT DISTINCT(TITLE1) FROM EXAMPLE ORDER BY TITLE1,TITLE2 建議拿掉 ORDER BY 語法或是使用一致的欄位,例: SELECT DISTINCT(TITLE1) FROM EXAMPLE ORDER BY TITLE1 參考網址: https://stackoverflow.com/questions/31691470/ora-01791-not-a-selected-expression

ORA-01858: a non-numeric character was found where a numeric was expected

OCIStmtExecute: ORA-01858: a non-numeric character was found where a numeric was expected 在搜尋或更新欄位時,其中一個欄位是日期格式,但進來的值不是數字,而是一個非數字的值,所造成的錯誤。 SELECT TO_DATE([ 欄位 ],‘YYYY-MM-DD’) FORM [TABLE_NAME] INSERT INTO [TABLE_NAME] ([ 日期欄位 ]) VALUES (TO_DATE([ 值 ],‘YYYY-MM-DD’)) UPDATE [TABLE_NAME] SET [ 日期欄位 ]= TO_DATE([ 值 ],‘YYYY-MM-DD’) PHP 要寫入資料庫時一直這個出現錯誤訊息,原來是把 TO_DATE 放錯地方使用,應該要放在 SQL 內,理解以後感覺犯了一個蠻好笑的錯誤,記錄起來以後不要再犯啦 ! 正確使用方式 $InserDate=’2019-11-10’; $SQL=" INSERT INTO [TABLE_NAME] ([ 日期欄位 ]) VALUES (TO_DATE([:insertdate],‘YYYY-MM-DD’)) "; $stmtSel = $dbc->getConnection()->prepare($SQL); $stmtSel->bindValue(":insertdate", $InserDate); 錯誤使用: $stmtSel->bindValue("TO_DATE([:insertdate],‘YYYY-MM-DD’)", $InserDate);

PHPWord替換文字

圖片
PHPWord 是能用 PHP 產生 Word 檔的函式庫,這裡紀錄使用這套函式庫將 word 檔內的特定段落文字替換掉。 1. 前置準備              首先必須準備已經規劃好的樣本格式 word 檔放入專案執行的目錄中,將要替換的文字用  ${ }  錢字號和大括弧表示,中間塞入一個變數名稱,名稱可自行命名,這裡是使用 ${Value1} 和 ${Value2} 做測試(圖一)。 (圖一)                 關於替換的變數很重要的一點, 不要在 word 檔內直接打上替換變數, 先在記事本或其他文字編輯軟體上打好再複製貼上(圖二) ,否則在執行時不會成功。 (圖二)                 我測試是使用記事本複製貼上,若直接在 word 上打上變數,表面上看不出來有和不同,但將 word 檔另存成 xml 檔在用文字編輯器打開來看其實文字中間被插入了很多空格,不是一個完整的變數。 ${Value1} 是從記事本貼過去的(圖三), ${Value2} 則是直接在打 word 上面,可以看到 ${Value2} 符號和文字中間被插入了很多符號,程式在執行時會無法判讀(圖四)。 (圖三) (圖四) 2. 程式執行               再來就是執行的部分,先將下載下來的 PHPWord 檔案放入專案執行的目錄中,然引用涵式,接著呼叫PHPWord,以下是替換字使用的程式(圖五)和說明: loadTemplat :這裡是去抓前面準備好的 word 檔樣本,路徑和檔名都要打對。 setValue :替換文字, setValue(“word 檔內要被替換的變數名稱,錢字號和大括號這裡不用加上 ”,” 要被替換的文字 ”) save :儲存檔案。可選擇儲存的地方,這裡是存在專案執行...