Results 1 to 5 of 5

Thread: Query Refresh / hoe om te gaan met updates

  1. #1

    Query Refresh / hoe om te gaan met updates

    Hoi,

    Via DBexpress: Query Datasetprovider clientdataset lees en edit ik naar tevredenheid data op een mysql server.

    De databaseapplicatie wordt door meerdere mensen gebruikt. Stel iemand wijzigt de naam van de klant. Wanneer ziet de andere persoon het resultaat?
    Stel iedereen is het programma gestart met "SELECT * FROM klantentabel". Je zou zeggen wanneer je een refresh op de Query uitvoert.

    Wat gebeurt er precies bij een refresh? Wordt de hele "SELECT *" query opnieuw gedaan of zit er ene bepaalde slimheid dat Tquery en MySQL communiceren en alleen wijzigingen refreshen?
    Mijn klantentabel is best groot aan het worden en deze wil ik misschien niet meer lokaal gaan draaien.

    Dank!

    Rogier

    P.S. ik gebruik nu Delphi 2009 en wil gaan overstappen naar de laatste versie, professional met DevArt componenten.

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Wat doet een refresh? Een stop en een start (wat niet altijd goed gaat). Bij de start wordt de query gelezen en inderdaad de hele tabel als jouw query 'select all' bevat.
    De client weet niets van een wijziging af en er zal dus niets gebeuren bij een andere client voordat deze een refresh doet.

    Een tijd geleden heeft Benno daar wat over gezegd. Als je een tabel bijhoudt met wie wat wijzigt, dan zal je via een message deze kunnen triggeren om de juiste gegevens te hebben. Volgens mij heeft KbmmW zo iets.

    Maar als er iets gewijzigd is en een andere client wil deze wijzigen, zal die persoon mits (het record niet is gelocked) wel de aanpassing zien.
    Delphi is great. Lazarus is more powerfull

  3. #3
    Dank!

    Ik had een keer een probleem met lookup fields. Ik had het idee dat het allemaal vreselijk traag ging al lopende door een DBgrid.

    Een DBgrid , laat ik het zeggen met orders. Hij zoekt de naam erbij via de lookup naar de clientdataset van de klantentabel.
    Hier zit ik een beetje mee. Wat gebeurt er. Die Lookup, dat is geen nieuwe query toch?
    En tegelijkertijd moet de query in de clientdataset misschien beperkt worden tot het klantnummer in plaats van select all .

    Met andere woorde, hoe maak ik het beste een dbgrid met lookup velden waar je doorheen kan scrollen.

    Dank!

    Rogier

  4. #4
    Senior Member Delphiwizard's Avatar
    Join Date
    Dec 2006
    Location
    België
    Posts
    160
    Een lookup field met dbgrid zal je moeten instellen op de velden van je query component, en een lookup field zal daar idd een nieuwe query of table voor nodig hebben.
    Het is lang geleden dat ik met een dbgrid werkte (ik gebruik altijd Devexpress) maar zo is het als ik het me goed herinner.

    Wat betreft het refreshen van de clients, op Firebird kan dat opgevangen worden via POST_EVENT maar ik heb geen idee als MySql dit reeds heeft.

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Gebruik jij dan een DBGrid om gegevens te wijzigen of alleen te tonen?
    Voor mij is een DBGrid een verzameling van gegevens in één oogopslag. Daar maak ik geen gebruik van lookuptabellen, maar laat de query het werk doen. Je krijgt dan platte data terug. Zie het maar als een view in een database. Als er een record moet worden aangepast, roep ik een scherm op met een aantal edits en e.v.t. een aantal DBLookupComboboxen.
    Delphi is great. Lazarus is more powerfull

Thread Information

Users Browsing this Thread

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

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
  •