發表文章

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 :儲存檔案。可選擇儲存的地方,這裡是存在專案執行...

(PHP) libreoffice將WORD轉PDF

                這是我第一次寫技術相關的貼文,因為這次的開發在轉檔這部分花了好多時間研究,查了很多的文件和論壇才成功轉檔,沒想到漏掉安裝一個小套件又花了好多時間查資料,所以覺得不寫起來當作筆記很可惜,也分享給和我發生一樣問題的人。                   網路上有很多的套件可以直接產生 WORD 檔,也有能直接產生 PDF 的套件像是 TCPDF 的功能也很多,但因為格式上會需要比較彈性的調整在產生後達不到我要的效果,所以我選擇把 WORD 檔當作樣本再轉成 PDF 檔。                 雖然 WORD 在匯出就有 PDF 的選項可以進行轉檔,可以手動進行操作,但我要將資料放在網路上提供登入系統的使用者下載,使用者下載時自動將資料轉成 PDF 檔。所以我的做法是將後端的資料存在資料庫中,轉出時將一份 WORD 公版檔案格式當作樣本,這裡我用 PHPWord 套件以這份樣本去複製產生一份新的檔案並將資料寫入 Word 檔,然後需再經過 libreoffice 轉檔才是我要的 PDF 檔,讓使用者下載,才完成所有的轉檔步驟。 我的作業系統為 CentOS 7 ,在上面先安裝 libreoffice ,再來需要把相關的套件安裝上去這樣轉檔的功能才能真正使用。 套件清單: libreoffice libreoffice-headless   libreoffice-writer   libreoffice-calc   以下是我從官方文件和各類的技術論壇整理出來大概的重點和指令: 轉換指令: soffice --headless --convert-to pdf:writer_pdf_Export { 要被轉的 word 檔 } --outdir { 輸出檔案的資料夾 } --headless    已無介面模式啟動,此模式禁用介面啟動應用程式。當系統...