|
| Hjælp til database søges Fra : Thomsen |
Dato : 12-09-01 20:41 |
|
Hej ng,
Jeg er løbet ind i et lille problem.
Jeg har lavet et lille database system (uden brug af standard
db-komponenter)
i mit program, hvor alle poster består af
records (altså typen record), som jeg laver vha. New() og Dispose().
Pointerne til alle Precs'ene har jeg så i en Tlist.
Det jeg gerne vil nu, er at lave nogle grupper, som posterne kan være
"medlem" af.
Og en post kan være med i flere grupper.
Disse grupper skal kunne oprettes/fjernes af brugeren i run-time. Grupperne
vil nok
også blive en flok records, hvor pointerne gemmes i en Tlist.
Jeg har eksperimenteret med at have en "Array[0..20] of Boolean" recorden,
men
det begrænser jo antallet af grupper til 21, og det giver en del spildplads,
hvis brugeren
kun opretter fx 2 grupper.
Er det måske muligt at have en "array of Bytes" i recorden, hvor hver byte
refererer til
gruppenummeret, og så bruge "SetLength(Prec(p).GroupArray, x).
Dette vil jo bevirke, at hver record ikke er lige stor i hukommelsen, og så
vil pointerne
til de andre records (som jo er gemt i en Tlist) ikke være korrekte mere,
eller hvad?
Vil dette virke, eller er der andre forslag?
Mvh,
Anders Thomsen
| |
René Jensen (12-09-2001)
| Kommentar Fra : René Jensen |
Dato : 12-09-01 22:37 |
|
Thomsen wrote:
> Jeg er løbet ind i et lille problem.
> Jeg har lavet et lille database system (uden brug af standard
> db-komponenter)
> i mit program, hvor alle poster består af
> records (altså typen record), som jeg laver vha. New() og Dispose().
> Pointerne til alle Precs'ene har jeg så i en Tlist.
>
> Det jeg gerne vil nu, er at lave nogle grupper, som posterne kan være
> "medlem" af.
> Og en post kan være med i flere grupper.
> Disse grupper skal kunne oprettes/fjernes af brugeren i run-time. Grupperne
> vil nok
> også blive en flok records, hvor pointerne gemmes i en Tlist.
>
> Jeg har eksperimenteret med at have en "Array[0..20] of Boolean" recorden,
> men
> det begrænser jo antallet af grupper til 21, og det giver en del spildplads,
> hvis brugeren
> kun opretter fx 2 grupper.
>
> Er det måske muligt at have en "array of Bytes" i recorden, hvor hver byte
> refererer til
> gruppenummeret, og så bruge "SetLength(Prec(p).GroupArray, x).
> Dette vil jo bevirke, at hver record ikke er lige stor i hukommelsen, og så
> vil pointerne
> til de andre records (som jo er gemt i en Tlist) ikke være korrekte mere,
> eller hvad?
Hvis jeg forstår dit spørgsmål korrekt, så giver det ikke nogle
problemer, da en pointer er en reference til det sted i hukommelse, hvor
dit data ligger, så uanset hvor meget eller hvor lidt data der ligger i
dine selv-definerede records, så vil pointerene altid pege de rigtige
sted i hukommelse (såfremt du initialere dem først).
> Vil dette virke, eller er der andre forslag?
Med hensyn til andre forslag, er det lidt svært for mig at give et
kvalificerede bud uden nogen form for kode, her tænker jeg på din type
definering af record o.lign.
--
Med venlig hilsen,
René Jensen
Once a wise man told me this:
"I consider Windows as I consider bad weather ... I accept it and hope
for something better!"
| |
Thomas Riedel (13-09-2001)
| Kommentar Fra : Thomas Riedel |
Dato : 13-09-01 13:53 |
|
Hej Anders
Normalt ville man lave en relationstabel til at holde styr på grupper, der
ikke komplementære:
F.eks En kundedatabase hvor nogen skal have julekort, andre skal have direct
mail og mange skal have begge dele.
Eksempel:
Kundetabel:
Kunde Kundenr
Jensen 1
Hansen 2
Pedersen 3
Relationstabel:
Jensen skal kun have Julekort:
Kundenr Type
1 Julekort
Hansen skal kun have direct mail
2 Direct mail
Pedersen skal have begge dele:
3 Julekort
3 Directmail
På dem måde styrer du grupperingen separat.
Det, at du ikke bruger standard database objekter, gør det lidt besværligt
at slå op i relationstabellen,
men det klarer du nok.
mvh
--
Thomas Riedel, LogiHouse
"Thomsen" <andersthomsen@mobilixnet.dk> wrote in message
news:nOOn7.1397$U11.267161848@news.orangenet.dk...
> Hej ng,
>
> Jeg er løbet ind i et lille problem.
> Jeg har lavet et lille database system (uden brug af standard
> db-komponenter)
> i mit program, hvor alle poster består af
> records (altså typen record), som jeg laver vha. New() og Dispose().
> Pointerne til alle Precs'ene har jeg så i en Tlist.
>
> Det jeg gerne vil nu, er at lave nogle grupper, som posterne kan være
> "medlem" af.
> Og en post kan være med i flere grupper.
> Disse grupper skal kunne oprettes/fjernes af brugeren i run-time.
Grupperne
> vil nok
> også blive en flok records, hvor pointerne gemmes i en Tlist.
>
> Jeg har eksperimenteret med at have en "Array[0..20] of Boolean" recorden,
> men
> det begrænser jo antallet af grupper til 21, og det giver en del
spildplads,
> hvis brugeren
> kun opretter fx 2 grupper.
>
> Er det måske muligt at have en "array of Bytes" i recorden, hvor hver byte
> refererer til
> gruppenummeret, og så bruge "SetLength(Prec(p).GroupArray, x).
> Dette vil jo bevirke, at hver record ikke er lige stor i hukommelsen, og
så
> vil pointerne
> til de andre records (som jo er gemt i en Tlist) ikke være korrekte mere,
> eller hvad?
>
> Vil dette virke, eller er der andre forslag?
>
> Mvh,
> Anders Thomsen
>
>
| |
|
|