Aangepast keuzevak

Status
Niet open voor verdere reacties.
ik vind deze methode best aardig werken. maar hoe zit het precies met het toevoegen van nieuwe hoofd onderwerpen?
het is me al gelukt om op bestaande onderwerpen sub onderwerpen toe te voegen.
ik wil de gebruikers een optie geven om hoofd onderwerpen toe te voegen via een invoer formulier of iets dergelijks.
 
Ik weet niet of ik gebruikers de optie zou willen geven om (hoofd)onderwerpen toe te voegen; ik zou dat toch bij een beheerder laten. Voor je het weet heb je een oerwoud aan verschillende, misschien wel dezelfde betekenis hebbende onderwerpen, die maar één keer o.i.d. gebruikt worden. Voor je het weet heb je een wildgroei, waar niemand meer overzicht over heeft. En eenmaal gebruikt, kun je een onderwerp niet zomaar meer verwijderen, omdat je dan koppelingen hebt met andere records. Gebruikers missen nu eenmaal het grote overzicht... Over een onderwerpenstructuur moet je dus goed nadenken, lijkt mij. Ik zou eerder kiezen voor een systeem waarbij een gebruiker wel een onderwerp kan aanvragen, maar niet zelf kan aanmaken.
 
hoe voeg ik een nieuw hoofd onderwerp toe?
ik heb een beetje geprobeerd een sub onderwerp is geen probleem.
maar een hoofd onderwerp lukt me niet.
ik vermoed dat er dan nog een query moet worden toe gevoegd of heb ik dit mis?
 
Een hoofdonderwerp is elk record zonder ParentID.
 
als ik een een dergelijke record invoer zie ik hem niet in het keuzevak staan.
de enige hoofdonderwerpen die ik in het keuzevak te zien krijg zijn: Besturingssystemen, Hardware Netwerk, Hardware werkplek.
als ik in de tabel tCategorie kijk zie ik nog 3 records zonder ParentID die worden ook niet in het keuzevak weergegeven.
in het voorbeeld is dit precies het zelfde.
 
Laatst bewerkt:
In mijn voorbeeldje zit nog een subtiel, maar hinderlijk foutje. In deze versie is dat er uitgehaald; hopelijk kun je a.d.h.v. de code voorbeelden nu wel nieuwe toevoegen en terugzien :)
Bovedien zit er een extra techniek bij: een Treelist view...
 

Bijlagen

Nog even een vraagje is het mogelijk om op een één of andere manier te indexeren op Hoofdonderwerp?
Hoofdonderwerp mag namelijk maar 1 keer voorkomen en Subonderwerp meerdere keren.
 
Een index maken van HoofdID en ParentID. Zowiezo een handige optie, want ook een subonderwerp wil je maar één keer aan een parentID kunnen hangen.
 
Hemaal in het begin gaf je een query waarmee ik de woorden kon ophalen.
hoe zou deze query er uit zien met 2 sub onderwerpen? ( Met alle 3 de keuzevakken)
op het moment gebruik ik er namelijk alleen 2 keuzevakken.
 
Ik neem aan dat je een Categorie-Subcategorie-SubSubcategorie constructie bedoelt? Drie keer de tabel toevoegen, en de ID van de eerste tabel koppelen aan de ParentID van de tweede en de ID van de tweede koppelen aan de ParentID van derde. Je bouwt dan a.h.w. steeds een niveau verder.
 
Ik bedoel de volgende code hiermee kan ik 2 onderwerpen zien maar ik wil er graag 3 kunnen zien

[SQL]SELECT Notities.Id, Notities.Datum, Notities.Onderwerp, Hoofd_Cat.Naam AS Hoofdcat, Notities.Subonderwerp, Sub_Cat.Naam AS Subcat, Notities.[Relevant voor Made], Notities.Ingevoerd, Notities.Opmerking, Weekcode([Datum]) AS [wk/dag]
FROM tCategorie AS Sub_Cat INNER JOIN (tCategorie AS Hoofd_Cat INNER JOIN Notities ON Hoofd_Cat.CatID = Notities.Onderwerp) ON Sub_Cat.CatID = Notities.Subonderwerp;[/SQL]

De naam van het 3e onderwerp is : Subonderwerp2

Alles werkt alleen de toevoeging om de waarde van Subonderwerp2 weer te geven lukt me steeds niet.

alvast bedankt
 
Op basis van drie niveaus ziet een query er zo uit:
Code:
SELECT Categorie.Naam AS [Level 1], SubCat1.Naam AS [Level 2], SubCat2.Naam AS [Level 3]
FROM (tCategorie AS Categorie LEFT JOIN tCategorie AS SubCat1 ON Categorie.CatID = SubCat1.ParentID) LEFT JOIN tCategorie AS SubCat2 ON SubCat1.CatID = SubCat2.ParentID;
En op 4 niveau's:
Code:
SELECT Categorie.Naam AS [Level 1], SubCat1.Naam AS [Level 2], SubCat2.Naam AS [Level 3], SubCat3.Naam AS [Level 4]
FROM ((tCategorie AS Categorie LEFT JOIN tCategorie AS SubCat1 ON Categorie.CatID = SubCat1.ParentID) LEFT JOIN tCategorie AS SubCat2 ON SubCat1.CatID = SubCat2.ParentID) LEFT JOIN tCategorie AS SubCat3 ON SubCat2.CatID = SubCat3.ParentID;
Ik denk dat je zo het idee wel meekrijgt. Kwestie van steeds een extra kopie van de categorie toevoegen, en koppelen op parentID ;)
 
Laatst bewerkt:
Ik heb de query voor drie niveaus geprobeerd maar het enige wat word weergegeven zijn de onderwerpen en sub1 sub2 en hoe die gekoppeld zijn.
wel handig maar niet wat ik zoek. ik zoek namelijk de code om in plaats van het CatID's de namen in de records weer te geven.
anders sla ik mijn records op en zie ik een nummer inplaats van de namen van de onderwerpen. het was me met uw hulp al gelukt voor een constructie met een hoofdonderwerp en een subonderwerp door middel van de volgende code:

SELECT Notities.Id, Notities.Datum, Notities.Onderwerp, Hoofd_Cat.Naam AS Hoofdcat, Notities.Subonderwerp, Sub_Cat.Naam AS Subcat, Notities.[Relevant voor Made], Notities.Ingevoerd, Notities.Opmerking, Weekcode([Datum]) AS [wk/dag]
FROM tCategorie AS Sub_Cat INNER JOIN (tCategorie AS Hoofd_Cat INNER JOIN Notities ON Hoofd_Cat.CatID = Notities.Onderwerp) ON Sub_Cat.CatID = Notities.Subonderwerp;

Er is nu nog een tweede subonderwerp (subonderwerp2) bijgekomen en ik weet niet precies hoe ik hierbij hetzelfde bij kan doen.
 
Laatst bewerkt:
Jouw query is ook niet opgebouwd volgens de structuur die je m.i. zou moeten gebruiken.
INNER JOIN (tCategorie AS Hoofd_Cat INNER JOIN Notities ON Hoofd_Cat.CatID = Notities.Onderwerp) ON Sub_Cat.CatID = Notities.Subonderwerp
Als je mijn verhaal goed had gelezen, dan had je begrepen dat je maar één veld hebt voor je categorie, en geen twee (Notities.Onderwerp en Notities.Subonderwerp). Want ik vermoed dat je voor de derde categorie dan een veld Notities.SubSubonderwerp o.i.d. hebt gemaakt?
Juist het gegeven dat je een in beginsel oneindig aantal tabellen kunt koppelen op ParentID-ID maakt dat je probleemloos meerdere subcategorieën kunt toevoegen. Je zoekt namelijk de vorige categorie van een subcategorie op basis van de ParentID op. In jouw constructie kun je elke categorie als subcategorie opslaan, ook al is er geen enkele relatie tussen de twee. En dat is nu net wat je wilt voorkomen!
 
Ik snap het probleem nog niet helemaal ben ik bang.
dus met de query die je gemaakt hebt moet ik een koppeling maken naar de query met de records?
ik zie dat de query alle onderwerpen, sub en subsub weergeeft maar hoe pas ik het toe zodat er in mijn formulier woorden aan de records worden toegevoegd?
moet ik iets veranderen in mijn constructie op het moment sla ik namelijk de nummers van alle drie de onderwerpen op in de record. (onderwerp, sub, subsub)
de oude query haalde de waarden van de eerste twee er dan bij in een ander veld.
Ik begrijp dat ik fout zit maar ik zie niet helemaal hoe ik het dan moet oplossen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan