• 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

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


     

  • 相关阅读:
    【Pascal's Triangle II 】cpp
    【Pascal's Triangle】cpp
    【Substring with Concatenation of All Words】cpp
    【Multiply Strings】cpp
    【Minimum Window】cpp
    【Merge Intervals】cpp
    【Insert Interval】cpp
    认识GIT之入门
    数据结构学习系列之线性表(四)
    VBox虚拟机与主机(宿主)通讯原理以及socat(套接字猫)简单介绍
  • 原文地址:https://www.cnblogs.com/yanyyx/p/1382555.html
Copyright © 2020-2023  润新知