2015-08-16 4 views
0

Я создал таблицу в функции vb6, но не смог получить ее значение из SQL-запроса в vb6.Я хочу, чтобы автоматически увеличивался s.no вместо месяца. Ниже приведена требуемая таблица. Пожалуйста, помогитеКак получить значение таблицы из запроса в vb6

S.NO EMPLOYEE_ID EMPLOYEE_NAME GROSS_SALARY 
1  1   abc    45677878 
2  2   xyz    5678998 

функция приводится ниже, которая создается

Private Sub Command1_Click() 

    Dim FileName As String 
    Dim lTaxablePay As Variant 
    Dim lSDLAmt As Variant 
    Dim lRsCompDet As New ADODB.Recordset 
    Dim lRsMonthlyDet As New ADODB.Recordset 
    Dim lTotCasual As Currency, lTotPermanent As Currency, lTotSDLAmt As Currency, lTotGrossAmt As Currency 

    Call MsgBox("This report will be generated for the period of " & MonthName(DTPFromDate.Month) & " to " & MonthName(DTPToDate.Month), vbOKOnly + vbExclamation, Me.Caption) 

    lstrSQL = "SELECT ADDRESS1, ADDRESS2, CITY, POSTCODE , TYPE_OF_BUSINESS " 
    lstrSQL = lstrSQL & " FROM I_HR_EMPLOYER_MASTER " 
    lstrSQL = lstrSQL & " WHERE EMPLOYER_CODE = '" & gEmployerCode & "' AND TAX_YEAR = " & gTaxYear 

    Set lRsCompDet = gObjDBConnection.ExecuteSQL(lstrSQL) 

    If RecordsetsIsEmpty(lRsCompDet) = True Then 
     MsgBox "Company Details are not entered.", vbOKOnly + vbInformation, Me.Caption 
     Exit Sub 
    End If 

    lTaxablePay = GetTaxablePay(, DTPFromDate.Month, DTPToDate.Month) 
    lstrSQL = " SELECT s.EMPLOYEE_ID,EMPLOYEE_NAME, " 
    lstrSQL = lstrSQL & " (SELECT sum(AMOUNT)As GROSS_SALARY FROM V_HR_PP_PROCESS_DATA s inner join I_HR_EMPLOYEE_MASTER m on m.EMPLOYER_CODE=s.EMPLOYER_CODE and m.EMPLOYEE_ID=s.EMPLOYEE_ID WHERE " 
    lstrSQL = lstrSQL & " EMPLOYER_CODE = A.EMPLOYER_CODE AND TAX_YEAR = A.TAX_YEAR AND PROCESS_MONTH = A.MONTH AND " 
    lstrSQL = lstrSQL & " TAX_YEAR = 2014 " 
    lstrSQL = lstrSQL & " group by s.EMPLOYER_CODE,s.EMPLOYEE_ID,EMPLOYEE_NAME,TAX_YEAR " 
    ' MsgBox (lstrSQL) 


    Set lRsMonthlyDet = gObjDBConnection.ExecuteSQL(lstrSQL) 

    lRsMonthlyDet.Sort = "Month Asc" 

    'If fSDLPercentage <> 0 Then 
     lSDLAmt = Val(lTaxablePay & "") * 1/100 
    ' End If 

fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 
    fObjTS.WriteLine " |    |     |     |     |      |" 
    fObjTS.WriteLine " | S.NO  | EMPLOYEE_ID  | EMPLOYEE NAME | GROSS SALARY | Total amount of  |" 
    fObjTS.WriteLine " |    |     |     |     | SDL. Paid to   |" 
    fObjTS.WriteLine " |    |     |     |     | the Bank    |" 
    fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 

    If RecordsetsIsEmpty(lRsMonthlyDet) = True Then 
    fObjTS.WriteLine " | January  |     |     |     |      |" 
    fObjTS.WriteLine " | February |     |     |     |      |" 
    fObjTS.WriteLine " | March  |     |     |     |      |" 
    fObjTS.WriteLine " | April  |     |     |     |      |" 
    fObjTS.WriteLine " | May   |     |     |     |      |" 
    fObjTS.WriteLine " | June  |     |     |     |      |" 
    fObjTS.WriteLine " | July  |     |     |     |      |" 
    fObjTS.WriteLine " | August  |     |     |     |      |" 
    fObjTS.WriteLine " | September |     |     |     |      |" 
    fObjTS.WriteLine " | October  |     |     |     |      |" 
    fObjTS.WriteLine " | November |     |     |     |      |" 
    fObjTS.WriteLine " | December |     |     |     |      |" 
    fObjTS.WriteLine " |    |     |     |     |      |" 
    fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 
    fObjTS.WriteLine " | TOTALS  |     |     |     |      |" 
    fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 
    Else 

     lTotCasual = 0: lTotPermanent = 0: lTotSDLAmt = 0: lTotGrossAmt = 0 
     Do While Not lRsMonthlyDet.EOF 

      'If fSDLPercentage <> 0 Then 
       lSDLAmt = (Val(lRsMonthlyDet.Fields("Gross_Permanent").Value & "") + Val(lRsMonthlyDet.Fields("Gross_Casual").Value & "")) * 1/100 
      ' Else 
      '  lSDLAmt = 0 
      ' End If 

      lTotCasual = lTotCasual + Val(lRsMonthlyDet.Fields("Employee_Id").Value & "") 
      lTotPermanent = lTotPermanent + Val(lRsMonthlyDet.Fields("Employee_Name").Value & "") 
      lTotGrossAmt = lTotGrossAmt + Val(lRsMonthlyDet.Fields("Gross_Salary").Value & "") + Val(lRsMonthlyDet.Fields("Gross_Permanent").Value & "") 
      lTotSDLAmt = lTotSDLAmt + Val(lSDLAmt & "") 

      fObjTS.WriteLine " | " & _ 
          ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("Employee_Id").Value & "")) & "|" & _ 
          ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("Employee_Name").Value & "")) & "|" & _ 
         ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("Gross_Salary").Value & "")) & "|" & _ 
          ConvertNumberToThousandSeparator(lSDLAmt, 24) & "|" 

      lRsMonthlyDet.MoveNext 

     Loop 

     fObjTS.WriteLine " |    |     |     |     |      |" 
     fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 
     fObjTS.WriteLine " | TOTALS  |" & _ 
          ConvertNumberToThousandSeparator(Val(lTotPermanent & ""), 18) & "|" & _ 
          ConvertNumberToThousandSeparator(Val(lTotCasual & ""), 17) & "|" & _ 
          ConvertNumberToThousandSeparator(Val(lTotGrossAmt & ""), 17) & "|" & _ 
          ConvertNumberToThousandSeparator(lTotSDLAmt, 24) & "|" 
     fObjTS.WriteLine " ------------------------------------------------------------------------------------------------" 

    End If 
    '-------------------------------------------------------------------- 
    fObjTS.WriteLine "" 

    fObjTS.CLOSE 

    Call ShowTextReportPreview(FileName) 

End Sub 
+0

Можете ли вы уточнить, что вы имеете в виду под "не удалось получить его значение из SQL Query", пожалуйста? Похоже, вы говорите, что пытаетесь получить ценность всей таблицы, и у меня возникают проблемы с этим. – BobRodes

+0

Да, конечно .. @ BobRodes. на самом деле я хочу получить значения таблиц, так как вы можете видеть, что я разработал таблицу. Значение поля, такое как EMPLOYEE_ID, EMPLOYEE_NAME, GROSS_SALARY, должно поступать из базы данных. запрос в порядке .. но я не знаю, как получить эти данные здесь в кодировании, а также s.no следует автоматически увеличивать. Пожалуйста, помогите – Kirat

+0

. Я хочу получить результат, который я описал в таблице. – Kirat

ответ

0

Это решение вышеуказанной проблемы

Private Sub cmdWCReport_Click() Dim FileName As String Dim lTaxablePay как вариант Dim lSDLAmt As Variant Dim lRsCompDet As New ADODB.Recordset Dim lRsMonthlyDet As New ADODB.Recordset Dim EmployeeID As String, EmployeeName As String, lTotBasicAmt как валюта, lTotGrossAmt как валюта, lTotUSDGrossPay Как Валюта

Call MsgBox("This report will be generated for the period of " & MonthName(DTPFromDate.Month), vbOKOnly + vbExclamation, Me.Caption) 

lstrSQL = "SELECT ADDRESS1, ADDRESS2, CITY, POSTCODE , TYPE_OF_BUSINESS " 
lstrSQL = lstrSQL & " FROM I_HR_EMPLOYER_MASTER " 
lstrSQL = lstrSQL & " WHERE EMPLOYER_CODE = '" & gEmployerCode & "' AND TAX_YEAR = " & gTaxYear 

Set lRsCompDet = gObjDBConnection.ExecuteSQL(lstrSQL) 

If RecordsetsIsEmpty(lRsCompDet) = True Then 
    MsgBox "Company Details are not entered.", vbOKOnly + vbInformation, Me.Caption 
    Exit Sub 
End If 

lTaxablePay = GetTaxablePay(, DTPFromDate.Month, DTPToDate.Month) 

lstrSQL = " SELECT A.EMPLOYEE_ID, A.EMPLOYEE_CODE, A.EMPLOYEE_NAME, " 
lstrSQL = lstrSQL & " (SELECT sum(AMOUNT) FROM V_HR_PP_PROCESS_DATA PP " 
lstrSQL = lstrSQL & " WHERE EMPLOYER_CODE = A.EMPLOYER_CODE AND TAX_YEAR = " & gTaxYear & " AND PROCESS_MONTH = " & DTPFromDate.Month 
lstrSQL = lstrSQL & " AND EMPLOYEE_ID = a.EMPLOYEE_ID AND PROCESS_YEAR = " & DTPFromDate.Year 
lstrSQL = lstrSQL & " AND PD_CODE = 'Z970') as GROSSPAY, " 
lstrSQL = lstrSQL & " (SELECT sum(AMOUNT) FROM V_HR_PP_PROCESS_DATA PP " 
lstrSQL = lstrSQL & " WHERE EMPLOYER_CODE = A.EMPLOYER_CODE AND TAX_YEAR = " & gTaxYear & " AND PROCESS_MONTH = " & DTPFromDate.Month 
lstrSQL = lstrSQL & " AND EMPLOYEE_ID = a.EMPLOYEE_ID AND PROCESS_YEAR = " & DTPFromDate.Year 
lstrSQL = lstrSQL & " AND PD_CODE = 'Z001') as BASICPAY, " 

lstrSQL = lstrSQL & " (SELECT sum(AMOUNT_OTHER_CURRENCY) FROM V_HR_PP_PROCESS_DATA PP " 
lstrSQL = lstrSQL & " WHERE EMPLOYER_CODE = A.EMPLOYER_CODE AND TAX_YEAR = " & gTaxYear & " AND PROCESS_MONTH = " & DTPFromDate.Month 
lstrSQL = lstrSQL & " AND EMPLOYEE_ID = a.EMPLOYEE_ID AND PROCESS_YEAR = " & DTPFromDate.Year 
lstrSQL = lstrSQL & " AND PD_CODE = 'Z970' AND OTHER_CURRENCY_CODE = 'USD') as USDGROSSPAY " 

lstrSQL = lstrSQL & " FROM I_HR_EMPLOYEE_MASTER A" 
lstrSQL = lstrSQL & " WHERE A.EMPLOYER_CODE = '" & gEmployerCode & "' " 
lstrSQL = lstrSQL & " AND CURRENT_EMPLOYEE_STATUS <> 'T' AND RECORD_STATUS <> 'D' " 
'MsgBox (lstrSQL) 

Set lRsMonthlyDet = gObjDBConnection.ExecuteSQL(lstrSQL) 

'If fSDLPercentage <> 0 Then 
    lSDLAmt = Val(lTaxablePay & "") * 1/100 

'End If

On Error Resume Next fObjTS.Close

FileName = CreateStdSpoolFileName("WORKMEN'S COMPENSATION REPORT") 
Set fObjTS = fobjSh.CreateTextFile(FileName, True) 

'Set fObjTS = fobjSh.OpenTextFile(FileName, ForWriting, True) 

fObjTS.WriteLine "" 
fObjTS.WriteLine "       TANZANIA REVENUE AUTHORITY" 
fObjTS.WriteLine "        WC FUND" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "       WORKMEN'S COMPENSATION FUND(WCF)" 
fObjTS.WriteLine "      EMPLOYER 'S END OF THE YEAR CERTIFICATE" 
fObjTS.WriteLine "         YEAR " & gTaxYear 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine " To: The Regional/District Revenue Officer" 
fObjTS.WriteLine "  Income Tax Department" 
fObjTS.WriteLine "  P.O.Box............................." 
fObjTS.WriteLine "   ............................. Employer's Income Tax Number " & fEmployersITNumber 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine " -------------------------------------------------------------------------------" 
fObjTS.WriteLine "| 1. Name Of Employer     |" & PadR(gEmployerName, 39) & "|" 
fObjTS.WriteLine "|          |          |" 
fObjTS.WriteLine "| 2. Address: Postal     |" & PadR(lRsCompDet.Fields("Address1").Value & "", 39) & "|" 
fObjTS.WriteLine "|    Physical    |" & PadR(lRsCompDet.Fields("Address2").Value & "", 39) & "|" 
fObjTS.WriteLine "|          |" & PadR(lRsCompDet.Fields("CITY").Value & "," & lRsCompDet.Fields("POSTCODE").Value, 39) & "|" 
fObjTS.WriteLine "| 3. Nature of Business    |" & PadR(lRsCompDet.Fields("TYPE_OF_BUSINESS").Value & "", 39) & "|" 
fObjTS.WriteLine "|          |          |" 
fObjTS.WriteLine "|  State Whether     |          |" 
fObjTS.WriteLine "| 4. Individual/PartnerShips/   |          |" 
fObjTS.WriteLine "|  Companies/      |          |" 
fObjTS.WriteLine "|  Parastatals/and others e.g Clubs |          |" 
fObjTS.WriteLine "|  Trusts and Associations   |          |" 
fObjTS.WriteLine "| 5. Amount       |" & ConvertNumberToThousandSeparator(Val(lTaxablePay & ""), 16) & "      |" 
fObjTS.WriteLine "| 6. Applicable Month     |" & DTPFromDate & "       |" 
fObjTS.WriteLine "--------------------------------------------------------------------------------" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine " The total amount of gross emoluments paid during the year " & gTaxYear & " added up" 
fObjTS.WriteLine "to Shs " & ConvertNumberToThousandSeparator(Val(lTaxablePay & ""), 16) & " and " & 1 & "% of which works to Shs" & ConvertNumberToThousandSeparator(lSDLAmt, 16) & " as" 
fObjTS.WriteLine "shown on the reverse of this Form." 
fObjTS.WriteLine "" 
fObjTS.WriteLine " I/We Certify that the particulars entered on the form HL.9 already submitted" 
fObjTS.WriteLine "Monthly for the period from January to December, " & gTaxYear & " are correct." 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "Date " & Format(Date, "dd/MM/yyyy") & "         (Signature and rubber stamp)" 
fObjTS.WriteLine "" 
fObjTS.WriteLine "To be submitted in original to the relevant Income Tax Office on or before" 
fObjTS.WriteLine "31St January of the Year following." 

'Second Page 
fObjTS.WriteLine Chr(12) 
fObjTS.WriteLine "         SUMMARY FOR THE " 
fObjTS.WriteLine "          YEAR " & gTaxYear 
fObjTS.WriteLine "" 
fObjTS.WriteLine "" 

fObjTS.WriteLine " ----------------------------------------------------------------------------------------------------------------" 
fObjTS.WriteLine " |    |     |     |     |      |    |" 
fObjTS.WriteLine " | S.NO  | EMPLOYEE_CODE | EMPLOYEE NAME | GROSS SALARY | BASIC SALARY   | USD_GROSS |" 
fObjTS.WriteLine " |    |     |     |     |      |    |" 
fObjTS.WriteLine " |    |     |     |     |      |    |" 
fObjTS.WriteLine " ----------------------------------------------------------------------------------------------------------------" 

lTotGrossAmt = 0: lTotBasicAmt = 0 Dim lintCtr As Long lintCtr = 1

Do While Not lRsMonthlyDet.EOF 
     fObjTS.WriteLine " | " & PadL(CStr(lintCtr), 5, False) & _ 
         "  | " & PadR(lRsMonthlyDet.Fields("EMPLOYEE_CODE").Value, 10) & _ 
         "  | " & PadR(lRsMonthlyDet.Fields("EMPLOYEE_NAME").Value, 10) & _ 
         "  | " & ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("GROSSPAY").Value & ""), 15) & _ 
         "| " & ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("BASICPAY").Value & ""), 22) & _ 
         "| " & ConvertNumberToThousandSeparator(Val(lRsMonthlyDet.Fields("USDGROSSPAY").Value & ""), 8) & "  |" 


     lTotGrossAmt = lTotGrossAmt + Val(lRsMonthlyDet.Fields("GROSSPAY").Value & "") 
     lTotBasicAmt = lTotBasicAmt + Val(lRsMonthlyDet.Fields("BASICPAY").Value & "") 
     lTotUSDGrossPay = lTotUSDGrossPay + Val(lRsMonthlyDet.Fields("USDGROSSPAY").Value & "") 


      lRsMonthlyDet.MoveNext 
      lintCtr = lintCtr + 1 
    Loop 

    fObjTS.WriteLine " |    |     |     |     |      |    |" 
    fObjTS.WriteLine " -----------------------------------------------------------------------------------------------------------------" 
    fObjTS.WriteLine " | TOTALS  |" & _ 
         " " & "     |" & _ 
         " " & "    |" & _ 
     ConvertNumberToThousandSeparator(Val(lTotGrossAmt), 16) & " |" & _ 
     ConvertNumberToThousandSeparator(Val(lTotBasicAmt), 24) & "|" & _ 
     ConvertNumberToThousandSeparator(Val(lTotUSDGrossPay), 10) & "  |" 
    fObjTS.WriteLine " -----------------------------------------------------------------------------------------------------------------" 

fObjTS.Close

Call ShowTextReportPreview(FileName) 

End Sub }

Смежные вопросы