使用Delphi 10.2,SQLite和Teecharts。我的SQLite數據庫有兩個領域,具有創建:TFDQuery和SQLite:字段類型不匹配,期望:LargeInt actual:WideString
CREATE TABLE HistoryRuntime ('DayTime' DateTime, Device1 INTEGER DEFAULT (0));
我訪問使用TFDQuery
稱爲qryGrpahRuntime
用下面的SQL表:
SELECT DayTime AS TheDate, Sum(Device1) As DeviceTotal
FROM HistoryRuntime
WHERE (DayTime >= "2017-06-01") and (DayTime <= "2017-06-26")
Group by Date(DayTime)
使用在Delphi IDE字段編輯器,我可以添加兩個持續字段,TheDate
作爲TDateTimeField
和DeviceTotal
作爲TLargeIntField
。
我在程序中運行這個查詢來創建一個TeeChart,我在設計時創建了這個查詢。只要查詢返回一些記錄,所有這些工作。但是,如果沒有記錄的請求的日期,我得到一個EDatabaseError
例外,與消息:
qryGrpahRuntime:現場「DeviceTotal」類型不匹配,期待:LargeInt實際:WideString的
我已經在網上搜索了很多關於如何在空查詢中防止這個錯誤的解決方案,但是我沒有找到任何運氣。從我所知道的,當沒有數據返回時,SQLite默認爲寬字符串字段。我試圖在查詢中使用CAST,但似乎沒有任何區別。
如果我刪除持久字段,查詢將在空回調集上打開時沒有問題。但是,爲了在IDE中使用TeeChart編輯器,看起來我需要持久字段。
有沒有一種方法可以使這個工作與持久字段,或者我將不得不拋出持久字段,然後在運行時添加TeeChart系列?
請參閱https://stackoverflow.com/a/32818322;沒有列類型,因爲結果列不直接來自表列。顯然,沒有辦法覆蓋它。 –
@CL,所以如果在查詢打開後無法重寫列類型,那麼在我運行之前是否有任何可以做的事來判斷查詢是否爲空?打開查詢是我得到錯誤的地方。我只需要知道查詢是否爲空,那麼我可以不打開TeeChart,通過停止錯誤。 –
供參考:我使用沒有FireDAC插件的專業版本,所以我沒有FireDac的源代碼來研究。 –