1.SQLite官網 SQLite
2.ODBC驅動 SQLite ODBC Driver
3.語法文件 SQL As Understood By SQLite
4.DB免費管理工具 SQLiteStudio
2012-02-17
2012-02-16
Delphi 中SQL Decimal資料型態小數位數進位問題
利用ADOQuery抓取資料,做數值運算時,
若SQL資料庫的資料型態為decimal(18,2)--2表示精準至小數2位,
小數進位方式為五捨六入,並非我們一般使用的四捨五入,
不知是否算為Delphi bug !
如35*1.777= 62.195
Delphi運算結果為62.19
正確應為62.20
若SQL資料庫的資料型態為decimal(18,2)--2表示精準至小數2位,
小數進位方式為五捨六入,並非我們一般使用的四捨五入,
不知是否算為Delphi bug !
如35*1.777= 62.195
Delphi運算結果為62.19
正確應為62.20
var xDSubtot : Double
xDSubtot := Query_D.FieldByName('Qty').AsFloat * Query_D.FieldByName('UnitP').AsFloat;
Query_D.FieldByName('SubTot').AsVariant := FloatToStrF(xDSubtot,ffFixed,18,2);
Delphi 7連線SQLite資料庫
最近在研究於Delphi7中利用ODBC連線SQLite DB檔案,
將實做成功方法做個記錄。
先安裝SQLite ODBC Driver
參考自 网语飘飘.Net/Delphi攻坚战
將實做成功方法做個記錄。
先安裝SQLite ODBC Driver
//**在ADO內的ConnectionString直接帶入,不用連線精靈
procedure _SetSQLiteDBConnection;
var OD : TOpenDialog;
ADOConn : TADOConnection;
xDatabase : String;
begin
OD := TOpenDialog.Create(NIL);
OD.FileName := 'x:\mymoney';//**預設資料庫路徑
OD.DefaultExt := '*.db';//**預設存檔格式
OD.Filter := 'DB files (*.db)|*.DB';//**過濾顯示的檔案格式
if Not OD.Execute then
begin
showmessage('選擇資料庫檔案失敗!');
Abort;
end;
xDatabase := ';Database='+OD.FileName;
ADOConn := TADOConnection.Create(NIL);
ADOConn.LoginPrompt := False;
ADOConn.ConnectionString := 'Driver={SQLite3 ODBC Driver}'+xDatabase;
while Not ADOConn.Connected do
ADOConn.Open;
end;
參考自 网语飘飘.Net/Delphi攻坚战
2012-02-11
MS SQL Stored Procedure 初心者筆記
1.使用Exec執行動態SQL語法,若語法內有產生暫存Table,在執行結束後一併消失,故可以先在外面CREATE暫存表,再於EXEC內使用INSERT INTO
IF (select OBJECT_ID('tempdb..#TTmp')) IS NOT NULL DROP TABLE #TTmp
CREATE TABLE #TTmp (ProdNo varchar(16))
EXEC('INSERT INTO #TTmp select ProdNo from Prod')
2.WHERE IN篩選值不可以變數存放,如@Tmp = '1,2,3',查詢資料集合不為1,2,3之結果 (解決方法)
2012-02-03
T-SQL WHERE IN 變數 有多筆值查無資料錯誤
在撰寫Stored Procedure時,發現在where條件中若以宣告的變數篩選資料,
當變數為多筆值並搭配WHERE IN的時候會發生查詢不到資料的情況
參考自
[TSQL]Procdure 或 SqlParameter 來下SQL指令 Where In 多個值的變數解決方法
在T-SQL進行字串分割
當變數為多筆值並搭配WHERE IN的時候會發生查詢不到資料的情況
DECLARE @xTmp VarCHAR(100) SET @xTmp = 'A01,B01,B99' select GPNa,DTNo,DTNa from NOM where GPNo='SO' and DTNo in (@xTmp) GPNa DTNo DTNa ---------- -------------- ---------------- (0 個資料列受到影響)此時需自行新增一個切割字串放入暫存Table的Function來解決此問題
USE [DATABASENAME] IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FN_SplitStr]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[FN_SplitStr] USE [DATABASENAME] GO CREATE FUNCTION [dbo].[FN_SplitStr](@xStr NVarchar(MAX),@xFStr varchar(1)) RETURNS @TmpTable TABLE ( TmpStr NVarchar(MAX)) AS BEGIN --@xStr 欲切割字串 --@xFStr 切割用判定字元 --@TmpTable 存放切割後資料 DECLARE @xTmpStr NVarchar(MAX)--暫存字串 SET @xStr = @xStr + @xFStr--分割字串最後加上一個分割字元 SET @xTmpStr = ''--清空暫存字串 WHILE CHARINDEX(@xFStr,@xStr)>0--判斷是否有分割字元存在 BEGIN --SET @xTmpStr = @xTmpStr + SUBSTRING(@xStr,1,CHARINDEX(@xFStr,@xStr)-1) SET @xTmpStr = SUBSTRING(@xStr,1,CHARINDEX(@xFStr,@xStr)-1) IF Replace(@xTmpStr,' ','') <> ''--不為空值才寫入@TmpTable INSERT INTO @TmpTable (TmpStr) values (@xTmpStr) SET @xStr = SUBSTRING(@xStr,CHARINDEX(@xFStr,@xStr)+1,LEN(@xStr)) END RETURN END
DECLARE @xTmp VarCHAR(100) SET @xTmp = 'A01,B01,B99' select GPNa,DTNo,DTNa from NOM where GPNo='SO' and DTNo in (select * from dbo.FN_SplitStr(@xTmp,',')) GPNa DTNo DTNa ---------- -------------- ---------------- 成品出入庫類別 A01 生產入庫 成品出入庫類別 B01 銷貨出庫 成品出入庫類別 B99 其他出庫 (3 個資料列受到影響)
參考自
[TSQL]Procdure 或 SqlParameter 來下SQL指令 Where In 多個值的變數解決方法
在T-SQL進行字串分割
2012-02-02
[分享]記帳小管家-免傳輸線更新PC與Android帳本資料
首先還是要感謝慕雲大提供帳務小管家這麼好用的軟體,
電腦版的記帳作了兩年多了,昨天開始連Android也一併授權了,
在這邊提供自己目前使用的配套同步方式,可以省略傳輸線的動作!
必要條件:
1.這麼讚的軟體,請先贊助
2.申請Dropbox帳號並於電腦端安裝程式
電腦玩物-Dropbox 雲端資料同步軟體能用來幹嘛?10個我最常被滿足需求
3.手機安裝 Dropsync-設定手機自動同步資料夾
想法:
利用Dropsync來自動同步dropbox內的檔案(目前Dropbox官方Android版程式無此功能),
等於在每個有安裝dropbox的Client都有一份Android帳務的資料庫檔案,
我們在PC帳務小管家就可以很方便的指定我們剛剛設定存放資料庫的資料夾,
進行同步,而不用使用到傳輸線,同步完成後,當手機Dropsync下次自動執行同步時,
就會將同步後的資料庫檔案更新到手機內,這樣是不是方便很多呢?
電腦版的記帳作了兩年多了,昨天開始連Android也一併授權了,
在這邊提供自己目前使用的配套同步方式,可以省略傳輸線的動作!
必要條件:
1.這麼讚的軟體,請先贊助
2.申請Dropbox帳號並於電腦端安裝程式
電腦玩物-Dropbox 雲端資料同步軟體能用來幹嘛?10個我最常被滿足需求
3.手機安裝 Dropsync-設定手機自動同步資料夾
想法:
利用Dropsync來自動同步dropbox內的檔案(目前Dropbox官方Android版程式無此功能),
等於在每個有安裝dropbox的Client都有一份Android帳務的資料庫檔案,
我們在PC帳務小管家就可以很方便的指定我們剛剛設定存放資料庫的資料夾,
進行同步,而不用使用到傳輸線,同步完成後,當手機Dropsync下次自動執行同步時,
就會將同步後的資料庫檔案更新到手機內,這樣是不是方便很多呢?
2012-01-29
Win7 取消工作列最近開啟程式檔案清單
在Win7中,在工作列程式會顯示最近開啟過的檔案列表,
若不想要此功能的話,可透過下列步驟關閉。
1.於工作列上滑鼠右鍵-->內容
2.切換至 [開始]功能表
3.將 儲存最近開啟的項目並顯示於[開始]功能表和工作列 取消
若不想要此功能的話,可透過下列步驟關閉。
1.於工作列上滑鼠右鍵-->內容
2.切換至 [開始]功能表
3.將 儲存最近開啟的項目並顯示於[開始]功能表和工作列 取消
2012-01-28
MS SQL-字串函數-CHARINDEX
利用CHARINDEX函數,可抓取字串中指定字串的起始位置,
以方便程式進行字串的相關處理動作。
參考自:MSDN-CHARINDEX
以方便程式進行字串的相關處理動作。
CHARINDEX('BCD','abcde')--不分大小寫
-----------
2
CHARINDEX('BCD','abcde' COLLATE Latin1_General_CS_AS)--分大小寫
-----------
0
參考自:MSDN-CHARINDEX
2012-01-20
MS SQL 字串函數-QUOTENAME-字串加上雙引號
利用MS SQL的QUOTENAME函數,
可以方便的將字串以引號包起來,
避免因為一堆引號降低程式碼可讀性,
及降低出錯機會。
參考自:QUOTENAME
可以方便的將字串以引號包起來,
避免因為一堆引號降低程式碼可讀性,
及降低出錯機會。
select QUOTENAME('String','''')
---------------------------------------------------------
'String'
(1 個資料列受到影響)
參考自:QUOTENAME
2012-01-19
訂閱:
文章 (Atom)
