Как кодировать опцию ALL в поле со списком - PullRequest
0 голосов
/ 02 апреля 2010

В моей форме есть поле со списком с выбором организации 10, 20, 30 ....

Я добавил ALL в поле со списком, но у меня возникли проблемы с реализацией оператора all в VBA. Ниже приведено описание случая, я должен получить информацию от организаций 10, 20, 30. Как мне получить ALL для генерации ??

Case Is = 1
    If cboOrg.ListIndex < 0 Then
        Call msg("Please select your organization!")
        Exit Sub
    End If
    sQ = sQ & " CC LIKE '" & cboOrg.Value & "*'"
    ORGCC = Trim(cboOrg.Value)

Ответы [ 2 ]

1 голос
/ 02 апреля 2010

Я думаю, что вы должны генерировать фразу WHERE / AND, если значение не "ALL" (вместо вашего текущего назначения):

If (cboOrg.Value <> "ALL") Then
    sQ = sQ & " AND CC LIKE '" & cboOrg.Value & "*'"
End If

Чтобы заставить его работать без изменения кода (генерируя AND или WHERE), вы можете попробовать:

If (cboOrg.Value <> "ALL") Then
    sQ = sQ & " CC LIKE '" & cboOrg.Value & "*'"
Else
    sQ = sQ & " 1=1"
End If

Вам действительно нужен LIKE (действительно ли CC начинается только с выбранного значения) или
WHERE CC = '" & cboOrg.Value & "'" будет достаточно?

0 голосов
/ 02 апреля 2010

Private Sub cmdGo_Click ()

Dim db As Database, rs As Recordset, sQ As String

Dim oXL, oExcel As Object

Set oXL = CreateObject("Excel.Application")

fPath = "\\firework\mmcfin\123files\Edmond\Lawson Query\Log\"

myTime = Now()

myFile = Environ("UserName") & "-" & Environ("ComputerName") & "-" & Replace(Replace(Replace(Trim(myTime), "/", "-"), " ", "-"), ":", "-")

pTitle = "Lawson Queries"

Set db = CurrentDb

Select Case cboActBud.ListIndex

    Case Is < 0
        Call msg("Please select your query type first: Actual or Budget!")
        Exit Sub

    Case Is = 0
        sQ = "SELECT * INTO [" & myFile & "] FROM ACT"
        toAdd = "WHERE"

    Case Is = 1
        sQ = "SELECT * INTO [" & myFile & "] FROM BUD"

        If cboBucket.ListIndex < 0 Then
            Call msg("Please select your budget bucket!")
            Exit Sub

        Else

            toAdd = "WHERE BUDGET_NBR = " & cboBucket.Value & " AND"

        End If

End Select

myAcctLo = txtACCT1.Value
myAcctHi = txtACCT2.Value

If IsNull(myAcctLo) Or myAcctLo < 1000 Or myAcctLo > 99999 Then

    Call msg("Account number is missing or invalid!")
    Exit Sub

End If

If IsNull(myAcctHi) Then

    myAcctHi = myAcctLo

End If

If myAcctLo > myAcctHi Then

    Call msg("Account range is invalid!")
    Exit Sub

End If

If myAcctLo < 90000 And myAcctHi >= 90000 Then

    Call msg("You can query amounts or units; but, not both at the same time!")
    Exit Sub

End If

Select Case myAcctLo

    Case Is < 90000: sQ = sQ & "AMT " & toAdd
    Case Is >= 90000: sQ = sQ & "UNT " & toAdd

End Select

Select Case cboLevel.ListIndex

    Case Is < 0
        Call msg("Please select your reporting level: Cost Center or Organization!")
        Exit Sub

    Case Is = 0
        If IsNull(txtCC) Then
            Call msg("Please enter your cost center!")
            Exit Sub
        End If
        sQ = sQ & " CC = " & txtCC.Value
        ORGCC = Trim(txtCC.Value)

    Case Is = 1
        If cboOrg.ListIndex < 0 Then
            Call msg("Please select your organization!")
            Exit Sub
        End If
        sQ = sQ & " CC LIKE '" & cboOrg.Value & "*'"
        ORGCC = Trim(cboOrg.Value)

       If (cboOrg.Value <> "All") Then
        sQ = sQ & " CC LIKE '" & cboOrg.Value & "*'"
        Else
        sQ = sQ & " 1=1"
        End If

End Select

If cboYear.ListIndex < 0 Then

    Call msg("Please select an year!")
    Exit Sub

End If

sQ = sQ & " AND FY = " & cboYear.Value & " AND (ACCT >= " & myAcctLo & " AND ACCT <= " & myAcctHi & ")"

DoCmd.Hourglass True

db.Execute sQ

sQ = "INSERT INTO tblLog (UserName, ComputerName, DateAndTime, ORGORCC, ACCT1, ACCT2, BUDGET, FY) VALUES ('" & _
     Environ("UserName") & "','" & Environ("ComputerName") & "',#" & myTime & "#," & ORGCC & "," & myAcctLo & _
     "," & myAcctHi & "," & IIf(cboBucket.ListIndex < 0, 0, Trim(cboBucket.Value)) & "," & Trim(cboYear.Value) & ")"

db.Execute sQ


DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, myFile, fPath & myFile, True

With oXL

    .Visible = True
    .Workbooks.Open (fPath & myFile)

End With

Set oXL = Nothing

DoCmd.Hourglass False

db.Close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...