Toon posts:

[BORLAND C++] Vraagje over TTable en TDatasource

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een DBgrid gekoppeld aan een DataSource, die op zijn beurt weer gekoppeld is aan een Table, en deze hangt weer aan een ODBC:

C++:
1
2
3
4
5
6
7
8
9
TTable *table = new TTable(Form1);
table->DatabaseName = "DB_NAAM";               
table->TableName = "KOLOM_NAAM";

TDataSource *datasource = new TDataSource(Form1);
datasource->DataSet = table;
DBGrid1->DataSource = datasource;

table->Active = true;


Als ik dit uitvoer dan krijg ik de hele inhoud van de tabel te zien in de DBGrid, op zich goed want dan weet ik dat het werkt. Maar wat ik graag zou willen is de data die uiteindelijk in de DBGrid komt te staan eerst filteren dmv van een sql-query , alleen weet ik niet hoe dit moet. Ik heb al geprobeerd om de een TQuery dmv van zijn DataSource eigenschap te koppelen aan 'table' maar dit blijkt niet te werken.

Iemand enig idee hoe het wel moet?

[ Voor 10% gewijzigd door curry684 op 14-10-2003 12:56 . Reden: mooi he, [code]-tags ;) ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

De query gebruiken om je data op te halen en de datasource aan je query koppelen i.p.v. de table.
(of een filter zetten op je ttable)

(whoami: ik was lekker eerst :P )

[ Voor 30% gewijzigd door Creepy op 14-10-2003 13:02 ]

"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
  • Nu online
Je moet dan een TQuery component gebruiken ipv een TTable.

Je koppelt de TQuery dan aan een Datasource, en die datasource aan een DBGrid.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ok bedankt hij doet het! Hier is de werkende code (altijd handig):

C++:
1
2
3
4
5
6
7
8
9
10
TDataSource *datasource = new TDataSource(Form1);

TQuery *query = new TQuery(Form1);
query->DatabaseName = "HELPDESK";
query->SQL->Add("SELECT * from TABEL where NUMMER = 1");    //ofzoiets ;)
 
datasource->DataSet = query;
query->Active = true;

DBGrid1->DataSource = datasource;

[ Voor 11% gewijzigd door curry684 op 14-10-2003 13:19 . Reden: Nog steeds mooi he, die [code] tags :/ ]


Verwijderd

Aangezien je meld dat je middels je TTable (en nu TQuery) connect aan een db middels ODBC raad ik je aan om de ADO-componenten te gebruiken. (TADOQuery).

't Is maar een idee.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En de componenten hoef je niet runtime aan te maken hoor. Je kan ze ook designtime al op je form zetten en de properties in te stellen.

Als je runtime wat aan de query wil veranderen kan je dat gewoon doen op die componenten en hoef je niet elke keer nieuwe componenten aan te maken. Bespaart je nog geheugen ook.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

En als je dan toch design time maakt, pleur ze dan ook meteen in een DataModule. Op die manier houdt je je data van je GUI gescheiden en kunnen andere componenten/formulieren er ook mooi bij.
Pagina: 1