




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
--采集模板XML結(jié)構(gòu)變量這六個(gè)變量是每個(gè)模板都必須要有的,可直接Copy。第一個(gè)變量@DbSourceFilePath表示的是數(shù)據(jù)源路徑。由用戶選擇數(shù)據(jù)源時(shí)賦值。若對源數(shù)據(jù)進(jìn)行了預(yù)處理,則在預(yù)處理代碼中需要對該變量進(jìn)行重新賦值。變量@年度、@單位名稱、@電子數(shù)據(jù)編號、@電子數(shù)據(jù)名稱表示的是會計(jì)數(shù)據(jù)的基本信息。由AO2011建立會計(jì)數(shù)據(jù)時(shí)賦值。變量@臨時(shí)電子數(shù)據(jù)編號,用于多套會計(jì)數(shù)據(jù)從AOExtract數(shù)據(jù)庫采集到AOFinance數(shù)據(jù)庫時(shí),用于標(biāo)識具體的每套會計(jì)數(shù)據(jù)。數(shù)據(jù)庫連接SourceDbConnection表示源數(shù)據(jù)的連接。如果源數(shù)據(jù)是SQLServer,那么ConnectionType就是SqlConnection;如果源數(shù)據(jù)是Access或者是Txt文本,那么ConnectionType就是OleDbConnection。AOExtractTempConnection表示AO采集模塊臨時(shí)庫的連接,也就是AOExtract數(shù)據(jù)庫的連接。AOFinanceConnection表示AO財(cái)務(wù)數(shù)據(jù)庫的連接,即AOFinance數(shù)據(jù)庫的連接。預(yù)處理如圖所示,對源數(shù)據(jù)進(jìn)行預(yù)處理,或者清空臨時(shí)數(shù)據(jù)庫等操作,放到PreProccesss該元素下。批量建賬接口DllAccoutList表示批量建賬的接口,其中,TypeName為反射的類名,F(xiàn)ileName表示動態(tài)鏈接庫DLL的名稱。Tasks和UpdateTaskTasksTasks元素中主要是針對AOExtract數(shù)據(jù)庫的操作,如數(shù)據(jù)從源數(shù)據(jù)中批量采集到AOExtract數(shù)據(jù)庫。由于有多套會計(jì)數(shù)據(jù)采集的情況,AO是循環(huán)執(zhí)行Tasks中的任務(wù),所以BulkCopy中的SrcSql元素,SQL語句中都要有“@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號”這句,并且針對源數(shù)據(jù)的預(yù)處理操作不能夠放在Tasks中,而要放到PreProccesss元素下。UpdateTaskUpdateTask元素主要是針對AOFinance數(shù)據(jù)庫的操作,如數(shù)據(jù)從AOExtract數(shù)據(jù)庫批量采集到AOFinance數(shù)據(jù)庫,或數(shù)據(jù)從源數(shù)據(jù)中批量采集到AOFinance數(shù)據(jù)庫。由于有多套會計(jì)數(shù)據(jù)采集的情況,AO是循環(huán)執(zhí)行UpdateTask中的任務(wù),所以若是數(shù)據(jù)從AOExtract數(shù)據(jù)庫批量采集到AOFinance數(shù)據(jù)庫,BulkCopy中的SrcSql元素,SQL語句中都要增加一個(gè)where條件“where電子數(shù)據(jù)編號=@臨時(shí)電子數(shù)據(jù)編號”。另外,在UpdateTask元素的最后,要增加一個(gè)Task。用于將臨時(shí)的電子數(shù)據(jù)編號,更新為創(chuàng)建會計(jì)數(shù)據(jù)時(shí)實(shí)際的電子數(shù)據(jù)編號。如下圖所示:任務(wù)TaskTask元素包括三種類型,分別是SqlTask,SqlBulkCopyTask和DllImportTask。SqlTaskSqlTask用于執(zhí)行SQL語句,例如Insert、Update、Delete、Truncate等。如下圖所示:SqlBulkCopyTaskSqlBulkCopyTask用于批量拷貝數(shù)據(jù)。該元素下可以有多個(gè)BulkCopy元素。BulkCopy表示批量拷貝的SQL查詢語句。其中,ColumnMappings中的字段要與查詢語句中的字段數(shù)相對應(yīng),字段的順序要一致。并且,SQL語句中的字段類型和目標(biāo)字段類型要一致。如果SQL語句中的查詢結(jié)果,與目標(biāo)表完全一致,那么可以去掉ColumnMappings元素。如下圖所示:若目標(biāo)數(shù)據(jù)庫中沒有DesTableName元素中的表名,那么需要自動創(chuàng)建目標(biāo)表,IsAutoCreateTable屬性變?yōu)門rue,并增加DesCreateTableSql元素,xml如下圖所示:DllImportTaskDllImportTask表示通過DLL處理的任務(wù)。其中,TypeName為反射的類名,F(xiàn)ileName表示動態(tài)鏈接庫DLL的名稱。數(shù)據(jù)采集轉(zhuǎn)換財(cái)務(wù)表采集參照Template.mdb中TBConvertWay表,根據(jù)字段對應(yīng)關(guān)系和數(shù)據(jù)存儲方式,編寫SQL語句。其中,年度、單位名稱、電子數(shù)據(jù)編號和電子數(shù)據(jù)名稱這四個(gè)字段是每張表都必填的。會計(jì)科目表會計(jì)科目表必填的字段有科目編碼、科目名稱、科目級別以及四個(gè)變量字段,余額方向不為必填字段,原始數(shù)據(jù)中有則填,沒有的話賬表重建時(shí)會根據(jù)AO基礎(chǔ)庫中的標(biāo)準(zhǔn)會計(jì)科目表自動生成。若Template.mdb中,TBConvertWay表的ISAccountBalDirection字段為1,那么表示源數(shù)據(jù)中會計(jì)科目表里有余額方向的字段。AccountBalDebit和AccountBalCredit字段分別表示借方和貸方對應(yīng)的值。例如,AccountBalDebit的值為J,AccountBalCredit的值為D,那么余額方向的SQL語句應(yīng)為:casewhen余額方向字段=‘J’then1when余額方向字段=‘D’then-1else0endas余額方向。Access中為iif(余額方向字段=‘J’,1,iif(余額方向字段=‘D’,-1,0))as余額方向。Template.mdb中,通過SourceFieldNameasCNTargetFieldName的方式,編寫出SQL語句,AccountTableName表示會計(jì)科目表的表名。如果IsAccountFilter為1,則要加上AccountFilter中的過濾條件(where…)例如:selectccodeas科目編碼,ccode_nameas科目名稱,igradeas科目級別,casewhenbproperty=-1then1whenbproperty=0then-1else0endas余額方向,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromcode;若沒有科目級別字段,則根據(jù)科目編碼生成科目級別。例如:selectccodeas科目編碼,ccode_nameas科目名稱,(selectcount(*)fromcodebwherea.ccodelikeb.ccode+'%')as科目級別,casewhenbproperty=-1then1whenbproperty=0then-1else0endas余額方向,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromcodeasa;科目余額期初表科目余額期初表必填的字段有科目編碼、本幣期初余額、余額方向、會計(jì)月份以及四個(gè)變量字段。通過SourceFieldNameasCNTargetFieldName的方式,編寫出SQL語句,BalTableName表示科目余額表的表名。如果IsBalFilter為1,則要加上BalFilter中的過濾條件(where…)例如:selectccodeas科目編碼,mbas本幣期初余額,casewhencbegind_c='借'then1whencbegind_c='貸'then-1else0endas余額方向,@年度as會計(jì)年份,1as會計(jì)月份,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromGL_accsumwhereiperiod=(selectmin(iperiod)fromGL_accsum)andcbegind_c<>'平';若BalType為1,則需要對上級科目的本幣期初余額進(jìn)行匯總,例如:select科目編碼,abs(isnull(本幣期初余額,0))本幣期初余額,casewhenisnull(本幣期初余額,0)=0then0when本幣期初余額>0then1else-1end余額方向,@年度as會計(jì)年份,1會計(jì)月份,@年度as年度,@單位名稱單位名稱,@電子數(shù)據(jù)編號電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱電子數(shù)據(jù)名稱from ( selecta.科目編碼, (selectsum(本幣期初余額*余額方向)本幣期初余額 from科目余額期初表_Tempb wherea.科目編碼=substring(b.科目編碼,1,len(a.科目編碼))andb.電子數(shù)據(jù)編號=@臨時(shí)電子數(shù)據(jù)編號 )本幣期初余額 from會計(jì)科目表a)aBalDirctionType表示余額方向的存儲類型,0表示字段顯示借貸,1表示金額字段正負(fù)顯示借貸,2表示根據(jù)科目類型顯示借貸,3表示根據(jù)借余額和貸余額字段顯示借貸。0:若BalDebitSign字段為’J’,BalCreditSign字段為’D’,那么SQL語句為casewhen余額方向字段=’J’then1when余額方向字段=‘D’then-1else0endas余額方向。1:selectabs(金額字段)as期初余額,casewhen金額字段>0then1,when金額字段<0then-1,else0endas余額方向。2:casewhen科目編碼like‘1%’or科目編碼like‘5%’then1,else-1endas余額方向。3:selectcasewhen借方期初-貸方期初>0then1when借方期初-貸方期初<0then-1else0endas余額方向,abs(借方期初-貸方期初)as本幣期初余額憑證庫憑證庫必填的字段有分錄序號,憑證類型名稱,借方金額,貸方金額,科目編碼,摘要,憑證號,憑證日期和四個(gè)變量字段。若Template.mdb數(shù)據(jù)庫的TBConvertWay表的IsHaveDebitCreditSign字段為1,表示憑證庫中金額的存儲方式為金額和借貸方向。例如DebitSign為“J”,CreditSign為“D”。那么SQL語句應(yīng)為casewhen借貸方向字段=‘J’then金額字段else0endas借方金額,casewhen借貸方向字段=‘D’then金額字段else0endas貸方金額。通過SourceFieldNameasCNTargetFieldName的方式,編寫出SQL語句,VoucherTableName表示憑證庫的表名。如果IsVoucherFilter為1,則要加上VoucherFilter中的過濾條件(where…)例如:selectconvert(varchar,i_id)as分錄序號,ccodeas科目編碼,mdas借方金額,mcas貸方金額,ccashieras出納人,convert(varchar,idoc)as附件數(shù),cbookas記賬人,csignas憑證類型名稱,convert(varchar,ino_id)as憑證號,dbill_dateas憑證日期,ccheckas審核人,cdigestas摘要,cbillas制單人,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromGL_accvouchwhereiperiod<13andiperiod>0andYEAR(GL_accvouch.dbill_date)=@年度andiflagisnull;若憑證庫由主從表構(gòu)成,則需要關(guān)聯(lián)為一個(gè)表,用從表leftjoin主表。若憑證庫中,沒有唯一標(biāo)識字段作為分錄序號,那么需要在AOExtract庫中建一個(gè)臨時(shí)的憑證庫表(憑證庫_temp)。這張臨時(shí)表需要創(chuàng)建一個(gè)自增長字段,作為分錄序號。最后從這張表中采集憑證庫。若憑證庫中不包含憑證輔助明細(xì),那么必然有一個(gè)或幾個(gè)關(guān)聯(lián)字段,關(guān)聯(lián)憑證庫和憑證輔助明細(xì)這兩張表。這一個(gè)或幾個(gè)關(guān)聯(lián)字段的值,合并起來作為分錄序號。科目設(shè)置先在臨時(shí)庫(AOExtract庫)中插入科目層級表數(shù)據(jù),然后根據(jù)科目層級表在AO財(cái)務(wù)庫(AOFinance庫)中插入科目設(shè)置數(shù)據(jù)。SQL語句應(yīng)為:科目層級表:selecta.[ccode]as[科目編碼],b.[ccode]as[第父級科目編碼],@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號from[code]asaleftjoin[code]asbona.[ccode]likeb.[ccode]+'%'科目設(shè)置:selectsum((casewhen級別=1then1else0end)*本級長度)第一級科目長度,sum((casewhen級別=2then1else0end)*本級長度)第二級科目長度,sum((casewhen級別=3then1else0end)*本級長度)第三級科目長度,sum((casewhen級別=4then1else0end)*本級長度)第四級科目長度,sum((casewhen級別=5then1else0end)*本級長度)第五級科目長度,sum((casewhen級別=6then1else0end)*本級長度)第六級科目長度,sum((casewhen級別=7then1else0end)*本級長度)第七級科目長度,sum((casewhen級別=8then1else0end)*本級長度)第八級科目長度,sum((casewhen級別=9then1else0end)*本級長度)第九級科目長度,sum((casewhen級別=10then1else0end)*本級長度)第十級科目長度,sum((casewhen級別=11then1else0end)*本級長度)第十一級科目長度,sum((casewhen級別=12then1else0end)*本級長度)第十二級科目長度,sum((casewhen級別=13then1else0end)*本級長度)第十三級科目長度,sum((casewhen級別=14then1else0end)*本級長度)第十四級科目長度,sum((casewhen級別=15then1else0end)*本級長度)第十五級科目長度,sum((casewhen級別=16then1else0end)*本級長度)第十六級科目長度,sum((casewhen級別=17then1else0end)*本級長度)第十七級科目長度,sum((casewhen級別=18then1else0end)*本級長度)第十八級科目長度,sum((casewhen級別=19then1else0end)*本級長度)第十九級科目長度,sum((casewhen級別=20then1else0end)*本級長度)第二十級科目長度,''as編碼分隔符,a.科目編碼,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱from(selecta.科目編碼,a.第父級科目編碼,c.級別,c.本級長度,a.電子數(shù)據(jù)編號from科目層級表aleftjoin(selecta.科目編碼,count(*)級別,len(科目編碼)-isnull((selectmax(len([第父級科目編碼]))from科目層級表bwherea.科目編碼=b.科目編碼anda.科目編碼<>b.第父級科目編碼),0)本級長度from科目層級表awhere電子數(shù)據(jù)編號=@臨時(shí)電子數(shù)據(jù)編號groupbya.科目編碼)cona.第父級科目編碼=c.科目編碼)awhere電子數(shù)據(jù)編號=@臨時(shí)電子數(shù)據(jù)編號groupbya.科目編碼orderbya.科目編碼輔助賬若Template.mdb數(shù)據(jù)庫的TBConvertWay表的AidFlag字段為1,表示數(shù)據(jù)中有輔助賬。需要處理輔助信息表、輔助余額期初表和憑證輔助明細(xì)表。輔助信息表輔助信息表需要參考Delphi的數(shù)據(jù)預(yù)處理代碼。代碼中會創(chuàng)建一個(gè)aidInfo表,包括AidType,AidCode,AidName,AidDec,AidVouSourceFiledName,AidBalSourceFiledName這幾個(gè)字段。其中只需要用前三個(gè)字段。AidType對應(yīng)輔助類型,AidCode對應(yīng)輔助編碼,AidName對應(yīng)輔助名稱。SQL語句應(yīng)為:select'部門'as輔助類型,cDepCodeas輔助編碼,cDepNameas輔助名稱,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromDepartmentunionselect'人員'as輔助類型,cPersonCodeas輔助編碼,cPersonNameas輔助名稱,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromPerSon若數(shù)據(jù)包含多級輔助賬,則還需要加入上級輔助編碼和輔助級別兩個(gè)字段,SQL語句例子:selectt1.輔助類型,t1.輔助編碼,t1.輔助名稱,t1.輔助級別,t2.輔助編碼as上級輔助編碼,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱from(select'部門'as輔助類型,a.strDepartmentCodeas輔助編碼,a.strDepartmentNameas輔助名稱,(selectcount(*)fromDepartmentascwherea.strDepartmentCodelikec.strDepartmentCode+'%')as輔助級別fromDepartmentasa)ast1leftjoin(select'部門'as輔助類型,a.strDepartmentCodeas輔助編碼,a.strDepartmentNameas輔助名稱,(selectcount(*)fromDepartmentascwherea.strDepartmentCodelikec.strDepartmentCode+'%')as輔助級別fromDepartmentasa)ast2ont1.輔助級別=t2.輔助級別+1andt1.輔助編碼liket2.輔助編碼+'%'unionselectt1.輔助類型,t1.輔助編碼,t1.輔助名稱,t1.輔助級別,t2.輔助編碼as上級輔助編碼,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱from(select'人員'as輔助類型,a.strEmployeeCodeas輔助編碼,a.strEmployeeNameas輔助名稱,(selectcount(*)fromEmployeeascwherea.strEmployeeCodelikec.strEmployeeCode+'%')as輔助級別fromEmployeeasa)ast1leftjoin(select'人員'as輔助類型,a.strEmployeeCodeas輔助編碼,a.strEmployeeNameas輔助名稱,(selectcount(*)fromEmployeeascwherea.strEmployeeCodelikec.strEmployeeCode+'%')as輔助級別fromEmployeeasa)ast2ont1.輔助級別=t2.輔助級別+1andt1.輔助編碼liket2.輔助編碼+'%'輔助余額期初表輔助余額期初表需要有科目編碼、輔助類型、輔助編碼、期初余額、余額方向等。寫SQL語句時(shí),需要按科目編碼、輔助編碼、余額方向等字段,匯總期初余額的值。輔助余額表只需采集一月份的數(shù)據(jù),SQL語句如下:selectccodeas科目編碼,iif(cbegind_c='借',1,iif(cbegind_c='貸',-1,0))as余額方向,'部門'as輔助類型,cdept_idas輔助編碼,sum(mb)as期初余額,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromGL_accasswhereiperiod=(selectmin(iperiod)fromGL_accass)and(cdept_id<>''andcbegind_c<>'平'andcdept_idisnotnull)groupbyccode,iif(cbegind_c='借',1,iif(cbegind_c='貸',-1,0)),cdept_idunionselectccodeas科目編碼,iif(cbegind_c='借',1,iif(cbegind_c='貸',-1,0))as余額方向,'人員'as輔助類型,cperson_idas輔助編碼,sum(mb)as期初余額,@年度as年度,@單位名稱as單位名稱,@電子數(shù)據(jù)編號as電子數(shù)據(jù)編號,@電子數(shù)據(jù)名稱as電子數(shù)據(jù)名稱fromGL_accasswhereiperiod=(selectmin(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人值守的停車場管理系統(tǒng)
- 光伏發(fā)電項(xiàng)目社會效益
- 高效辦公空間設(shè)計(jì)建議報(bào)告
- 模板專項(xiàng)施工方案(完整版)
- 電子設(shè)備回收與再利用技術(shù)指南
- 倉儲物流系統(tǒng)電商
- 面向員工的培訓(xùn)方案及實(shí)施計(jì)劃
- rdpac腫瘤復(fù)習(xí)試題附答案
- 人工智能算法及應(yīng)用試題及答案
- 往來文書操作指南
- 拘留所教育課件02
- 《網(wǎng)紅現(xiàn)象的研究背景、意義及文獻(xiàn)綜述(2100字)》
- 管接頭注塑模具設(shè)計(jì)開題報(bào)告
- 最新-駕駛員職業(yè)心理和生理健康知識二-課件
- 加氫裝置催化劑硫化方案
- 核電廠概率安全評價(jià)概述課件
- 2022“博學(xué)杯”全國幼兒識字與閱讀大賽選拔試卷
- 幼兒園硬筆專用字帖大寫數(shù)字描紅
- 滬教牛津版四年級上冊英語全冊課件
- 青島城園林綠化技術(shù)規(guī)范
- 2022年信息管理概論復(fù)習(xí)資料
評論
0/150
提交評論