Midas進階 – 巢狀資料表實現Master/Detail的應用系統

來源:互聯網
上載者:User

 Midas進階 - 巢狀資料表實現Master/Detail的應用系統
首先,還應該知道Master/Detail到底是什麼關係;
其次,要明白什麼是巢狀資料表是什麼意思;
Master/Detail這種主細關係,只要做過資料庫程式的人應該都知道,在C/S結構裡隨時都是,很長見的;
巢狀資料表應該如何理解?它就是分布式系統和C/S結構的對於Master/Detail的不同操作機制而引申的;從用戶端而言,在C/S結構中,Master/Detail可以用兩個資料集組件分別取出表中具有Master/Detail關係的資料,但是在分布多中,對於用戶端而言,我們只關心Master的資料集的處理方式,而如何對應Master/Detail則是在應用服務方面進行操作,當我們正確串連了用戶端的MasterClinetDataSet(TClientDataSet)時,其所對應的Detail就會隨著資料包自動的下載到用戶端,這就是巢狀資料表的初步解釋;而它的正真定義應該是:當資料封包在封裝資料時,這個資料封包甚至能夠把一個資料集封裝起來;

下邊用一個常式來說明:
應用服務端:在應用伺服器上要實現兩個資料群組件的M/D(Master/Detail,以後用M/D代替)的關係,可以用TTable or TQuery ,TADOQuery or TADOTable or TADODataSet組件都完全可以;這兒要建立它們的M/D關係,和C/S中的完全一樣(中間需要通過一個TDataSource串連);

用戶端:在用戶端只需要用一個TClientDataSet來接收資料,這兒更能體現“巢狀“,所謂的接收資料是從應用服務端下載資料,是將M/D資料都下載下來,這後,Delphi可以自動的識別這是一個M/D結構的;此時需要將另一個TClientDataSet組件加進來,而且要設定它的DataSetField為下載資料的TClientDataSet中的Detail資料欄位(可以這樣理解);但不應該忘記了要執行TClientDataSet.Fetch Params,只有這樣才可以實現Detail -> TClientDataSet的DataSetField的設定;

設定完成後,就可以正確運行了;
下邊我給出設定執行個體,供參考
應用服務端表單檔案如下:
object DMF_LX: TDMF_LX
  OldCreateOrder = False
  Left = 192
  Top = 107
  Height = 409
  Width = 570
  object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString = 
      'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initia' +
      'l Catalog=pubs;Data Source=(local)'
    /////資料連線字串,有必要看一看;
    LoginPrompt = False
    Provider = 'SQLOLEDB.1' 
    Left = 72
    Top = 32
  end
  object MADODataSet: TADODataSet
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'select * from publishers'
    Parameters = <>
    Left = 64
    Top = 104
    object MADODataSetpub_name: TStringField
      FieldName = 'pub_name'
      Size = 40
    end
    object MADODataSetcity: TStringField
      FieldName = 'city'
    end
    object MADODataSetstate: TStringField
      FieldName = 'state'
      FixedChar = True
      Size = 2
    end
    object MADODataSetcountry: TStringField
      FieldName = 'country'
      Size = 30
    end
  end
  object DADODataSet: TADODataSet
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'select * from titles'
    DataSource = MDDataSource
    IndexFieldNames = 'pub_id'/////////這兒建立關係;
    MasterFields = 'pub_id'  /////////這兒建立關係;
    Parameters = <>
    Left = 168
    Top = 104
  end
  object GADODataSet: TADODataSet
    Connection = ADOConnection1
    Parameters = <>
    Left = 272
    Top = 104
  end
  object MDDataSource: TDataSource
    DataSet = MADODataSet
    Left = 264
    Top = 32
  end
  object MDataSetProvider: TDataSetProvider
    DataSet = MADODataSet
    Constraints = True
    Left = 64
    Top = 168
  end
  object DDataSetProvider: TDataSetProvider
    DataSet = DADODataSet
    Constraints = True
    Left = 176
    Top = 168 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.