Results 1 to 11 of 11

Thread: Delphi + Acess 2000

  1. #1

    Question

    Ik heb wat probleempjes met mijn Delphi 5 programma dat een Access 2000 database gebruikt. De database is aan de grote kant, 30 mb. Ik heb em ergens op een NT server gezet en de gebruikers kunnen hem vanaf daar benaderen.

    Alles werkt in principe prima, alleen het inloggen duurt erg lang. Daar heb ik op zich vrede mee, maar wat echt problematisch is, is het zoeken van records. Bij de eerste zoektocht op bijvoorbeeld de achternaam lijkt het programma een index aan te maken. Maar daar is hij erg lang mee bezig. Vervolgens gaat het zoeken razendsnel. Wil ik vervolgens op postcode zoeken, maakt het programma een andere index aan. Dat duurt ook weer lang, en de volgende keer dat ik op achternaam zoek, moet het programma de index weer aanmaken.

    Kortom: Kan ik indexen op een access database aanmaken die blijven, en niet steeds verwijderd worden..?

    Alvast bedankt!

    Groeten,

    Geert

  2. #2
    Hoi Geert,

    De bedoeling is inderdaad dat je op veelgebruikte velden een index aanmaakt. Die je dat niet dan wordt deze index tijdelijk aangemaakt voor ene query en vervolgens weer verwijderd.

    Ik heb helaas geen ervaring met Access dus hoe je nou zo'n index aanmaakt?? Dus: wie heeft er Access ervaring en kan even bijspringen?
    Marcel

  3. #3
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199

    Question Access indexen

    Het ligt er aan hoe je de indexen wil maken. Wil je het in Access doen of in je programma. In het laatste geval moet je eens kijken naar de BDE32.hlp en zoeken naar dbiDoRestructure e.d.
    Wil je het in Access doen, geef dan even een seintje dan probeer ik het wel even uit te leggen.

    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  4. #4
    De manier waarop weet ik eigenlijk niet, het gaat vooral om de snelheid. ALs er een mogelijkheid is om een access index te maken die blijft bestaan lijkt me dat een goeie optie.

    Het is een ADo connectie, dus ik weet niet of de BDE daar betrekking op heeft...

    Bedankt,

    Geert

  5. #5
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199

    Access en indexen

    Hoe je via ADO Access benadert weet ik niet, ik werk nog met Delphi 4 . Maar in Access zou je de indexen aan kunnen maken, en deze blijven dan ook keurig netjes bestaan.
    Open in Access de tabel in de ontwerp weergaven en selecteer de velden waarop je een index wil liggen. Klik dan op het symbooltje met het bliksemschichtje en er komt dan een windowtje te voorschijn waarin je dus een of meerdere indexen kunt aanmaken.
    Dit doe je door in de eerste kolom de naam voor de Index aan te geven, in de tweede kolom op welk veld deze index ligt en in de derde kolom geef je aan of het op- of aflopend moet zijn.
    Kolom 2 en 3 vul je dus net zo vaak in als er velden in de index zitten. Zodra je in de eerste kolom een nieuwe naam aangeeft kun je een tweede, derde (etc) index aanmaken.
    Dit venstertje daarna sluiten en de tabel opslaan en klaar is Kees!
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  6. #6
    Maar in Access zou je de indexen aan kunnen maken, en deze blijven dan ook keurig netjes bestaan.
    Dat vind ik zelf ook meestal de handigste manier: gebruik je DB tool voor je databaseonderhoud. Dat is meestel net wat uitgebreider als wanneer je dat allemaal in Delphi zou doen.

    Marcel
    [it]Interbase. MySQL, OK Access wordt de volgende...[/it]


  7. #7
    Okee, de indexen maak je natuurlijk makkelijk. Die heb je nodig om een relationele database op te kunnen zetten.

    Maar probeer die indexen eens te gebruiken in een Delphi applicatie met een ADO connectie. Lukt wel, maar duurt uren!!

  8. #8
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199
    Originally posted by xangadix
    Okee, de indexen maak je natuurlijk makkelijk. Die heb je nodig om een relationele database op te kunnen zetten.
    Voor het maken van een relationele database hoef je alleen maar een primairy key te maken voor de tabellen die je gebruikt in "foreign keys". (Voordat alle DB-techneuten over mij heen vallen : Dit is niet helemaal waar natuurlijk, maar volstaat even in dit geval!)
    Andere indexen worden gebruikt om de data sneller toegankelijk te maken. Hier moet dan ook goed over nagedacht worden.

    Maar probeer die indexen eens te gebruiken in een Delphi applicatie met een ADO connectie. Lukt wel, maar duurt uren!!
    Helaas werk ik niet met ADO, maar ik denk dat als je hier een stukje source plaatst met een korte beschrijving van de tabel die daar gebruikt wordt, er vast wel iemand is die je kan aangeven wat je kunt verbeteren!
    Zelf gebruik ik bij tijden ook Access 2000 maar dan via de BDE en ODBC maar mij valt juist op dat A2000 een stuk sneller is dan A97.
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

  9. #9
    Senior Member
    Join Date
    Jan 2002
    Location
    Nieuwlande, Nederland
    Posts
    612
    Ga maar eens naar andere componenten zoeken. Toegang tot ADO via de BDE is zo traaaaaaaaaag als wat.

    Als je ADO installeert (heb je waarschijnlijk al door installatie van Access) dan zou je eens kunnen kijken naar Kadao. Die was in mijn geval van een database van 250.000 records hele grote stukken sneller dan toegang via BDE.

    Kijk en vergelijk zelf: http://www.delphi.pari.bg/

  10. #10

    ADO Performance Issues

    Die snelheid was voor mij ook een bottleneck. Ik stootte bij het zoeken naar een oplossing op een site waar volgende raadgevingen stonden:

    General
    Some rules of thumb that work for us:

    Don't use TADOTable, try and use queries, either with TADODataset or its descendant TADOQuery
    Try and use CursorLocation := clUseServer whenever you can. It reallydoes perform better. You lose a little functionality in regard to Access,but that can be worked around.
    If you have to use CursorLocation := clUseClient, set MaxRecords to a small value, say 20.
    If you have written a complex query that returns values from many tables in your database, always use clUseServer.
    Restrict your queries to return as few records as possible.
    If you have many datasets being opened when your application starts, try and rationalise them. Optimise your code to open only as those that are needed to start the application. Open the others as required.. This approach at least gives the impression that the application loads quickly.
    Make your fields persistent.

    In regard to the above, we had a large application that originally took
    nearly 90 second to load. It's now down to 8 seconds on the same PC!
    Deze tips leidden bij mij tot een aanzienlijke tijdswinst.

  11. #11
    Senior Member
    Join Date
    Jan 2002
    Location
    Nieuwlande, Nederland
    Posts
    612
    Ik doelde dus ook op die tijdswinst. Maar getest vanuit een ander oogpunt. Als ik client/server test en een table heb met een kwart miljoen records, dan ga ik testen hoe lang openen van de table duurt, hoe lang het duurt om van de eerste naar het laatste record in een dbgrid te komen enzovoort.

    Een aantal heel eenvoudige tests. Kadao performde daar bij mij redelijk snel in. De Ado componenten doen er heeeeel veel langer over.

    Snelheid was voor mij bij beide niet voldoende. Ik heb toen een echte database server gekozen.

    Achteraf ben ik daar blij om vanwege problemen met herinstalleren van ADO voor mijn conversietool om de data van Access naar MySQL te krijgen.

    Er zijn meer native componenten, een aantal zijn net zo snel als de Ado comps voor Delphi, een aantal zijn beduidend sneller.

    In de tips die je noemt zitten een aantal behoorlijke workarounds: 20 records in een resultset? Queries op de server uitvoeren?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 67
    Last Post: 15-Jun-04, 12:32

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •