Cum fac un camp tip "breadcrumbs" ?

Informatii despre cum se utilizeaza Microsoft Access 2003. Baze de date, Interogari, Formulare, Rapoarte, etc
Închis
mariusene
Mesaje: 43
Membru din: Vin Oct 21, 2011 12:19 pm

Cum fac un camp tip "breadcrumbs" ?

Mesaj de mariusene » Lun Iun 16, 2014 8:20 pm

Cum pot crea in ACCESS 2003 un camp de tipul "breadcrumbs navigation" din site-urile web?
Mai exact, am tabelul cu urmatoarele campuri:
ID
denumire
ID parinte


si daca ma duc pe inregistrarea DVR 8 canale model xxxxx vreau sa obtin un camp de genul:
Home > Supraveghere video > DVR 4 / 8 / 16 canale > DVR 8 canale > DVR 8 canale model xxxxx
sau in ordine inversa.

denumire (nivel n) > denumire (nivel n-1) > denumire (nivel n-2) > ... > denumire (nivel 0)

Nivelul 0 fiind inregistrarile care nu se mai subordoneaza altora.

mariusene
Mesaje: 43
Membru din: Vin Oct 21, 2011 12:19 pm

Re: Cum fac un camp tip "breadcrumbs" ?

Mesaj de mariusene » Mar Iun 17, 2014 10:37 am

Tot cautand pe net am gasit urmatorul cod pentru o functie care verifica pe "ramura" de la inregistrarea curenta pana la inregistrarea de nivel 0 si imi returneaza doar ID-ul acesteia.
Dar nu este exact ce imi trebuie si nici nu stiu cum as putea sa o modific pentru a lucra cum imi trebuie mie, adica sa imi afiseze toata calea.

Cod: Selectaţi tot

Public Function JobRoot(Id As Long, ParentId As Long) As Long
   If ParentId = 0 Then
      JobRoot = Id
      Exit Function
   End If

   Dim Rst As New ADODB.Recordset
   Dim sql As String
   sql = "SELECT Id, ParentID FROM JobTable WHERE Id = " & ParentId & ";"
   Rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly

   If Rst.Fields("ParentID") = 0 Then
      JobRoot = Rst.Fields("Id")
   Else
      JobRoot = JobRoot(Id, Rst.Fields("ParentID"))    ' Recursive.
   End If

   Rst.Close
   Set Rst = Nothing
End Function

Marin Zanfir
Mesaje: 88
Membru din: Vin Sep 04, 2009 7:45 am
Localitate: Slatina

Re: Cum fac un camp tip "breadcrumbs" ?

Mesaj de Marin Zanfir » Joi Iun 19, 2014 8:43 am

O posibila solutie este aceasta:

Cod: Selectaţi tot

Public Function BreadCrumbs(ByVal ID As Long) As String
    Dim rs As DAO.Recordset
    Dim strBC() As String
    Dim i As Long, j As Long, IDP As Long
    
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1 WHERE ID=" & ID, dbOpenSnapshot, dbReadOnly)
    If rs.EOF Then
        rs.Close
        Set rs = Nothing
        BreadCrumbs = ""
        Exit Function
    End If
    
    i = -1
    Do Until rs.EOF
        i = i + 1
        ReDim Preserve strBC(i)
        strBC(i) = rs!Denumire
        IDP = rs!IDParinte
        Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1 WHERE ID=" & IDP, dbOpenSnapshot, dbReadOnly)
    Loop
    
    rs.Close
    Set rs = Nothing

    Dim strX As String
    strX = ""
    For j = i To 0 Step -1
        If j <> i Then strX = strX & " > "
        strX = strX & strBC(j)
    Next j
    
    BreadCrumbs = strX
End Function

mariusene
Mesaje: 43
Membru din: Vin Oct 21, 2011 12:19 pm

Re: Cum fac un camp tip "breadcrumbs" ?

Mesaj de mariusene » Joi Iun 19, 2014 2:52 pm

Multumesc mult.
Ma apuc acum de treaba sa vad cum merge.

Închis

Înapoi la “Intrebari despre Access 2003”