鬼佬大哥大
  • / 11
  • 下載費用:30 金幣  

一種本地緩存方法.pdf

摘要
申請專利號:

CN201510503426.3

申請日:

2015.08.17

公開號:

CN105045728A

公開日:

2015.11.11

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 12/08申請日:20150817|||公開
IPC分類號: G06F12/08 主分類號: G06F12/08
申請人: 浪潮通用軟件有限公司
發明人: 舒鵬飛
地址: 250101山東省濟南市高新區浪潮路1036號
優先權:
專利代理機構: 濟南信達專利事務所有限公司37100 代理人: 孟峣
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510503426.3

授權公告號:

||||||

法律狀態公告日:

2018.05.01|||2015.12.23|||2015.11.11

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公開了一種本地緩存方法,包括如下步驟:首先對外提供功能界面格式的本地緩存和恢復接口;然后對外提供功能界面數據的本地緩存和恢復接口;最后根據本地緩存的功能調用相應的格式或數據的本地緩存和恢復接口。本發明的一種本地緩存方法與現有技術相比,通過格式緩存接口記錄和恢復某個功能的界面格式,通過數據緩存接口記錄和恢復用戶輸入某個功能界面的數據信息;從而滿足各種緩存需求,滿足各種使用人員的操作習慣,靈活性高,實用性強,易于推廣。

權利要求書

1.一種本地緩存方法,其特征在于,包括如下步驟:首先對外提供功能界面格式的本地緩存和恢復接口;然后對外提供功能界面數據的本地緩存和恢復接口;最后根據本地緩存的功能調用相應的格式或數據的本地緩存和恢復接口。2.根據權利要求1所述的一種本地緩存方法,其特征在于,所述功能界面格式的本地緩存和恢復接口中,格式緩存接口用于區分數據庫實例、操作員創建本地的格式緩存文件;格式恢復接口用于區分數據庫實例、操作員找到相應的格式緩存文件并重置界面。3.根據權利要求2所述的一種本地緩存方法,其特征在于,所述功能界面格式的本地緩存接口提供過程為:1)對外提供一個接口,接口有兩個參數:要緩存格式的界面控件、唯一標識該界面控件的標識;2)實現界面格式的本地緩存接口:創建一級格式緩存文件夾;在一級格式緩存文件夾下繼續按數據庫實例和操作員的組合創建二級格式緩存文件夾;在二級格式緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;將通過參數傳入的界面控件的語法保存到上一步創建的格式緩存文件中。4.根據權利要求2所述的一種本地緩存方法,其特征在于,所述功能界面格式的本地緩存接口提供過程為:1)對外提供一個接口,接口有兩個參數:要恢復本地緩存格式的界面控件、唯一標識該界面控件的標識;2)實現界面格式的本地緩存恢復接口:按照格式緩存文件的創建規則獲取格式緩存文件名,該獲取的格式緩存文件名中包含完整路徑;讀取格式緩存文件的內容并重置相關界面控件。5.根據權利要求1所述的一種本地緩存方法,其特征在于,所述功能界面數據的本地緩存和恢復接口中,數據緩存接口用于區分數據庫實例、操作員創建本地的數據緩存文件;數據恢復接口用于區分數據庫實例、操作員找到相應的數據緩存文件并將文件的內容逐個賦值到相應的界面控件上,賦值后觸發原有界面的值改變事件,完成重新恢復的數據是否合法的校驗。6.根據權利要求5所述的一種本地緩存方法,其特征在于,所述功能界面數據的本地緩存接口提供過程為:1)對外提供一個接口,接口有兩個參數:要緩存數據的界面控件、唯一標識該界面控件的標識;2)實現功能界面數據的本地緩存接口:在程序目錄下創建一級數據緩存文件夾;在一級數據緩存文件夾下繼續按數據庫實例和操作員的組合創建二級數據緩存文件夾;在二級數據緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;將通過參數傳入的界面控件中的數據導出到上一步創建的數據緩存文件中。7.根據權利要求5所述的一種本地緩存方法,其特征在于,所述功能界面數據的本地緩存恢復接口提供過程為:1)對外提供一個接口,接口有兩個參數:要恢復本地緩存數據的界面控件、唯一標識該界面控件的標識;2)實現功能界面數據的本地緩存恢復接口:按照數據緩存文件的創建規則獲取數據緩存文件名,該文件名包含其獲取完整路徑;讀取數據緩存文件的內容并逐個單元格賦值到界面控件,賦值后并觸發界面控件本身的數據校驗事件,判斷緩存數據是否仍然合法。

說明書

一種本地緩存方法

技術領域

本發明涉及計算機技術領域,具體地說是一種本地緩存方法。

背景技術

通用ERP軟件產品一般應用比較復雜,單據信息項多且難以滿足所有使用人員的操作習慣,實際使用中普遍存在這樣的需求:表格窗口要能夠記住我上次設置的列順序及寬度、索引窗口要能夠記住我上次輸入的條件信息、單據信息在沒有完整錄入(不符合單據保存條件)的情況下能夠緩存在本地,下次登錄后繼續完成錄入等等,基于此,本發明提供提供一種可滿足上述需求的本地緩存方法。

發明內容

本發明的技術任務是針對以上不足之處,提供一種本地緩存方法。

本發明解決其技術問題所采用的技術方案是:

一種本地緩存方法,包括如下步驟:

首先對外提供功能界面格式的本地緩存和恢復接口;

然后對外提供功能界面數據的本地緩存和恢復接口;

最后根據本地緩存的功能調用相應的格式或數據的本地緩存和恢復接口。

所述功能界面格式的本地緩存和恢復接口中,格式緩存接口用于區分數據庫實例、操作員創建本地的格式緩存文件;格式恢復接口用于區分數據庫實例、操作員找到相應的格式緩存文件并重置界面。

所述功能界面格式的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:要緩存格式的界面控件、唯一標識該界面控件的標識;

2)實現界面格式的本地緩存接口:

創建一級格式緩存文件夾;

在一級格式緩存文件夾下繼續按數據庫實例和操作員的組合創建二級格式緩存文件夾;

在二級格式緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;

將通過參數傳入的界面控件的語法保存到上一步創建的格式緩存文件中。

所述功能界面格式的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:要恢復本地緩存格式的界面控件、唯一標識該界面控件的標識;

2)實現界面格式的本地緩存恢復接口:

按照格式緩存文件的創建規則獲取格式緩存文件名,該獲取的格式緩存文件名中包含完整路徑;

讀取格式緩存文件的內容并重置相關界面控件。

所述功能界面數據的本地緩存和恢復接口中,數據緩存接口用于區分數據庫實例、操作員創建本地的數據緩存文件;數據恢復接口用于區分數據庫實例、操作員找到相應的數據緩存文件并將文件的內容逐個賦值到相應的界面控件上,賦值后觸發原有界面的值改變事件,完成重新恢復的數據是否合法的校驗。

所述功能界面數據的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:要緩存數據的界面控件、唯一標識該界面控件的標識;

2)實現功能界面數據的本地緩存接口:

在程序目錄下創建一級數據緩存文件夾;

在一級數據緩存文件夾下繼續按數據庫實例和操作員的組合創建二級數據緩存文件夾;

在二級數據緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;

將通過參數傳入的界面控件中的數據導出到上一步創建的數據緩存文件中。

所述功能界面數據的本地緩存恢復接口提供過程為:

1)對外提供一個接口,接口有兩個參數:要恢復本地緩存數據的界面控件、唯一標識該界面控件的標識;

2)實現功能界面數據的本地緩存恢復接口:

按照數據緩存文件的創建規則獲取數據緩存文件名,該文件名包含其獲取完整路徑;

讀取數據緩存文件的內容并逐個單元格賦值到界面控件,賦值后并觸發界面控件本身的數據校驗事件,判斷緩存數據是否仍然合法。

本發明的一種本地緩存方法和現有技術相比,具有以下有益效果:

本發明的一種本地緩存方法,對原有的軟件開發方式沒有任何影響,可以以擴展的模式在原有代碼的基礎上調用相關組件,完成格式或數據的本地緩存和恢復,在數據緩存方面該技術能夠充分利用原有軟件的業務邏輯處理保證重新恢復的數據合法有效。本發明的本地緩存技術具有簡單、實用、通用的特點;本方法通過格式緩存接口記錄和恢復某個功能的界面格式,通過數據緩存接口記錄和恢復用戶輸入某個功能界面的數據信息;從而滿足各種緩存需求,滿足各種使用人員的操作習慣,靈活性高,實用性強,易于推廣。

具體實施方式

下面結合具體實施例對本發明作進一步說明。

本發明的一種本地緩存方法,包括如下步驟:

首先對外提供功能界面格式的本地緩存和恢復接口;

然后對外提供功能界面數據的本地緩存和恢復接口;

最后根據本地緩存的功能調用相應的格式或數據的本地緩存和恢復接口。

所述功能界面格式的本地緩存和恢復接口中,格式緩存接口用于區分數據庫實例、操作員創建本地的格式緩存文件;格式恢復接口用于區分數據庫實例、操作員找到相應的格式緩存文件并重置界面。

所述功能界面格式的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:

datawindowp_dw:要緩存格式的界面控件;

stringp_ljbs:唯一標識該界面控件的標識;

2)實現界面格式的本地緩存接口:

創建一級格式緩存文件夾;

在一級格式緩存文件夾下繼續按數據庫實例和操作員的組合創建二級格式緩存文件夾;

在二級格式緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;

將通過參數傳入的界面控件的語法保存到上一步創建的格式緩存文件中。

所述功能界面格式的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:

datawindowp_dw:要恢復本地緩存格式的界面控件;

stringp_ljbs:唯一標識該界面控件的標識;

2)實現界面格式的本地緩存恢復接口:

按照格式緩存文件的創建規則獲取格式緩存文件名,該獲取的格式緩存文件名中包含完整路徑;

讀取格式緩存文件的內容并重置相關界面控件。

所述功能界面數據的本地緩存和恢復接口中,數據緩存接口用于區分數據庫實例、操作員創建本地的數據緩存文件;數據恢復接口用于區分數據庫實例、操作員找到相應的數據緩存文件并將文件的內容逐個賦值到相應的界面控件上,賦值后觸發原有界面的值改變事件,完成重新恢復的數據是否合法的校驗。

所述功能界面數據的本地緩存接口提供過程為:

1)對外提供一個接口,接口有兩個參數:

datawindowp_dw:要緩存數據的界面控件;

stringp_ljbs:唯一標識該界面控件的標識;

2)實現功能界面數據的本地緩存接口:

在程序目錄下創建一級數據緩存文件夾;

在一級數據緩存文件夾下繼續按數據庫實例和操作員的組合創建二級數據緩存文件夾;

在二級數據緩存文件夾下以傳入的唯一標識參數命名并創建緩存文件;

將通過參數傳入的界面控件中的數據導出到上一步創建的數據緩存文件中。

所述功能界面數據的本地緩存恢復接口提供過程為:

1)對外提供一個接口,接口有兩個參數:

datawindowp_dw:要恢復本地緩存數據的界面控件;

stringp_ljbs:唯一標識該界面控件的標識;

2)實現功能界面數據的本地緩存恢復接口:

按照數據緩存文件的創建規則獲取數據緩存文件名,該文件名包含其獲取完整路徑;

讀取數據緩存文件的內容并逐個單元格賦值到界面控件,賦值后并觸發界面控件本身的數據校驗事件,判斷緩存數據是否仍然合法。

實施例:

一、首先提供開發界面格式的本地緩存接口,提供過程具體為:

functionintegerf_sc_dwsyntax_save(datawindowp_dw,stringp_ljbs)//保存數據窗口語法

ls_dir=trim(gscurdir)//軟件的安裝目錄

ls_dir1=ls_dir+"$LocalSyntax$"http://格式文件本地緩存目錄

ls_server=sqlca.servername//數據庫實例名

//格式文件的絕對路徑-軟件安裝目錄\格式臨時目錄\數據庫實例名+數據庫類型+帳套編號+操作員編號\數據窗口唯一別名

ls_dir2=ls_dir+"$LocalSyntax$\"+ls_server+GSkind+GsZtbh+"-"+GsZgbh

ls_file=ls_dir2+"\"+p_ljbs+".srd"

//獲取格式內容

ls_SynTax=p_dw.Object.DataWindow.Syntax

//創建格式文件并更新最新格式內容

ifnotDirectoryExists(ls_dir2)then

CreateDirectory(ls_dir1)

CreateDirectory(ls_dir2)

endif

ll_FileNum=fileopen(ls_file,StreamMode!,Write!,Shared!,Replace!)//

Forll_i=1Toll_Writes

ls_data=Mid(ls_SynTax,ll_CurrentPos,32765)

ll_CurrentPos+=32765

IfFileWrite(ll_FileNum,ls_data)=-1Then

FileClose(ll_FileNum)

Return-1

Endif

Next

FileClose(ll_FileNum)。

二、提供開發界面格式的本地恢復接口,具體提供過程為:

globalfunctionintegerf_sc_dwsyntax_read(datawindowp_dw,stringp_ljbs)//讀取數據窗口語法

ls_dir=trim(gscurdir)//軟件的安裝目錄

ls_server=sqlca.servername//數據庫實例名

//格式文件的絕對路徑-軟件安裝目錄\格式臨時目錄\數據庫實例名+數據庫類型+帳套編號+操作員編號\數據窗口唯一別名

ls_file=ls_dir+"$LocalSyntax$\"+ls_server+GSkind+GsZtbh+"-"+GsZgbh+"\"+p_ljbs+".srd"

//備份原有格式

ls_SynTax_old=p_dw.Object.DataWindow.Syntax

//備份原有SQL語法

ls_sqlselect_old=p_dw.Describe("datawindow.table.select")//Upper(gsSqlTrans(p_dw.Describe("datawindow.table.select")))

//緩存格式文件不存在則返回-1

IFNOTFileExists(ls_file)THENRETURN-1

//打開格式文件

ll_FileNum=FileOpen(ls_file,StreamMode!,Read!,SHARED!,Replace!)//

//獲取緩存的格式內容

FORi=1TOloops

bytes_read=FileRead(ll_FileNum,ls_data)

ls_SynTax=ls_SynTax+ls_data

NEXT

FileClose(ll_FileNum)//關閉格式文件

//數據窗口按緩存格式重置

p_dw.Create(ls_SynTax,ls_err)

//恢復原有SQL語法

p_dw.Modify("datawindow.table.select=~""+ls_sqlselect_old+"~"")。

三、提供開發界面數據的本地緩存接口,具體提供過程為:

globalfunctionintegerf_sc_dwsave(datawindowp_dw,stringp_ljbs)//1success0null-1error

ls_dir=trim(gscurdir)//軟件的安裝目錄

ls_dir1=ls_dir+"$LocalData$"http://數據文件本地緩存目錄

ls_server=sqlca.servername//數據庫實例名

//數據文件的絕對路徑-軟件安裝目錄\數據臨時目錄\數據庫實例名+數據庫類型+帳套編號+操作員編號\數據窗口唯一別名

ls_dir2=ls_dir+"$LocalSyntax$\"+ls_server+GSkind+GsZtbh+"-"+GsZgbh

ls_file=ls_dir2+"\"+p_ljbs+".XLS"

//創建目錄

ifnotDirectoryExists(ls_dir2)then

CreateDirectory(ls_dir1)

CreateDirectory(ls_dir2)

endif

ifp_dw.SaveAsAscII(ls_file,'','')=1then

messagebox('提示信息','導出數據成功!')

return1

else

messagebox('提示信息','導出數據失敗!')

return-1

endif

return1。

四、提供開發界面數據的本地恢復接口,具體提供過程為:

globalfunctionintegerf_sc_dwread(datawindowp_dw,stringp_ljbs)

ls_dir=trim(gscurdir)//軟件的安裝目錄

ls_server=sqlca.servername//數據庫實例名

//緩存文件的絕對路徑-軟件安裝目錄\數據臨時目錄\數據庫實例名+數據庫類型+帳套編號+操作員編號\數據窗口唯一別名

ls_file=ls_dir+"$LocalData$\"+ls_server+GSkind+GsZtbh+"-"+GsZgbh+"\"+p_ljbs+".XLS"

OLEObjectlole_xls

Integerli_return

//產生oleobject的實例

lole_xls=CREATEOLEObject

//連接ole對象

li_return=lole_xls.ConnectToNewObject("excel.application")

IFli_return<0THEN

MessageBox("連接失敗!","連接到EXCEL失敗,請確認您的系統是否已經安裝EXCEL!~r~n錯誤代碼:"+String(li_return))

RETURN-1

ENDIF

//打開EXCEL文件

lole_xls.Application.Workbooks.Open(ls_file)

longll_xls_Rcount,ll_xls_Ccount

ll_xls_Rcount=lole_xls.ActiveSheet.UsedRange.Rows.Count

ll_xls_Ccount=lole_xls.ActiveSheet.UsedRange.Columns.Count

ifll_xls_Rcount<2orisnull(ll_xls_Rcount)thengotoerr

//列名匹配

Stringls_Col[],ls_ColType[]

Longll_Cell[]

Stringls_colname,ls_temp,ls_coltext

Longll_count,n,nn,i=0

ll_count=Long(pdw.Describe("datawindow.column.count"))

IFIsNull(ll_count)ORll_count<1THENGOTOerr

FORn=1TOll_count

ls_colname=pdw.Describe("#"+String(n)+".Name")

ls_temp=pdw.Describe(ls_colname+".visible")

IFls_temp="0"THENCONTINUE//

ls_coltext=Trim(pdw.Describe(ls_colname+"_t.text"))

IFIsNull(ls_coltext)ORTrim(ls_coltext)=''THENCONTINUE

FORnn=1TOll_xls_Ccount

ls_temp=Trim(String(lole_xls.ActiveSheet.Cells(1,nn).value))//第一行要求是列名

IFls_temp=ls_coltextTHENEXIT//通過判斷標題

NEXT

IFnn>ll_xls_CcountORnn<1THENCONTINUE

i++

ls_Col[i]=ls_colname//列名

ls_ColType[i]=pdw.Describe("#"+String(n)+".ColType")//類型

ll_Cell[i]=nn//EXCEL列序

NEXT

ll_count=UpperBound(ls_Col[])

IFll_count<1THENGOTOerr

//數據窗口賦值

Longll_row_xls=2,ll_row_dw

Stringls_data

Doubleld_data

DOWHILEll_row_xls<=ll_xls_Rcount

IFll_row_xls=2THENpdw.SelectRow(0,FALSE)

ll_row_dw=pdw.InsertRow(0)

pdw.SelectRow(ll_row_dw,TRUE)

FORi=1TOll_count

ls_data=Trim(String(lole_xls.ActiveSheet.Cells(ll_row_xls,ll_Cell[i]).Value))

CHOOSECASELeft(Upper(ls_ColType[i]),3)

CASE"DEC","NUM","REA","LON","INT","ULO"

ld_data=Double(ls_data)

pdw.SetItem(ll_row_dw,ls_Col[i],ld_data)

CASEELSE

pdw.SetItem(ll_row_dw,ls_Col[i],ls_data)

ENDCHOOSE

NEXT

ll_row_xls++

LOOP//

lole_xls.Application.quit()

lole_xls.DisconnectObject()

DESTROYlole_xls

RETURN1//success

err:

lole_xls.Application.quit()

lole_xls.DisconnectObject()

DESTROYlole_xls

RETURN-1//。

五、最后,將需要本地緩存的功能調用相應的格式或數據的本地緩存和恢復接口。其具體實現過程為:

f_sc_dwsyntax_save(datawindowp_dw,stringp_ljbs)//保存本地格式

f_sc_dwsyntax_read(datawindowp_dw,stringp_ljbs)//讀取并恢復本地格式

f_sc_dwsave(datawindowp_dw,stringp_ljbs)//界面數據緩存本地

f_sc_dwread(datawindowp_dw,stringp_ljbs)//恢復本地緩存數據。

通過上面具體實施方式,所述技術領域的技術人員可容易的實現本發明。但是應當理解,本發明并不限于上述的具體實施方式。在公開的實施方式的基礎上,所述技術領域的技術人員可任意組合不同的技術特征,從而實現不同的技術方案。

除說明書所述的技術特征外,均為本專業技術人員的已知技術。

關 鍵 詞:
一種 本地 緩存 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種本地緩存方法.pdf
鏈接地址:http://www.wwszu.club/p-6401528.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大