zoukankan      html  css  js  c++  java
  • DataSet>TField

    到处复制的,做个记号吧。

    TFieldKind   =   (fkData,   fkCalculated,   fkLookup,   fkInternalCalc,   fkAggregate);   
      fkData Field   represents   a   physical   field   in   a   database   table  
      fkCalculated Field   is   calculated   in   an   OnCalcFields   event   handler  
      fkLookup Field   is   a   lookup   field.  
      fkInternalCalc Field   is   calculated   but   values   are   stored   in   the   dataset.  
      fkAggregate Field   represents   a   maintained   aggregate   in   a   client   dataset.

    ftData:就是Table目前的實際欄位

    ftCalculated:這是一個計算欄位,是動態產生,是一個虛擬欄位,這個欄位都是寫在TDataSet(TTabel,TQuery) OnCalcFields事件。例如要計算合計金額 = 單價*數量,但資料庫未訂合計欄位,此時您便可以新增一個CalculatedField,在OnCalcFields事件寫上DataSet.FieldByName('合計').AsInteger := DataSet.FieldByName('單價').AsInteger*DataSet.FieldByName;('數量').AsInteger;即可以動態取得合計金額

    ftLookup:這也是動態產生,是一個虛擬欄位。使用方法您可以參考
    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25137我所寫的解答

    fkInternalCalc:這也是動態產生,是一個虛擬欄位,與ftCalculated類似,不過是用在TClientDataSet這個元件。

    fkAggregate:這也是動態產生,是一個虛擬欄位,不過也是用在TClientDataSet這個元件。它可以做一些數字的運算,例Sum,Avg,Count,Min,Max等。

    ---------------------------------

    附贴子

    表結構如下:
    貨品資料(mis001):貨品編碼,品名規格,單位等等。
    出庫單身(mis002):出庫單號,貨品編碼,數量等等。
    單位(mis003):序號,單位。

    Form1用DBGrid编辑出库单身资料,ADOQuery的SQL文本如下:

    Select mis002.*,mis001.品名规格,mis003.单位
    From mis003 inner join (mis001 inner join mis002 on mis001.货品编码=mis002.货品编码) on mis003.序号=mis001.单位

    新增修改都没问题但无法删除,
    错误提示:
    delete语句与column reference 约束‘FK_mis001_mis003’冲突,

    如果表间不建立关联,输出库单身资料时无法即时看到品名规格和单位资料,
    --

    您可以使用Lookup Field或Calculated Field來解決在出庫單身即時看到品名、規格及單位資料。
    以Lookup Field為例:
    1、在Form1增加一個ADOQuery,SQL: Select 貨品編碼、品名規格,單位 From mis001。
    2、對原本的ADOQuery DblClick 叫出Fields Editor,按右鍵New Field。
    3、New Field的設定如下:(以品名為例)

    [Field Properties]
    Name:Product_Name        Component:系統給定
    Type:選擇Product_Name的型態    Size:給Product_Name的大小
    [Field Type]
    選擇Lookup
    [Lookup Definition]
    Key Fields:指定貨品編碼的欄位名稱 DataSet:指要Lookup的DataSet指剛新增的ADOQuery
    Lookup Keys:指定貨品編碼的欄位名稱 Result Field:指從剛新增的ADOQuery要回傳的欄位,指定品名欄位名稱

    
    


    以上是回傳品名的例子,規格及單位必須依照以上步驟,再新增兩個欄位
    如此是用Delphi取代用資料庫產生關連取得其他Table(表格)欄位的方法,你可以試試看…

    這一個錯誤是由於表格有設foreign key所造成的,主要是MASTER-DETIAL的原因,當你要刪除MASTER時,一定要先將DETAIL刪除資料才會讓你刪除MASTER

    ---------------------------------


     

  • 相关阅读:
    autocomplete自动完成搜索提示仿google提示效果
    实现子元素相对于父元素左右居中
    javascript 事件知识集锦
    让 IE9 以下的浏览器支持 Media Queries
    「2013124」Cadence ic5141 installation on CentOS 5.5 x86_64 (limited to personal use)
    「2013420」SciPy, Numerical Python, matplotlib, Enthought Canopy Express
    「2013324」ClipSync, Youdao Note, GNote
    「2013124」XDMCP Configuration for Remote Access to Linux Desktop
    「2013115」Pomodoro, Convert Multiple CD ISO to One DVD ISO HowTo.
    「2013123」CentOS 5.5 x86_64 Installation and Configuration (for Univ. Labs)
  • 原文地址:https://www.cnblogs.com/yanyyx/p/1382555.html
Copyright © 2011-2022 走看看