史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   DBGrid的欄位格式 (http://forum.slime.com.tw/thread206217.html)

profibus 2007-05-23 06:53 PM

DBGrid的欄位格式
 
請教各位:
我用From_Load方法使adodc連接SQL資料,要如何改變浮點數欄位的資料為小數點後1位
(原本為小數點後8位,我有利用.DataFormat屬性可是不會用)
謝謝

劍痞憶秋年 2007-05-23 10:51 PM

引用:

作者: profibus (文章 1721972)
請教各位:
我用From_Load方法使adodc連接SQL資料,要如何改變浮點數欄位的資料為小數點後1位
(原本為小數點後8位,我有利用.DataFormat屬性可是不會用)
謝謝

ㄟ,偶也不會使用 DataFormat ,不過為什麼不換個方式,在 ADODC 的來源下 SQL 來達成咧

profibus 2007-05-24 09:45 AM

引用:

作者: 劍痞憶秋年 (文章 1722145)
ㄟ,偶也不會使用 DataFormat ,不過為什麼不換個方式,在 ADODC 的來源下 SQL 來達成咧

謝謝指導,可是我還是不會用,能夠請大大提供一個範例嗎?謝謝:on_22:

sulein1122 2007-05-27 05:02 PM

是指vb的嗎?
可以試試用format("##.#",變數值)來寫
要測一下喔,我有好長一段時間沒用vb了:on_44:

profibus 2007-05-28 09:22 AM

引用:

作者: sulein1122 (文章 1724132)
是指vb的嗎?
可以試試用format("##.#",變數值)來寫
要測一下喔,我有好長一段時間沒用vb了:on_44:

感謝大大,我有測試過,不過字串符號(")無法組合,不懂耶:on_22:

mini 2007-05-28 12:04 PM

引用:

作者: profibus (文章 1724442)
感謝大大,我有測試過,不過字串符號(")無法組合,不懂耶:on_22:

寫反了
應該是 format(變數, 字串表達式)

Format(變數, "###.#")

profibus 2007-05-28 05:07 PM

引用:

作者: mini (文章 1724512)
寫反了
應該是 format(變數, 字串表達式)

Format(變數, "###.#")

再請教大大:
我的程式碼如下,我要如何以Format()格式組合使JobBatchSet的欄位變成(###.#)
謝謝
'=======================================================
Private Sub Form_Load()
ConnStr = "Provider=MSDASQL.1;Persist Security Info=False;" & _
"Data Source=CC_walsin1_07_05_08_09_57_04R"

Sql_Data = "SELECT JobName, JobProcessCode, JobBatchSet, " & _
"JobBatchAct , JobStatus, LastUser, LastAccess " & _
"FROM UA#JobArc"

Adodc1.ConnectionString = ConnStr
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = Sql_Data
Adodc1.Refresh
End Sub
'=======================================================

劍痞憶秋年 2007-05-28 09:46 PM

資料來源是什麼咧??
ACCESS / SQL Server /.....

profibus 2007-05-29 09:55 AM

引用:

作者: 劍痞憶秋年 (文章 1724886)
資料來源是什麼咧??
ACCESS / SQL Server /.....

回覆大大,SQL Server2000資料庫,我是用在Siemens圖控系統的資料庫用

劍痞憶秋年 2007-05-29 10:25 AM

語法:

'=======================================================
Private Sub Form_Load()
    ConnStr = "Provider=MSDASQL.1;Persist Security Info=False;" & _
                  "Data Source=CC_walsin1_07_05_08_09_57_04R"
             
    Sql_Data = "SELECT JobName, JobProcessCode, JobBatchSet, " & _
                    "FLOOR(JobBatchAct * 10 + 0.5) * 0.1" , JobStatus, LastUser, LastAccess " & _
                    "FROM UA#JobArc"
 
    Adodc1.ConnectionString = ConnStr
    Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = Sql_Data
    Adodc1.Refresh
End Sub
'=======================================================

修改如上

'四捨五入取小數1位
"FLOOR(JobBatchAct * 10 + 0.5) * 0.1"
'四捨五入取小數2位
"FLOOR(JobBatchAct * 100 + 0.5) * 0.01"
'四捨五入取小數3位
"FLOOR(JobBatchAct * 1000 + 0.5) * 0.001"
依此類推

profibus 2007-05-29 10:23 PM

引用:

作者: 劍痞憶秋年 (文章 1725086)
語法:

'=======================================================
Private Sub Form_Load()
    ConnStr = "Provider=MSDASQL.1;Persist Security Info=False;" & _
                  "Data Source=CC_walsin1_07_05_08_09_57_04R"
             
    Sql_Data = "SELECT JobName, JobProcessCode, JobBatchSet, " & _
                    "FLOOR(JobBatchAct * 10 + 0.5) * 0.1" , JobStatus, LastUser, LastAccess " & _
                    "FROM UA#JobArc"
 
    Adodc1.ConnectionString = ConnStr
    Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = Sql_Data
    Adodc1.Refresh
End Sub
'=======================================================

修改如上

'四捨五入取小數1位
"FLOOR(JobBatchAct * 10 + 0.5) * 0.1"
'四捨五入取小數2位
"FLOOR(JobBatchAct * 100 + 0.5) * 0.01"
'四捨五入取小數3位
"FLOOR(JobBatchAct * 1000 + 0.5) * 0.001"
依此類推

謝謝大大的範例:
已經可以了,不過我不太了解為什麼要+0.5:on_47:

劍痞憶秋年 2007-05-30 12:43 AM

啊哈,其實偶也只是抄來的,所以不知道為何

不過偶想是這樣的
<1>
Floor ==> 傳回小於或等於指定數值運算式的最大整數 ==> 偶解釋為 無條件捨去小數法
<2>以實值為例
1.23456
取小數1位
* 10 = 12.3456
+ 0.5 = 12.8456
floor(12.8456)=12 (無條件捨去法)
* 0.1 = 1.2

取小數2位
* 100 = 123.456
+ 0.5 = 123.956
floor(123.956)=123 (無條件捨去法)
* 0.01 = 1.23

取小數3位
* 1000 = 1234.56
+ 0.5 = 1235.06
floor(1235.06)=1235 (無條件捨去法)
* 0.001 = 1.235

其實就是
(1)把它要四捨五入的那個位數先變成 小數第一位
(2)這樣一來 + 0.5 之後,它就達到了四捨五入的功能
(該進位就進位到整數)
(3)(該捨的就捨掉啦,小數都捨掉了)
(4)最後再還原(1)做的動作((1)* 多少,(4)這裡就 / 多少(用*方式達成)

profibus 2007-05-31 11:37 AM

引用:

作者: 劍痞憶秋年 (文章 1725520)
啊哈,其實偶也只是抄來的,所以不知道為何

不過偶想是這樣的
<1>
Floor ==> 傳回小於或等於指定數值運算式的最大整數 ==> 偶解釋為 無條件捨去小數法
<2>以實值為例
1.23456
取小數1位
* 10 = 12.3456
+ 0.5 = 12.8456
floor(12.8456)=12 (無條件捨去法)
* 0.1 = 1.2

取小數2位
* 100 = 123.456
+ 0.5 = 123.956
floor(123.956)=123 (無條件捨去法)
* 0.01 = 1.23

取小數3位
* 1000 = 1234.56
+ 0.5 = 1235.06
floor(1235.06)=1235 (無條件捨去法)
* 0.001 = 1.235

其實就是
(1)把它要四捨五入的那個位數先變成 小數第一位
(2)這樣一來 + 0.5 之後,它就達到了四捨五入的功能
(該進位就進位到整數)
(3)(該捨的就捨掉啦,小數都捨掉了)
(4)最後再還原(1)做的動作((1)* 多少,(4)這裡就 / 多少(用*方式達成)

謝謝大大:
我了解了,+0.5就是要作到四捨五入的功能:on_15:


所有時間均為台北時間。現在的時間是 02:24 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1