誰能幫我解決這個小問題?


我現在在寫一個模塊涉及數據庫方面,不是很熟悉。想請教一下。就是我有一個字段是不需要輸入數據的,是根據另外幾個字段的值計算出來的。我又想在輸入完那幾個相關字段后自動顯示出這個字段的值,並且保存進數據庫。不知道該怎么做?我用了DBNvigator和DBEdit,就是在DBEdit里面輸入,然后其中某一個DBEdit不需要輸入,而是自動顯示它的值(根據其他幾個相關DBEdit的值計算出來的)
  不知道我說清楚沒有。謝謝,非常着急,在線等待

15 个解决方案

#1


雙擊Table新建一個Calculate字段.試試看,很簡單...計算的公式添上就可以了.

#2


TQuery:SQL:
select ......,youField1*yourField2 as "計算字段" from yourTbable

#3


我寫過一個不過是用的循環寫的

#4


沒有用SQL是用的table那種,具體怎么做?  這個字段怎么添加?我加了沒有反應,公式又如何寫?

#5


我已經把這個字段放在數據庫了,再新建哥字段?什么意思?我是說直接把那個字段的值讓它自動產生

#6


“字段放在數據庫了”
可用Field->OnChange事件去同步更新它。
例:
select  F1,F2,F3,F4 from myTable 
要求:F4 =(F1+F2+F3)*F1/2 ;
可以這樣做:
在F1,F2,F3的FieldChange事件中寫上:
{
 F4->Value =(F1->Value+F2->Value+F3->Value)*F1->Value/2 ;
}
這是把規則放在前端完成的例子。
使用觸發器是把規則放在後端完成。

#7


在設計時,雙擊Table控件上打開字段編輯器,點鼠標右鍵,選New Field...,輸入Name、Type等,Field type選為Caculated,點[OK]完成字段添加
然后在Table的OnCalcFields事件里添加代碼為新添的字段賦值
例如:新添字段的Name為F0,其值應為原有的字段F1與F2的值得和,則在Table的OnCalcFields事件里寫:
{
  DataSet->FieldByName("F0")->AsInteger = 
    DataSet->FieldByName("F1")->AsInteger +
    DataSet->FieldByName("F2")->AsInteger; 
}
當字段F1、F2的值改變時,字段F0的值會自動重新計算

#8


非常感謝PPower和Libran(),我把分給你們了。能多問一個問題么
老師要求有一個自動增的字段(定單號)可是實際操作中發現很不號用,非要post以后定單號才加1(數據庫中)可我想讓它顯示在屏幕上,表示這次的定單號,該怎么做?

#9


真是不好意思,又碰到一個問題就是我用DBEdit控件,如果輸入不合法怎么辦?在哪里添加處理代碼,因為和DBEdit磅定的對象不一樣,總不能每次在OnExit里面寫判斷代碼吧?謝謝了,久這么多問題。希望能得到指點

#10


我的數據庫文件中已經設置了valid check,可是運行的時候不能保證輸入啊,好象DBGrid里面可以錯誤不讓輸入 可我用的DBEdit怎么辦?

#11


在BeforePost事件中判斷!符合要求就Post,否則就Abort。

#12


問題在於怎么判斷啊? 判斷是否輸入了字符或者數字還好說,這判斷日期??太復雜了吧,有沒有簡單的辦法,難道控件中沒有考慮到這樣的事情么?

#13



輸入日期不是有用於選擇日期的控件嗎

如是單機版:定單號可以在上個值上加1來顯示啊
(網絡版就沒辦法了,不能事先確定的)

#14


樓上,選擇日期的控件是哪個?如果我要達到修改后和數據庫對應字段值同步具體怎么做,還有就是定單號怎么取得數據庫中目前最大的定單號?

#15


叫 TDateTimePicker 吧

 OnAfertScroll 中把字段值賦給DateTimePicker1.DateTime(同步顯示日期)
 OnBeforPost 中檢查各種各種輸入的合法性,
               把DateTimePicker1.DateTime賦回給字段
             當然也賦id號等等等等
 如此這般這般



 單用戶中上條單號就是  Last(最后一條,排序) 那條記錄的 單號
    或用 Max()函數查詢出
   然后你可以用一個變量跟蹤它(最大單號)

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com