Avatar billede dilling-hansen Nybegynder
22. marts 2011 - 02:01 Der er 11 kommentarer og
1 løsning

Heste stamtræ, database? xml?

Hej

Jeg skal have lavet et program til at se/lave/rette i informationer om heste i et stamtræ.
Jeg har siddet og rodet med det i flere dage nu, prøvet med ini filer og xml filer, men jeg kan virkelig ikke greje hvordan jeg skal få det til at virke :\ tror det er smartest i xml filer, men kan virkelig bare ikke finde ud af hvordan jeg skal bygge det op, og få delphi til at arbejde med det :\

--------------------------------------------------------
Hvad for nogen informationer der skal være:

Uvist antal heste og deres stamtræ til min. tipolde-mor/-far (Hest-Mor-Mormor-Oldemor-Tipoldemor) men helst ubegrænset, så det er muligt at gå længere ud, hvis det er relevant.

For hver hest, både hver "grund"-hest og alle i stamtræet, skal det være mulighed for at information om:
- Navn
- Regnr.
- Race
- Køn
- Født
- Land
- Opdrætter
- Farve
- Stangmål

- og et uvist antal Kåringer, som skal have underpunkterne:
-- Kåringsgrad
-- Kåaringsdato
-- Avlsforbund
-- Resultat
-- Beskrivelse

--------------------------------------------------------
XML fil

Det har mest været for at prøve at få delphi til at hive data ud af xml filen, og det lykkedes sådan set også, men nu ved jeg virkelig ikke hvordan jeg skal få det sat sammen med at de informationer, skal være for hver hest og for alle i dens stamtræ :\

<skriver xml filen som første kommentare>

--------------------------------------------------------
Jeg håber virkelig der er nogen genier her, der kan og vil hjælpe xD jeg er virkelig ved at få grå hår af det her :\


På forhånd tak
Martin
Avatar billede dilling-hansen Nybegynder
22. marts 2011 - 02:02 #1
XML-filen som jeg har nu:

-------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<heste>
    <hest>
        <navn>hest1</navn>
        <regnr>regnr1</regnr>
        <race>race1</race>
        <koen>koen1</koen>
        <foedt>foedt1</foedt>
        <land>land1</land>
        <opdraetter>opdraetter1</opdraetter>
        <farve>farve1</farve>
        <stangmaal>stangmaal1</stangmaal>
        <kaaringer>
            <kaaring>
                <kaaringsgrad>kaaringsgrad111</kaaringsgrad>
                <kaaringsdato>kaaringsdato112</kaaringsdato>
                <avlsforbund>avlsforbund113</avlsforbund>
                <resultat>resultat114</resultat>
                <beskrivelse>beskrivelse115</beskrivelse>
            </kaaring>
            <kaaring>
                <kaaringsgrad>kaaringsgrad121</kaaringsgrad>
                <kaaringsdato>kaaringsdato122</kaaringsdato>
                <avlsforbund>avlsforbund123</avlsforbund>
                <resultat>resultat124</resultat>
                <beskrivelse>beskrivelse125</beskrivelse>
            </kaaring>
            <kaaring>
                <kaaringsgrad>kaaringsgrad131</kaaringsgrad>
                <kaaringsdato>kaaringsdato132</kaaringsdato>
                <avlsforbund>avlsforbund133</avlsforbund>
                <resultat>resultat134</resultat>
                <beskrivelse>beskrivelse135</beskrivelse>
            </kaaring>
            <kaaring>
                <kaaringsgrad>kaaringsgrad141</kaaringsgrad>
                <kaaringsdato>kaaringsdato142</kaaringsdato>
                <avlsforbund>avlsforbund143</avlsforbund>
                <resultat>resultat144</resultat>
                <beskrivelse>beskrivelse145</beskrivelse>
            </kaaring>
        </kaaringer>
    </hest>
    <hest>
        <navn>hest2</navn>
        <regnr>regnr2</regnr>
        <race>race2</race>
        <koen>koen2</koen>
        <foedt>foedt2</foedt>
        <land>land2</land>
        <opdraetter>opdraetter2</opdraetter>
        <farve>farve2</farve>
        <stangmaal>stangmaal2</stangmaal>
        <kaaringer>
            <kaaring>
                <kaaringsgrad>kaaringsgrad211</kaaringsgrad>
                <kaaringsdato>kaaringsdato212</kaaringsdato>
                <avlsforbund>avlsforbund213</avlsforbund>
                <resultat>resultat214</resultat>
                <beskrivelse>beskrivelse215</beskrivelse>
            </kaaring>
            <kaaring>
                <kaaringsgrad>kaaringsgrad221</kaaringsgrad>
                <kaaringsdato>kaaringsdato222</kaaringsdato>
                <avlsforbund>avlsforbund223</avlsforbund>
                <resultat>resultat224</resultat>
                <beskrivelse>beskrivelse225</beskrivelse>
            </kaaring>
        </kaaringer>
    </hest>
</heste>
Avatar billede arne_v Ekspert
22. marts 2011 - 02:32 #2
For data som skal opdateres af programmet ville jeg vælge database!
Avatar billede psycosoft-funware Nybegynder
22. marts 2011 - 08:31 #3
som arne_v så fint nævner det - en database, den er det helt oplagte her.
Tag et kig på SQLite databasen da den fungere direkte fra en fil og der findes gode komponenter til delphi. det er bla den type database firefox bruger.

der skulle også være nogle gode tutorials omkring SQLite og delphi rundt omkring :)
Avatar billede hrc Mester
22. marts 2011 - 08:59 #4
Delphi er også god til Firebird og Intrabase ... og SQL-server, men det er lidt at skyde gråspurve med kanoner. Indtil du bestemmer dig kan du bruge TClientDataSet som kan begge dele. Med et flag bestemmer du om data skal gemmes som XML eller i en database.

Med så simple data som du har, ville jeg nok i stedet, mod Arnes råd, istedet lave en datastruktur (klasser, lister og den slags) og gemme i en fil - men naturligvis sørge for at strukturen kan udvides og ændres.
Avatar billede hrc Mester
22. marts 2011 - 09:02 #5
Fortsætter du med XML så bør du hente en prøveversion af XML-Spy som er eminent til alt med XML, bl.a. XML-skemaer.
Avatar billede dilling-hansen Nybegynder
22. marts 2011 - 10:38 #6
Jeg har ikke rigtig noget erfaring med at gemme data i andet end ini-filer, så lige meget hvad jeg skal bruge, har jeg en del jeg skal lære :)

Men har i et forslag til, hvordan "strukturen" i database/xml/hvad-jeg-nu-skal-bruge, skal bygges op, for at få de data med jeg skal have med? :\ det er nok det der frustrere mig mest, at jeg ikke lige kan overskue :\

Og det lyder som om i mener jeg skal bruge noget SQL? Kan i så hjælpe en der aldrig har rodet med sql før, til at forstå lidt om hvad det er? ^^ kodestumper, links, tutorials, osv? :)
Avatar billede hrc Mester
22. marts 2011 - 11:07 #7
I SQL-server kunne du gemme XML'en i et ... XML-felt, for sådan et har den (men helt kønt er det ikke).

Din XML er meget simpel og du kunne helt skippe en database hvis du definerede en datastruktur med nogle dataklasser og lister, og gemte det hele i en fil; noget jeg tit har brugt og ditto tit har demonstreret her.
Avatar billede dilling-hansen Nybegynder
22. marts 2011 - 11:30 #8
Den xml jeg skrev, er jo ikke helt brugbar til det jeg ville, og kan virkelig ikke se hvordan jeg skulle strukturere den, så den kan indeholde det hele? :\

og lige noget der ikke har noget med det her at gøre, men søgefunktionen her på eksperten? Den er gået over til at bruge googlesearch, og så kan jeg ikke få den til at søge inden for en specifik kategori? :\
Avatar billede arne_v Ekspert
23. marts 2011 - 02:45 #9
XML bliver langsomt at opdatere ved store data mængder. Det giver store problemer med flerbruger adgang. Og det kan give konsistens problemer selv med enkelt bruger.

Jeg vil stadigt anbefale database. SQLite eller FireBird eller Access er mindre vigtigt.
Avatar billede hrc Mester
23. marts 2011 - 10:15 #10
Databaser kan give den pæneste løsning, hvis man behersker SQL og har en fornuftig arbejdsgang = erfaring. Flere vil kunne bruge dit program på samme database og det vil forblive hurtigt. Ulempen er, at du skal rulle en database ud sammen med dit program.

I din XML er der nogle ting der ikke er tydelige. F.eks. om kaaringsgraden skal plukkes fra en tabel eller om er det noget brugerne taster fra gang til gang.
Det kan man ikke læse ud af XML'en. Hvis du havde et XML-schema kunne databasen let designes ... men SQL'en skal du stadig lære.

Du kan evt. kigge lidt her: http://www.w3schools.com/sql/default.asp
Avatar billede ibhe Novice
20. april 2011 - 03:49 #11
Hej Dilling-hansen,
Uanset om du vælger at benytte database eller xml, så mangler du nogle informationer for at lave stamtræet (såvidt jeg kan gennemskue din xml), nemlig en mor og en far til hesten. Jeg går ud fra at regnr er hestens "cprnr", ergo burde du have en mor=regnr1 og far=regnr2, du kan så finde f.eks. mor-hesten, i mor-hesten's data vil der så stå mormor-hesten's regnr etc.

Hvis du bliver i xml, ville jeg nok udskrífte <hest> tagget med hestens registreringsnummer som tag i stedet, det ville gøre søgningen noget mere enkel

hest := xmldocument1.DocumentElement.childnodes['heste'].childnodes['regnr']

mvh totaldata
Avatar billede dilling-hansen Nybegynder
07. august 2012 - 22:58 #12
...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester