Toon posts:

[Delphi] DbGrid query refresh

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met een opdracht voor school waarbij we werken met een ado database.

Alle data die we nodig hebben wordt in een tabellen gezet.En de query verzamelt de benodigde gegevens.

Alleen nu wil de query die in de DBgrid niet refreshen, ik heb de search gebruikt en ik vond enkele oplossingen zoals het open en closen van de query/tabel.

ook de functie refresh mocht niet baten ik heb deze functies dus geprobeerd
Echter als ik het programma een keer opnieuw opstart dan vind ie de toegevoegde query wel!

Geprobeerde functies
TBLKlant.Close;
TBLKlant.Open;

TBLKlant.Refresh;

DBGRID.refresh;

DBGRID.Enable:= false;
DBGRID.Enable:= true;

Meer kon ik niet vinden zijn er nog andere oplossingen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-08 23:02
Wat bedoel je met
'de toegevoegde query'
? :?

Als je je query sluit, en opnieuw opent, dan wordt die query opnieuw uitgevoerd, dus dan zou je toch de laatste resultaten moeten hebben.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja dat dacht ik ook, Maar als ik query.close doe en dan weer query.open dan krijg ik in mijn grid nog steeds geen resultaat :( !

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-08 23:02
Wat krijg je dan wel? Je krijgt geen resultaat? Zie je dan helemaal niets?

Kom eens met wat meer info over de brug; zie ook hier:
Welkom in P&W -> Quickstart (update 2/10/2002)

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik zie de query's die er wel instonden maar de query die erbij zou moeten komen zie ik niet.( De query komt erbij heb ik getest) Als ik dan het programma een keer opnieuw opstart dan staat ie er wel bij. Onder de knop refresh heb ik deze code nu staan:

Query.Close;
Query.Open;
DBGrid1.Refresh;

Als ik op deze knop druk zou hij dus de nieuwe query moet laten zien..

(Ik heb 3 gegevens tabellen en ik vul er 2 met gegevens van de 3 tabbellen en van buiten af zo onstaat de query)

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Allereerst zou ik eens kijken naar de gebruikelijke terminologie... Je gebruikt Query en record door elkaar denk ik en ADO is een manier van DB-benadering en geen DB op zich.:)
Vervolgens mag je het gedeelte over je DBGrid uit je .dfm file hier eens neerkletsen zo ook relevante code uit de pas-file en welke DB je gebruikt.
Kortom, een beetje meer info kan geen kwaad ;)

[ Voor 13% gewijzigd door Coltrui op 27-02-2003 15:08 ]


Verwijderd

Ik heb ook progjes waar ik de ADO componenten gebruik. Als ik een record heb toegevoegd doe ik:

Query.Active := false;
Query.Active := true;

En dan zie ik in mijn Grid het zojuist toegevoegde record.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-08 23:02
Zeer vreemd.
Precies ofdat de resultaten dan gecached worden ofzo.

Als je je applicatie afsluit en heropstart, zie je de nieuwe records wel omdat de query dan zeker echt opnieuw uitgevoerd wordt. Je databank connectie wordt immers opnieuw 'ge-established'.

https://fgheysels.github.io/


Verwijderd

Topicstarter
ik ga dit eens proberen in ieder geval bedankt voor de hulp!

Query.Active := false;
Query.Active := true;

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-08 23:02
Verwijderd schreef op 28 februari 2003 @ 14:23:
ik ga dit eens proberen in ieder geval bedankt voor de hulp!

Query.Active := false;
Query.Active := true;


Dat is eigenlijk hetzelfde als:
code:
1
2
Query.Close();
Query.Open();

https://fgheysels.github.io/


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-08 22:26

Tomatoman

Fulltime prutser

Bij ADO databases doe je geen Query.Refresh, maar Query.Requery.

Query.Close;
Query.Open;

of

Query.Active := False;
Query.Active := True;

geven allebei hetzelfde resultaat als Requery, maar Requery is vaak wat sneller omdat het de query alleen sluit en heropent als dat nodig is. Als je na Requery geen andere gegevens in je grid ziet, is er blijkbaar niets veranderd in de database. Dat kun je heel eenvoudig testen. Toon de gegevens in je programma in een grid en sluit het programma niet af. Open dan de database in een ander programma, bijvoorbeeld Microsoft Access, en verander daarin de gegevens in de bewuste tabel. Sla de wijzigingen op. Sluit het andere programma af. Doe nu Requery in jouw programma en voilà, daar zie je wijzigingen in het grid.

Klopt dit in jouw geval?

Een goede grap mag vrienden kosten.


Verwijderd

Ik weet niet hoe het in delphi zit maar in CBuilder heb je altijd een data source nodig.
als je die nou es een requery/refresh doet.
Ik weet niet hoe je query in elkaar zit maar als je van een tabel maar een beperkt aantal gegevens nodig hebt, misschien kun je dan beter TTable(of de ADO variant) pakken en daar een filter op defineren.
Natuurlijk kun je alles ook nog een in de grid eigen kolommen maken e.d. en dan met ondrawcolumncell een eigen funcite/definitie hangen

Verwijderd

Topicstarter
bedankt ik heb het nu eindelijk werkend gekregen!!

[ Voor 82% gewijzigd door Verwijderd op 02-03-2003 09:22 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23-08 23:02
Verwijderd schreef op 02 maart 2003 @ 09:17:
bedankt ik heb het nu eindelijk werkend gekregen!!


Hoe dan? Het is misschien interessant voor andere mensen met hetzelfde probleem als je hier even de oplossing post.

https://fgheysels.github.io/

Pagina: 1