<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Visual Foxpro生成任意打印字段報表的完成

      [摘要]---- 存在的問題 ---- 用VFP生面的執行程序后,對于用戶所需的某一數據庫的任意字段組合報表,就顯得不是那樣運用自如。因為,一方面軟件開發時,無法考慮到日后用戶所需報表的所有格式。另一方面,由于所設計好的報表格式文件已編譯成可執行文件,即使修改了.FRX和.FRT文件結構內容,也需在開發環...
      ---- 存在的問題

      ---- 用VFP生面的執行程序后,對于用戶所需的某一數據庫的任意字段組合報表,就顯得不是那樣運用自如。因為,一方面軟件開發時,無法考慮到日后用戶所需報表的所有格式。另一方面,由于所設計好的報表格式文件已編譯成可執行文件,即使修改了.FRX和.FRT文件結構內容,也需在開發環境下重新編譯,對用戶來講是不實現的。例如需一份員工名單及一個空欄位,進行簽名或登記某一證件號碼的問題就比較難解決。

      ---- 解決方案

      ---- 運用VFP與Excel 的交換數據及在VFP中全面控制Excel的操作(即自動服務器),就可以很好的解決這一問題。關于如何控制Excel,一方面可以通過Excel的幫助文件的VBA語法,另一方面也有相當多的文章關于控制Excel的語法。值得注意的是:1、為提高效率,所有有關計算、小計、合計最好在VFP中進行,并寫在相應的記錄內;2、由于是兩個軟件,如果在有大量數據逐一插入Excel單元格時,顯得速度較慢,所以如果數據量較大,應直接用VFP的數據表導出為Excel格式,再由VFP在后臺控制Excel打開,并指定的Excel格式文件進行修改文檔標題、列的名稱、網格線型,以及根據紙張大小計算各列寬和調整字體大小。

      ---- 實現辦法

      ---- 利用SQL結構化語言的Select生成一個數據表

      ---- 在Select字段時,可以利用一個表單Form1加入兩個列表框,一個列表框列出所有數據表的字段,另一個為空,利用鼠標雙擊或拖拉至空的列表框里,為選定一字段(此時第一個含有所有字段的列表框中,將不再顯示被拖拉走的字段,而在另一列表中顯示),并生成相應的Select查詢程序段。

      ---- 在本實例中為:form1中含有一個list1和edit1和兩個按鈕

      Form1.ini
      public a,b,c,d,f,g

      a="SELECT "
      b=""
      c=" FROM bn INTO CURSOR myquery"
      d=""
      f=0
      g=0

      list1.dblclick
      if len(alltrim(b))=0
      b=b+thisform.list1.value
      else
      b=b+","+thisform.list1.value
      endif
      d=a+b+c
      thisform.edit1.refresh

      for mm=1 to thisform.list1.listcount
      if thisform.list1.selected(mm)
      thisform.list1.removeitem(mm)
      endif
      endfor

      command1.click ** 執行所生成的select語句
      SELECT &B FROM BN INTO CURSOR MYQUERY
      sele myquery

      command2.click** 調用excel
      my=createobject("excel.application")
      my.visible=.t. **如果在交付用戶時可以將其設置成 .F.
      my.workbooks.add
      select myquery
      f=fcount()
      g=reccount()

      goto top
      for l=1 to g
      for i=1 to f
      fieldname=field(i)
      ** 對于要生成中文的列位標題可以用
      一英文字段名稱與中文名稱對應的參數庫來解決
      my.activeworkbook.sheets(1).cells(l,i).value=myquery.&fieldname
      endfor
      skip
      endfor
      ** 如果要增加一空列可以用
      my.activesheet.columns(f+1).insert語法
      ** 設置頁眉 my.activesheet.pagesetup.
      centerheader (centerfooter)=” xxx”

      ---- 其它方面的控制可以按上述提到的方法參考


      日韩精品一区二区三区高清