Prikazi cijelu temu 06.06.2017 11:31
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Lokacija:Tuzla


Predmet:Re: Query od vise tabela
Evo moja pretraga.
Napravi Novu formu i na nju stavi 2 list boxa.
Prvi list neka se zove 'List0' a drugi neka sezove 'temp'.
U list0:
rowsource type neka bude value lista.
column count 2
column with 3;0
u list temp:
column count 28 ili manje po zelji

Napravi i jedno tekstualno polje koje ce se zvati 'uslov'.
I jos jedan komandni taster 'command2'

Evo kod:
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub Command2_Click()
  2. Dim uslov, Imepolja As String
  3. Dim tip As Integer
  4. Dim SQl As String, SQlUslov As String
  5. Dim Itm, Ctl As Control
  6.  
  7.  
  8. uslov = Me.uslov
  9. If Format$(uslov) = "" Then GoTo Kraj
  10. SQl = "SELECT * FROM TblTemp "
  11. Set Ctl = Me.List0
  12. For Each Itm In Ctl.ItemsSelected
  13. Imepolja = Trim(Ctl.Column(0, Itm))
  14. tip = Trim(Ctl.Column(1, Itm))
  15. DodajUslov Imepolja, tip, uslov, SQlUslov
  16. Next Itm
  17. If SQlUslov <> "" Then
  18. SQl = SQl & " WHERE " & SQlUslov
  19. Else
  20. SQl = "SELECT * FROM tblTemp WHERE False<>False"
  21. End If
  22. Me.temp.RowSource = SQl
  23. Kraj:
  24. End Sub
  25.  
  26. Private Sub Form_Load()
  27. Dim Db As DAO.Database
  28. Dim tdf As DAO.TableDef
  29. Dim Fld As DAO.Field
  30. Dim tmp As String
  31.  
  32. Set Db = CurrentDb
  33. Set tdf = Db.TableDefs("tblTemp")
  34.  
  35. For Each Fld In tdf.Fields
  36. tmp = tmp & Fld.Name & ";" & Fld.Type & ";"
  37. Next
  38. tmp = Left(tmp, Len(tmp) - 1)
  39. Me.List0.RowSourceType = "Value List"
  40. Me.List0.RowSource = tmp
  41. End Sub
  42.  
  43. Sub DodajUslov(Imepolja As String, tip As Integer, uslov, SQlUslov As String)
  44. Dim Poz As Integer
  45.  
  46. If SQlUslov <> "" Then
  47. SQlUslov = SQlUslov & " OR "
  48. End If
  49.  
  50. Select Case tip
  51.  
  52. Case 1
  53. If uslov = Val(-1) Or uslov = Val(0) Then
  54. SQlUslov = SQlUslov & Imepolja & "=" & uslov
  55. Else
  56.     If SQlUslov <> "" Then
  57.     SQlUslov = Left(SQlUslov, Len(SQlUslov) - 4)
  58.     End If
  59. End If
  60. Case 4
  61. If IsNumeric(uslov) Then
  62. SQlUslov = SQlUslov & Imepolja & "=" & uslov
  63. Else
  64.     If SQlUslov <> "" Then
  65.     SQlUslov = Left(SQlUslov, Len(SQlUslov) - 4)
  66.     End If
  67. End If
  68. Case 8
  69. Poz = InStr(1, uslov, "-")
  70. If Poz > 0 Then
  71. On Error GoTo PRAZNO
  72.     SQlUslov = SQlUslov & "BETWEEN #" & Format(Left(uslov, Poz - 1), "dd-mm-yyyy") _
  73.     & "# AND #" & Format(Mid(uslov, Poz + 1), "dd-mm-yyyy") & "#"
  74. PRAZNO:
  75.     If SQlUslov <> "" Then
  76.     SQlUslov = Left(SQlUslov, Len(SQlUslov) - 4)
  77.     End If
  78.     Err.Clear
  79.     On Error GoTo 0
  80. Else
  81. Dim Dat As Date
  82.     On Error Resume Next
  83.     Dat = uslov
  84.     If Err.Number > 0 Then
  85.         If SQlUslov <> "" Then
  86.         SQlUslov = Left(SQlUslov, Len(SQlUslov) - 4)
  87.         End If
  88.     Err.Clear
  89.     On Error GoTo 0
  90.     Else
  91.     uslov = "#" & Format(uslov, "dd-mm-yyyy") & "#"
  92.     SQlUslov = SQlUslov & Imepolja & "=" & uslov
  93.     End If
  94. End If
  95. Case Is > 9
  96. SQlUslov = SQlUslov & Imepolja & " Like '*" & uslov & "*'"
  97. End Select
  98. End Sub

Trebalo bi malo istestirati.
Mozes dodati i u list0 neke druge nazive polja koji ce vidjeti korisnik.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.