[Delphi] XML in memo-veld

Pagina: 1
Acties:

  • Ettepet
  • Registratie: Juli 2002
  • Laatst online: 11-05 12:26
Om een database flexibel op te stellen wil ik een deel van de velden van een record opslaan in een memo-veld. De vaste velden staan gewoon als veldnaam in het record.

Nou wil ik XML gebruiken om deze variabelen (dus inhoud + veldnaam) in een memoveld te stoppen, alleen zou ik daar graag ondersteuning bij krijgen van al aanwezige voorzieningen in Delphi/Windows.

Alle kant-en-klare inpak/uitpak mechanismen die ik tegenkwam zijn van en naar een bestand, en niet naar een string/memo-veld. Iemand ideeen over de handigste aanpak?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Wat bedoel je precies?
Wat bedoel je met 'vaste velden', en wat met 'variable velden'?

https://fgheysels.github.io/


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Het lijkt mij persoonlijk beter die zogenaamde variable velden toch in je database op te nemen. Je kan een aparte tabel maken die extravelden heet ofzo.

Anders zou ik in je memo geen xml nemen, das overkill IMHO. Neem gewoon een name-value formaat ala een ini (name = value). Delphi's TStrings (TStringList) heeft daarvoor de property Values. TStrings.Values['name'] geeft value. Dus je hoeft alleen je memo veld in een TStrings te gooien.

We adore chaos because we like to restore order - M.C. Escher


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Als je dan toch xml wilt gebruiken kan je vanaf Delphi 6 TXMLDocument gebruiken. Die hoeft geen bestand te gebruiken als je het meteen in de property TXMLDocument.XML gooit. Is BTW wederom een TStrings :)

We adore chaos because we like to restore order - M.C. Escher


  • Ettepet
  • Registratie: Juli 2002
  • Laatst online: 11-05 12:26
whoami schreef op 12 september 2002 @ 14:19:
Wat bedoel je precies?
Wat bedoel je met 'vaste velden', en wat met 'variable velden'?
Het gaat om een nogal uitgebreide, goed doordachte database die voor diverse toepassingen inzetbaar is/moet zijn.

De database bevat bijvoorbeeld een Customer-bestand. Om snelheid te houden is er een CustomerExtra-bestand 'aangelinkt' met daarin een paar memo-velden. In dit memo-veld staan alle niet algemeen bruikbare velden. Door het memo-veld te raadplegen kun je voor iedere afzonderlijke applicatie zijn haar specifieke velden benaderen zonder dat het bestand een allegaartje wordt van tientallen extra velden die grotendeels niet gebruikt worden.

  • Ettepet
  • Registratie: Juli 2002
  • Laatst online: 11-05 12:26
LordLarry schreef op 12 september 2002 @ 14:46:
Als je dan toch xml wilt gebruiken kan je vanaf Delphi 6 TXMLDocument gebruiken. Die hoeft geen bestand te gebruiken als je het meteen in de property TXMLDocument.XML gooit. Is BTW wederom een TStrings :)
Dank je, ik ga gelijk proberen of het hiermee lukt.. :)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ettepet schreef op 12 september 2002 @ 14:53:
[...]

Het gaat om een nogal uitgebreide, goed doordachte database die voor diverse toepassingen inzetbaar is/moet zijn.

De database bevat bijvoorbeeld een Customer-bestand. Om snelheid te houden is er een CustomerExtra-bestand 'aangelinkt' met daarin een paar memo-velden. In dit memo-veld staan alle niet algemeen bruikbare velden. Door het memo-veld te raadplegen kun je voor iedere afzonderlijke applicatie zijn haar specifieke velden benaderen zonder dat het bestand een allegaartje wordt van tientallen extra velden die grotendeels niet gebruikt worden.
Customers tabel:
1 Jaap
2 Henk
3 Harry

CustomersExtraVelden tabel:
1 Leeftijd 12
1 Weetikveel 'test'
2 Leeftijd 76

en je kan dus zelfs die namen uit die extra velden tabel ook weer uit een tabel halen.

Dat is pas goed doordacht IMHO :)

Laad je meteen het DBMS al het werk doen met alle voordelen van dien

We adore chaos because we like to restore order - M.C. Escher


  • Ettepet
  • Registratie: Juli 2002
  • Laatst online: 11-05 12:26
LordLarry schreef op 12 september 2002 @ 15:05:
Customers tabel:
1 Jaap
2 Henk
3 Harry

CustomersExtraVelden tabel:
1 Leeftijd 12
1 Weetikveel 'test'
2 Leeftijd 76

en je kan dus zelfs die namen uit die extra velden tabel ook weer uit een tabel halen.

Dat is pas goed doordacht IMHO :)

Laad je meteen het DBMS al het werk doen met alle voordelen van dien
De database ligt helaas al vast. We hebben trouwens wel over de door jou voorgestelde methode nagedacht, maar kwamen toch uit op die memo-aanpak. De argumenten ben ik even kwijt, want het was alweer >2 maanden terug.. ;)

Nu ik er even over nadenk was het iets met 'flexibel' (onbeperkte lengtes e.d.), zo min mogelijk 'onnodige' tabellen erbij en gebruik maken van de moderne voorziening die XML heet. >:)

ps: Ik moet helaas nog wat andere problemen oplossen voordat ik jouw bovenstaande XML-suggestie kan uitproberen, dus je hoort later nog of het lukte. Bedankt iig!
Pagina: 1