熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

信息系統的快速開發之數據信息的提取

2013-11-11 14:14:20  來源: Windows系統管理 

  為了保持整個系統有足夠的擴展和足夠的彈性(能夠滿足災WebForm和WinForm中的使用以及其他數據庫更新的來源比如說Office 中InfoPath以及WebService等等)我將整個DBForm的構架拆分為FormInfo類和SqlBuilder兩個基類下面分別描述FormInfo類和SqlBuilder類的作用以及申明
  
  FormInfo主要負責整個數據庫Field信息的抓取主要包括了以下兩個方法
  
  /// 添加將要進行遍歷的容器
  
  public virtual void AppendContainer(object AContainer)
  
  /// 添加單個控件
  
  public virtual void AppendControl(object AControl)
  
  /// 清除先前已經配置好的Form信息
  
  public void ClearFormInfo()
  
  主要提供了兩個虛方法一個公開的ClearFormInfo方法從方法名稱上面的含義大家看得很清楚了整個FormInfo可以根據容器和單獨的控件進行添加在這裡我有必要說明一下我的DBForm架構中針對Winform和WebForm的擴展因為下面的WinFormInfo類和WebFormInfo類分別繼承自FormInfo實現WinForm和WebForm的信息提取
  
  再WinFormInfo和WebFormInfo中主要是一個針對Container的循環以及通過重寫AppendContainer實現
  
  /// 添加將要進行遍歷的容器
  
  public override void AppendContainer(object AContainer)
  
  {
  
  SystemWebUIControl Container = (SystemWebUIControl)AContainer;
  
  foreach(Control AControl in ContainerControls)
  
  {
  
  thisDoAppendControl(AControl);
  
  }
  
  }
  
  在下面的WebQueryForm和WebModifyForm中就是實現具體的Form信息提取了為什麼要用這麼多類的繼承呢?我覺得這樣的視線主要有以下幾點好處
  
  .FormInfo類主要提供最公開的接口以及一些基礎的方法(提供了一個protected的方法用於將分析出的Form信息填充入FormInfoEntity中(窗體信息的描述類)
  
  .WinFormInfo和WebFormInfo類主要是把容器Object轉換成為具體的WinContrl和WebControl並且調用相應的控件信息解析器實現數據的提取
  
  .接下來的ModifyFormInfo和QueryFormInfo主要就提供了控件的信息解析器具體實現根據具體的控件和具體的任務(Modify呢還是Query)分別解析出控件的信息比如說QueryFormInfo中需要加入相關操作符號的信息(LIKE=等等)
  
  下面是具體控件的添加操作
  
  private void DoAppendControl(SystemWebUIControl AControl)
  
  {
  
  if (AControl is SmisNetWebControlSmisDropDown)
  
  {
  
  thisDoAppendDropDownList(AControl as SmisNetWebControlSmisDropDown);
  
  }
  
  else if (AControl is SystemWebUIWebControlsTextBox)
  
  {
  
  thisDoAppendTextBox(AControl as SmisNetWebControlSmisTextBox);
  
  }
  
  else if (AControl is SystemWebUIWebControlsListBox)
  
  {
  
  thisDoAppendListBox((SystemWebUIWebControlsListBox)AControl);
  
  }
  
  }
  
  其實這部分代碼寫得並不算優美包括DoAppendDropDownList等方法都寫成了虛方法有不少代碼的臭味到其實不應該這樣的只是因為我們現在的工作比較簡單(只有這三種窗體不過我想包括了大多數信息系統開發的情況)如果您使用了其他的控件可以考慮修改AControl is xxx然後天加上自己的控件的處理方法FormInfo就支持了新的控件的解析
  
  這一系列的類的具體操作就實現了窗體數據的信息提取接下來我們應該考慮怎麼把提取出來的數據轉換成為Sql

From:http://tw.wingwit.com/Article/os/xtgl/201311/5224.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.