Posted By

mausus on 05/30/09


Tagged


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

thastyle


cmdSearch


 / Published in: Visual Basic
 

  1. Private Sub cmdSearch_Click()
  2. Dim varWhere As Variant
  3.  
  4. ' Initializa Null
  5. varWhere = Null
  6.  
  7. ' Se o nome de uma companhia foi especificado
  8. If Not IsNothing(Me.txtCompany) Then
  9. ' .. gera o predicado
  10. varWhere = "[CustomerName] LIKE '" & Me.txtCompany & "*'"
  11. End If
  12.  
  13. ' Em seguida passa para as datas
  14. If Not IsNothing(Me.txtFromDate) Then
  15. If Not IsDate(Me.txtFromDate) Then
  16. MsgBox "Você deve digitar uma data válida para "Desde".", vbExclamation, gstrAppTitle
  17. Me.txtFromDate.SetFocus
  18. Exit Sub
  19. End If
  20. ' .. gera o predicado
  21. ' Nota: tire proveito da propagação do Null
  22. ' desse modo não será necessário testar qualquer predicado anterior
  23. varWhere = (varWhere + " AND ") & "[OrderDate] >= #" & _
  24. Format(Me.txtFromDate, "dd mmm yyyy") & "#"
  25. End If
  26. If Not IsNothing(Me.txtToDate) Then
  27. If Not IsDate(Me.txtToDate) Then
  28. MsgBox "Você deve digitar uma dara válida para "Até".", vbExclamation, gstrAppTitle
  29. Me.txtToDate.SetFocus
  30. Exit Sub
  31. End If
  32. ' Certifica que Até é depois ou igual a Desde
  33. If Not IsNothing(Me.txtFromDate) Then
  34. If Me.txtToDate < Me.txtFromDate Then
  35. MsgBox "'Até' não deve ser anterior a 'Desde'.", _
  36. vbExclamation, gstrAppTitle
  37. Me.txtToDate.SetFocus
  38. Exit Sub
  39. End If
  40. End If
  41. ' .. gera o predicado
  42. ' Nota: tire proveito da propagação do Null
  43. ' desse modo não será necessário testar qualquer predicado anterior
  44. varWhere = (varWhere + " AND ") & "[OrderDate] <= #" & _
  45. Format(Me.txtToDate, "dd mmm yyyy") & "#"
  46. End If
  47.  
  48. ' Em seguida passa para a Cidade
  49. If Not IsNothing(Me.txtCity) Then
  50. ' .. gera o predicado
  51. varWhere = (varWhere + " AND ") & "[City] LIKE '" & Me.txtCity & "*'"
  52. End If
  53.  
  54. ' Em seguida passa para o estado
  55. If Not IsNothing(Me.txtState) Then
  56. ' .. gera o predicado
  57. varWhere = (varWhere + " AND ") & "[Region] LIKE '" & Me.txtState & "*'"
  58. End If
  59.  
  60. ' Em seguida passa para o país
  61. If Not IsNothing(Me.txtCountry) Then
  62. ' .. build the predicate
  63. varWhere = (varWhere + " AND ") & "[Country] LIKE '" & Me.txtCountry & "*'"
  64. End If
  65.  
  66. ' Finally, do Sales Rep
  67. If Not IsNothing(Me.cmbSalesRep) Then
  68. ' .. build the predicate
  69. varWhere = (varWhere + " AND ") & "[SalesRepID] = " & Me.cmbSalesRep
  70. End If
  71.  
  72. ' Check to see that we built a filter
  73. If IsNothing(varWhere) Then
  74. MsgBox "Você deve dar entrada a pelo menos um critério de localização.", vbInformation, gstrAppTitle
  75. Exit Sub
  76. End If
  77.  
  78. ' Vê se há alguma linha com um rápido DLookup
  79. If IsNothing(DLookup("OrderID", "qryOrders", varWhere)) Then
  80. MsgBox "Nenhum Pedido satisfaz seu critério.", vbInformation, gstrAppTitle
  81. Exit Sub
  82. End If
  83.  
  84. ' Abre Clientes filtrado
  85. ' Nota: se o form já estiver aberto, apenas aplica o filtro
  86. DoCmd.OpenForm "frmOrders", WhereCondition:=varWhere
  87. ' Done
  88. DoCmd.Close acForm, Me.Name
  89.  
  90. End Sub

Report this snippet  

You need to login to post a comment.