|

楼主 |
发表于 2012-1-19 16:23
|
显示全部楼层
本帖最后由 hxj710802 于 2012-1-19 17:37 编辑
Sub Ora_query()
Dim MyWS As Worksheet
Dim MyConnect As String
Dim MyRecordset As ADODB.Recordset
Dim MySQL As String
Set MyWS = ThisWorkbook.ActiveSheet
MyConnect = " rovider=MSDAORA.1 assword=gold;User ID=GADATA0011;Data Source=oradb; Persist Security Info=True"
MySQL = "select ACCOUNT.STRACCOUNTCODE As '科目编码'," & _
" ACCOUNT.STRACCOUNTNAME As '科目名称'," & _
" SUM(DECODE(ACCOUNT.INTDIRECTION,1,1,0)" & _
" *DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" -TO_DATE('2011-12-01','YYYY-MM-DD')),-1,1,0)" & _
" *((dblUnPostedDebit+dblPostedDebit)" & _
" -(dblUnPostedCredit+dblPostedCredit)))" & _
" +SUM(DECODE(ACCOUNT.INTDIRECTION,-1,1,0)" & _
" *DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" -TO_DATE('2011-12-01','YYYY-MM-DD')),-1,1,0)" & _
" *((dblUnPostedCredit+dblPostedCredit)" & _
" -(dblUnPostedDebit+dblPostedDebit))) " & _
"As '期初余额本币金额',"
MySQL1 = "SUM(DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD') " & _
" - TO_DATE('2011-12-01','YYYY-MM-DD')),-1,0,1)" & _
" *DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" - TO_DATE('2011-12-31','YYYY-MM-DD')),1,0,1)*(dblUnPostedDebit+dblPostedDebit)) " & _
" As '本期借方发生额本币金额'," & _
" SUM(DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" - TO_DATE('2011-12-01','YYYY-MM-DD')),-1,0,1)" & _
" *DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" - TO_DATE('2011-12-31','YYYY-MM-DD')),1,0,1)" & _
" *(dblUnPostedCredit+dblPostedCredit)) " & _
" As '本期贷方发生额本币金额', "
MySQL2 = " DECODE(ACCOUNT.INTDIRECTION,1,'借','贷') As '方向', " & _
" SUM(DECODE(ACCOUNT.INTDIRECTION,1,1,0)" & _
" *DECODE(SIGN(TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" -TO_DATE('2011-12-31','YYYY-MM-DD')),1,0,1)" & _
" *((dblUnPostedDebit+dblPostedDebit)" & _
" -(dblUnPostedCredit+dblPostedCredit)))" & _
"+SUM(DECODE(ACCOUNT.INTDIRECTION,-1,1,0)" & _
" *DECODE(SIGN( TO_DATE(ACCOUNTDAILY.STRDATE,'YYYY-MM-DD')" & _
" -TO_DATE('2011-12-31','YYYY-MM-DD')),1,0,1)" & _
" *((dblUnPostedCredit+dblPostedCredit)" & _
" -(dblUnPostedDebit+dblPostedDebit))) " & _
"As '期末余额本币金额'," & _
"max(Account.blnIsDetail)," & _
"max(Account.intLevel)," & _
"Max(Account.lngAccountTypeID) "
'两个Organization,Organization OrganizationAux "!
MySQL3 = "From Account, AccountDaily, Currencys," & _
" Customer, CustomerType, Employee, " & _
" Organization,Organization OrganizationAux "
MySQL4 = "Where ((Upper(Account.strAccountCode)=Upper('521') Or Account.strAccountCode Like '521-%'))" & _
" And Account.lngAccountID=AccountDaily.lngAccountID" & _
" And Currencys.lngCurrencyID(+)=AccountDaily.lngCurrencyID" & _
" And Customer.lngCustomerID(+)=AccountDaily.lngCustomerID " & _
" And Customer.lngCustomerTypeID = CustomerType.lngCustomerTypeID(+)" & _
" And Employee.lngEmployeeID(+)=AccountDaily.lngEmployeeID " & _
" AND AccountDaily.lngOrganizationID = Organization.lngOrganizationID(+) " & _
" AND AccountDaily.lngSourceOrganizationID = OrganizationAux.lngOrganizationID(+)" & _
" And Abs(dblPostedDebit)+ Abs(dblUnPostedDebit)+Abs(dblPostedCredit)" & _
" +Abs(dblUnPostedCredit)+ Abs(dblCurrencyPostedDebit)+Abs(dblCurrencyUnPostedDebit)" & _
" +Abs(dblCurrencyPostedCredit)+Abs(dblCurrencyUnPostedCredit)" & _
" +Abs(dblQuantityPostedDebit)+Abs(dblQuantityUnPostedDebit)" & _
" +Abs(dblQuantityPostedCredit)+Abs(dblQuantityUnPostedCredit)<>0 " & _
" AND AccountDaily.strDate <= '2011-12-31' " & _
" Group By ACCOUNT.STRACCOUNTCODE,ACCOUNT.STRACCOUNTNAME,ACCOUNT.INTDIRECTION " & _
" Order By ACCOUNT.STRACCOUNTCODE,ACCOUNT.STRACCOUNTNAME,ACCOUNT.INTDIRECTION "
MySQL = MySQL & MySQL1 & MySQL2 & MySQL3 & MySQL4
Set MyRecordset = New ADODB.Recordset
MyRecordset.Open MySQL, MyConnect
MyWS.Activate
MyWS.Cells.ClearContents
Range("A6").CopyFromRecordset MyRecordset
Range("A5:I5").Value = Array("科目编码", "科目名称", "期初余额本币金额", "本期借方发生额本币金额", "本期贷方发生额本币金额", "期末余额本币金额")
Set MyWS = Nothing
Set MyRecordset = Nothing
End Sub
|
|