[.NET/SQL] hierarchical dataset *

Pagina: 1
Acties:

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
In het kort even een vereenvoudiging van mijn probleem

Ik heb een (hierarchische) webgrid en daarin wil ik laten zien

meldingid, toelichting
-> meldingid, submeldingid, toelichting

code:
1
2
level 0 = select meldingid,toelichting from melding
level 1 = select meldingid,submeldingid,toelichting from submelding


en vervolgens leg ik met DataSet.Relations.Add een relatie tussen de 2 datasets tussen de meldingid

Nu is het echter zo dat ik bij level 0 niet altijd alle records ophaal, maar ook criteria gebruik als persoonid en paging.

DIt heeft als gevolgd dat level 1, meldingid's ophaalt die in level 0 niet te zien zijn.
De relatie kan niet gelegd worden en ik krijg de foutmelding
page_load: This constraint cannot be enabled as not all values have corresponding parent values.(System.Data)

Logisch natuurlijk, Ik kan dit oplossen door de stored procedure van level 1 aan te passen
code:
1
2
select meldingid,submeldingid,toelichting from submelding
where meldingid is in( select meldingid,toelichting from melding))


Maar dan voer ik eigenlijk 2 x dezelfde stored procedure uit.
Iemand enig idee hoe ik dit kan oplossen ?

Is er misschien een optie om alleen een relatie te leggen tussen child en parent, als de parent bestaat (hiermee zou ik die foutmelding oplossen)

alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Eh, het doel van een relatie is net dat je oa referentiele integriteit afdwingt: maw, ervoor zorgen dat er geen orphan records kunnen zijn. ('childs' zonder parent).

Je kan toch zowiezo alle gegevens ophalen, en dan met GetChildRows oid werken?
Of snap ik je probleem niet?

[ Voor 28% gewijzigd door whoami op 29-06-2004 10:36 ]

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ziet er .NET uit, dan zetten we dat ook maar even in de titel :)

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Dat select statement dat je daar post, gaat trouwens niet werken (dat met die subquery).
Waarom schrijf je dat statement trouwens niet dmv een JOIN ?

https://fgheysels.github.io/


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

Ik zou inderdaad zoals whoami aangeeft met GetChildRows werken.... dan heb je dat probleem niet

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
het selectstatement met subquery , heb ik even snel uit men hoofd getypt, was meer ter illustratie. (Vandaar de fout en geen join ;) )

Alle meldingen ophalen van level0 is een beetje teveel van het goede, dit zijn er namelijk 4000
terwijl ik er per pagina , maar 20 laat zien. Daarom haal ik niet alles op.
Van de 20 meldingen die ik laat zien op een pagina, wil ik hierarchisch de submelding tonen ALS
de melding er een heeft.

Als er met de relatie leggen orphan records zouden zijn, zou het ook niet zo erg zijn
aangezien ik verder niets met de gegevens doe. (gegevens zijn puur ter display)
Ik zou alle submeldingen kunnen ophalen en de records kunnen verwijderen uit de dataset, als het meldingid
niet voorkomt in de dataset van de meldingen en alsnog de relatie kunnen leggen
Maar dit is wat ranzig en ben dus op zoek naar een betere methode...

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Als er wees-records zijn in je DB kan dat nooit goed zijn. Een submeldingid die naar een niet bestaande meldingid wijst, kan niet goed zijn.
Ofwel heb je je in je eerste post vergist, en bedoel je dat er meldingen kunnen zijn. Maar dan zou er normaal gezien zo geen fout mogen gegeven worden.

Je zal er dan gewoon moeten voor zorgen dat je enkel de submeldingen ophaalt van de meldingen die je ook hebt opgehaald.

[ Voor 18% gewijzigd door whoami op 29-06-2004 11:06 ]

https://fgheysels.github.io/


  • Equator
  • Registratie: April 2001
  • Laatst online: 22-05 19:52

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Niet alle meldingen van level0 ophalen, maar alle velden van die melding.

En deze hierarchisch weergeven.

En als je er maar 20 records hoeft e hebben dan is SELECT * TOP 20 FROM <blaat> ORDER BY meldingid DESC toch voldoende. Of had je daar geen problemen mee.

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
Er bestaan geen wees-records, alle submeldingen hebben een melding die ook zeker bestaat (wordt ook afgedwongen in de database).
Was misschien niet zo goed uitgelegd inderdaad....

Ik wil dus alle meldingen zien met hun submeldingen
Alleen in het ene meldingscherm krijg ik bijv alleen de meldingen te zien die gemaakt zijn door de persoon die is ingelogd
in het andere scherm krijg ik alle meldingen te zien in een bepaalde status etc.
In het zoekscherm wil ik bijv ook de meldingen laten zien, met submeldingen.
Zoals je ziet zijn er wel wat criteria voor de meldingen. Toch wil ik bij elke melding de onderliggende submeldingen laten zien.


Nu zou ik ervoor kunnen zorgen dat ik alleen de submeldingen ophaal van de meldingen die getoond worden (door dezelfde criteria te gebruiken, die ik gebruik om de meldingen op te halen)
maar dan zou ik eigenlijk ook 2 keer "dezelfde" stored procedure uitvoeren.

Het liefste zou ik eigenlijk mbv een join in 1 dataset alles ophalen en deze later opsplitsen in 2 dataset's ,
waarna een relatie gelegd kan worden. Maar hiermee ben ik (nog) niet bekend.
Is dit mogelijk of bestaat er misschien een praktischere oplossing ?

Alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Je kan dat doen, maar dan zal je wel zelf die datatable moeten splitten in 2 datatables.

https://fgheysels.github.io/

Pagina: 1