[C++ Builder]TTable filter met meer dan een tabel*

Pagina: 1
Acties:

  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
Ik probeer een filter toe te passen op meer dan een tabel mbv een TTable object als volgt :
code:
1
2
3
4
5
6
7
    table1          = new TTable (this);
    table1->DatabaseName    = database_naam;
    table1->TableName    = ("tabel1", "tabel2");
    table1->Filter      = "table1.veld1=table2.veld1";
    tablel1->Filtered    = true;
    source->DataSet    = deDataSource;
    table1->Active      = true;

C++ Builder klaagt over "table1->Filter=table1.veld1.....". Weet iemand of dit uberhaupt mogelijk is en of dit de goeie syntax is ? Zo niet weet iemand een ander manier om dit te doen ? Ik mag hier geen TSQL object gebruiken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Taal in topic-title toegevoegd. Zie de P&W Quickstart...

Volgens mij kan je slechts 1 tabel aan een TTable koppelen. Een TTable is voor zover ik weet write-able en als je meerdere tabellen aan één TTable koppelt, dan zou die functionaliteit vervallen. Het is trouwens ook niet logisch dat je meerdere tabellen aan een TTable zou koppelen.

Als je gegevens uit meerdere tabellen wilt selecteren zul je een TQuery moeten gebruiken.

https://fgheysels.github.io/


  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
Het probleem is dat ik een tquery niet kan gebruiken. Omdat dit voor school is en zij erom zeiken dat ik een aparte database klasse gebruik, moet ik alles in dit klasse verversen.

Dit ttable is gekoppeld aan een tdbgrid. Het probleem is dat als ik de dbgrid koppel aan een tquery dat het niet goed ververst als ik dbgrid->Refresh() doe. Hier heb ik een tijdje mee gestoeied en kreeg hem niet aan de praat. Vandaar een TTabel.

Maar zijn er geen andere soortgelijke objecten (behalve een TQuery) waarmee dit wel kan ?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:52

Creepy

Tactical Espionage Splatterer

Op dinsdag 02 juli 2002 18:47 schreef Darius het volgende:
Het probleem is dat ik een tquery niet kan gebruiken. Omdat dit voor school is en zij erom zeiken dat ik een aparte database klasse gebruik, moet ik alles in dit klasse verversen.
En waarom kan dit niet met een TQuery dan? Die kan je toch gebruiken in je database klasse? (of hebben we het over een TDatabase? Ook een TQuery kan je aan een TDatabase koppelen)
Dit ttable is gekoppeld aan een tdbgrid. Het probleem is dat als ik de dbgrid koppel aan een tquery dat het niet goed ververst als ik dbgrid->Refresh() doe. Hier heb ik een tijdje mee gestoeied en kreeg hem niet aan de praat. Vandaar een TTabel.

Maar zijn er geen andere soortgelijke objecten (behalve een TQuery) waarmee dit wel kan ?
Meerdere tabellen? Dan kom je volgens mij toch echt op een query uit. Of je moet het in meerdere grids willen tonen, waarbij de ene grid bijv. afhankelijk is van de ander. Dat zou kunnen met alleen TTables lijkt me.

Maar wat kreeg je niet aan de praat? Want m.b.v. een datasource is een TQuery toch echt wel goed aan een TDBGrid te koppelen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
Op dinsdag 02 juli 2002 19:07 schreef Creepy het volgende:

[..]

En waarom kan dit niet met een TQuery dan? Die kan je toch gebruiken in je database klasse? (of hebben we het over een TDatabase? Ook een TQuery kan je aan een TDatabase koppelen)
[..]

Meerdere tabellen? Dan kom je volgens mij toch echt op een query uit. Of je moet het in meerdere grids willen tonen, waarbij de ene grid bijv. afhankelijk is van de ander. Dat zou kunnen met alleen TTables lijkt me.

Maar wat kreeg je niet aan de praat? Want m.b.v. een datasource is een TQuery toch echt wel goed aan een TDBGrid te koppelen.
Ik heb het al met TQuery geprobeerd, maar elke keer als ik de dbgrid refresh waaraan de tquery gekoppeld is doet ie niks. Mis ik hier iets ? Met DBGRid->Refresh(); hoort hij toch opnieuw shit uit de database te halen en die te tonen ?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:52

Creepy

Tactical Espionage Splatterer

Ik denk je je TQuery moet refreshen..
je TQuery is wel geopend (tquery.open)?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
Yep. Om de query te verversten doe ik het volgende :
code:
1
2
   probleemQuery->Open ();
    probleemQuery->Refresh ();

Daarna repaint ik de dbgrid als volgt :
code:
1
this->ProbleemLijst->Repaint();

Maar hij verdomt het nog steeds om te doen :(

  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
De query koppel ik aan tdbgrid als volgt :
code:
1
2
3
4
5
6
7
8
9
10
11
      TQuery *probleemQuery      = new TQuery (this);
      probleemQuery->DatabaseName     = dbase;
      //probleemQuery->AutoRefresh  = true;

      probleemQuery->SQL->Clear ();
      probleemQuery->SQL->Add ("select Probleem.*, Status.Status from Probleem, Status where Probleem.StatusID=Status.StatusID AND Probleem.ProbleemType = NO;");
      probleemQuery->Prepare ();
      probleemQuery->Open ();

      source->DataSet      = probleemQuery;
      probleemQuery->Active      = true;

hierna probleer ik het te verstren als volt (TQuery kun je niet refreshen heb ik gehoord, je moet hem openen en closen.) :
code:
1
2
    probleemQuery->Close ();
    probleemQuery->Open ();

Maar de tdbgrid verdomt het om zic te verversen. Weet iemand waar dit aan zou kunnen liggen :

|:( |:( |:(

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:52

Creepy

Tactical Espionage Splatterer

Op dinsdag 02 juli 2002 22:08 schreef Darius het volgende:
Yep. Om de query te verversten doe ik het volgende :
code:
1
2
   probleemQuery->Open ();
    probleemQuery->Refresh ();

Daarna repaint ik de dbgrid als volgt :
code:
1
this->ProbleemLijst->Repaint();

Maar hij verdomt het nog steeds om te doen :(
Gebruik eens een refresh i.p.v. een repaint.

Als je een query prepared, moet je hem eigenlijk ook weer unpreparen. Als je hem NIET prepared zal dit automatisch voor he worden gedaan, unprepare is dan ook niet nodig.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Darius
  • Registratie: Juli 2001
  • Laatst online: 19:08
Dat wil ook niet lukken. |:( |:( |:( |:( |:( |:(

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Rustig blijven. :)

Sluit eens de query en heropen hem eens ipv hem te refreshen.

https://fgheysels.github.io/


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:52

Creepy

Tactical Espionage Splatterer

Op woensdag 03 juli 2002 08:39 schreef whoami het volgende:
Rustig blijven. :)

Sluit eens de query en heropen hem eens ipv hem te refreshen.
hierna probleer ik het te verstren als volt (TQuery kun je niet refreshen heb ik gehoord, je moet hem openen en closen.) :
code:
1
2
    probleemQuery->Close ();
    probleemQuery->Open ();

Maar de tdbgrid verdomt het om zic te verversen. Weet iemand waar dit aan zou kunnen liggen :
Dat heeft hij ook al geprobeerd... hmm... tword wel vaag zo.

Hoe koppel je je TDBGrid aan je TQuery eigenlijk?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Hum, ja... :+ sorry.

Ben je wel zeker dat je de juiste query/dataset refreshed of sluit/opent? (De juiste cq, diegene die aan uw Grid hangt?)

https://fgheysels.github.io/

Pagina: 1