Conferința vbstreets - vizualizare subiecte - copac în acces 2018

iGrok a scris: Și dacă a existat o structură de date, există o mulțime de opțiuni.

Una dintre cele mai simple:
Element_ID, Parent_ID, Element_Name

ID-ul_parent este ID-ul elementului părinte. Dacă Parent_ID = 0 - elementul este "la rădăcina" copacului.







Deci la mine se întoarce doar o masă. Și despre cele 4 directoare?

Am înțeles corect structura?

Departamente -> Departamente -> Sectoare -> Posturi -> Persoane.

Cu structura actuală, dacă datele sunt coerente la nivel intern, arborele poate fi construit, dar va fi suficient de dificil să se mențină acea coerență în sine cu schimbările.

Sau teoretic posibil, atunci când un departament va fi în două departamente?

Dacă este important să păstrați structura de date neschimbată - puteți încerca să construiți un copac în conformitate cu "Schema personalului".
Efectuați o selecție: SELECT DISTINCT depart, otd, sek, dolj FROM [Personal] ORDER BY depart, otd, sek, dolj
Apoi treceți prin înregistrări și adăugați la departamentele, departamentele, secțiile și posturile copacilor.
Ie pentru fiecare înregistrare, verificați dacă există deja un astfel de departament în rădăcina copacului, dacă nu, adăugați-l. Apoi este același lucru cu departamentul, dar nu mai este la rădăcină, ci în departamentul actual, etc. vpolt la post.

Acest mod de a construi un copac poate fi destul de lent, dar cum să implementeze ceva mai eficient fără a schimba structura bazei de date pe care nu o cunosc. Pot doar să sugerez o variație adecvată a structurii.

etichetă:
cli
jmp etichetă

În ceea ce privește structura de date, cred că ați vrut să propuneți adăugarea la mese

Element_ID, Parent_ID, Element_Name
ID-ul_parent este ID-ul elementului părinte. Dacă Parent_ID = 0 - elementul este "la rădăcina" copacului.

Oh, mi-am imaginat deja cum ar putea arăta: în primul rând, există o listă (selectați obedinyayuschy interogare union'ami directoare întregi într-o singură listă). dar se pare deja în TreeView (adică, fiecare element - rădăcina arborelui), și apoi, de lângă lista combo box, care a ales în mod individual numele. atunci când selectați un element din lista pe care am vedea în combo 0 sau cuvântul „nu“ - ceea ce înseamnă că elementul este rădăcina. Acum vom alege un combo din lista verticală necesare ne elementul și ID-ul este înregistrat în PARENT_ID elementul curent, și apoi actualizați arborele (procesul de actualizare ar trebui să fie optimizată cât mai mult posibil, astfel încât să nu frână, sau actualizare nu în mod automat și la simpla apăsare a unui buton), astfel încât în prima ramură apare în arbore.







Întreaga procedură se repetă până la capătul victorios!

Formularul însuși poate fi numit: directorul departamentelor.
_________________

Și da! Este foarte convenabil pentru vizualizarea arborescentă să facă o masă de legătură. acesta ar trebui să arate astfel:
Cod: Selectați toate codurile
Departament_ID,
Otdel_ID,
Sektor_ID,
Dolzhnost_ID,
Sotrudnik_ID
În fiecare intrare a acestui tabel, va fi prescrisă fiecare legătură a unui element dintr-un director cu orice element al altui sau mai multor. Bazați pe acest tabel și construiți un copac.

De fapt, un astfel de tabel pentru smitatyana este deja implementat pe jumătate în tabelul de personal, dar acest lucru este incorect. Este necesar să lăsați în staff numai câmpul cu numărul (ID) al înregistrării în tabela de conexiuni.

În această situație, Parent_ID nu este deloc necesar! Structura este ceva dură. În sector, numai departamentul poate fi partenerul direct. Angajatul post numai (pentru a afla de la care departament, sector, departament acest lucru este, de asemenea, indicat în intrare)
dacă un angajat are două posturi (lucrător intern cu fracțiune de normă), atunci în tabela de conexiuni vor fi două intrări corespunzătoare acestuia.

Programarea este disciplina aleasă de Dumnezeu! Dacă există Dumnezeu, atunci el a compilat universul, nu altfel.

Și dacă fac o cerere ForTree:
Cod: Selectați toate id - din lista de personal.ID
DEP_ID: IIf (IsNull (# 91; personal list.DEPART # 93;); ""; "b" # 91; lista de personal. DEPART # 93;)
OTD_ID: IIf (IsNull (# 91; staff list.Otdel # 93;); ";" cu " # 91; lista personalului. DEPARTAMENTUL # 93;)
SEK_ID: IIf (IsNull (# 91; staffing; SECOND # 93;); ""; "d" # 91; lista de personal.SECOR # 93;)
DOLJ_ID: IIf (IsNull (# 91; personal; DECIZIE # 93;); ""; "e" # 91; personal; DOCUMENT # 93;)
DEP_NAME: MEM_DEPART.Numele
OTD_NAME: DEPOSIT_NAME
SEK_NAME: SPN_SECTOR.Număr
DOLJ_NAME: SPD_TOND.Name
Și apoi voi trece prin înregistrări și voi adăuga ramuri?
Cod: Selectați toate dacă DEP_ID <> Null, atunci
PARENT_ID. = ""; Cheia. = DEP_ID; Nume. = DEP_NAME;
TreeView.Add (Parent_ID, Cheie, Nume);

dacă OTD_ID <> Null, atunci
PARENT_ID. = DEP_ID; Cheia. = OTD_ID; Nume. = OTD_NAME;
TreeView.Add (Parent_ID, Child, Key, Name);

dacă SEK_ID <> Null, atunci
PARENT_ID. = OTD_ID; Cheia. = SEK_ID; Nume. = SEK_NAME;
TreeView.Add (Parent_ID, Child, Key, Name);
Câmpul este obligatoriu. Nu poate fi gol
PARENT_ID. = SEK_ID; Cheia. = DOLJ_ID; Nume. = DOLJ_NAME;
TreeView.Add (Parent_ID, Child, Key, Name);
altfel "în postul părintele este departamentul
PARENT_ID. = OTD_ID; Cheia. = DOLJ_ID; Nume. = DOLJ_NAME;
TreeView.Add (Parent_ID, Child, Key, Name);
Cum se potrivește aceasta în sintaxa VB?

Cum merg prin înregistrări, având în vedere acest cod și sintaxa VB?

Apoi, deja cu copacul format, când este selectată foaia de copac, adică Trebuie să afișez numele complet al angajatului din Cartea personală (LC). LC va fi asociat cu solicitarea ForTree pentru STAKKASHT.LK și ForTree.ID.
și legătura tabelului de personal.ID și ForTree.ID. Așadar, vreau să afișez numele complet al caracterelor și caracteristicile postului din lista de personal cu foaia de lemn selectată.

Este posibil acest lucru? Ajutați-vă cu logica!
Și acum, pentru ce a început totul:
Creați cea mai convenabilă interfață pentru adăugarea / eliminarea / modificarea tuturor nodurilor arborelui. Este natural, cu un record în tabelul de personal. 4 zile mă lupt. HELP!

asta am obținut după o mulțime de cercetări pe Internet!
Oameni buni au ajutat pe forumuri!







Articole similare

Trimiteți-le prietenilor: