[C++ Builder] Selectie op Calculated fields

Pagina: 1
Acties:

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Hallo,

Ik wil in C Builder 3 in een SQL Query een selectie maken met een where statement. Nu werkt dit helemaal maar duurt nogal lang omdat er eerst een calculated field berekend word en deze later in de tabel word weggeschreven (in een vast veld).

Om dit geheel sneller te maken lijkt het mij handig om van het calculated field dat ik heb gebruik te maken in de SQL Query. De Query heeft dus ook als DataSource de tabel met het betreffende calculated field.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT Bestellingen_regels.Klant_ID, Bestellingen_regels.VanTijd, 
   Bestellingen_regels.TotTijd, Bestellingen_regels.Datum,  
   Bestellingen_regels.RecNo
   Bestel_ID, Bestellingen_artikelen.ArtikelNaam, Klanten.Achternaam, 
   Bestellingen_artikelen.Hoeveelheid, Bestellingen_artikelen.Prijs, 
   Bestellingen_artikelen.Korting_Geld, Bestellingen_artikelen.Korting_Percentage, 
   Bestellingen_artikelen.Artikel_ID, Artikelen.PGroep, Artikelen.PSGroep, 
   Bestellingen_regels.Bestelnummer, Bestellingen_artikelen.HalfJN, 
   Bestellingen_artikelen.Factuurstatus, Bestellingen_artikelen.Boodschaplijst, 
Artikelen.Samenstelling
FROM "Bestellingen_Regels.DB" Bestellingen_regels
   INNER JOIN "Bestellingen_Artikelen.DB" Bestellingen_artikelen
   ON  (Bestellingen_artikelen.Bestel_ID = Bestellingen_regels.RecNo)  
   INNER JOIN "Klanten.DB" Klanten
   ON  (Bestellingen_regels.Klant_ID = Klanten.RecNo)  
   INNER JOIN "Artikelen.DB" Artikelen
   ON  (Bestellingen_artikelen.Artikel_ID = Artikelen.RecNo) 
where Bestellingen_regels.Bestel  = 0 and
   Bestellingen_regels.Vervallen IS NULL
ORDER BY Bestel_ID


Nu staat er in de Where dat er in een vast velf gekeken word maar is het ook mogelijk dat dit via het calculated field gaat gebeuren?

Alvast bedankt.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:53

Creepy

Tactical Espionage Splatterer

Wil je het veld aanpassen? (where dynamisch_veldje = 0) of wil je de waarde kunnen veranderen? (where Bestellingen_regels.Bestel = :parameter)?

In het laatste geval kun je van parameters gebruik maken op de manier zoals ik al aangeef en dan met een TQuery.ParamByName('parameter').asinteger := 1 kan je de waarde dan aanpassen.

Als je de veldnaam in de where wil veranderen dan zul je zelf strings moeten gaan kopieren/plakken.

"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


  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Nee op het moment staat in de where een normaal veld. Maar omdat ik voordat ik deze query kan runnen eerst alle waardes uit een calculated field moet halen en dat ik dan pas de selectie kan doen op het veld bestel.

Deze stap zou ik liever niet willen doen omdat dit nogal tijd rovend is. (25 minuten en dit word alleen maar meer) Vandaar dat ik alles via het calculated field zou willen doen.

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
offtopic:
Kun jij mij vertellen hoe je connectie maakt met een mySQL database? Doe je dit met een standaard dbExpress Connection? Ik maak gebruik van C++ Builder 6, maar ik krijg het niet voor elkaar om een connectie te maken. Heb jij tips??

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 16:30

BoAC

Memento mori

IJnte schreef op donderdag 18 november 2004 @ 08:59:
offtopic:
Kun jij mij vertellen hoe je connectie maakt met een mySQL database? Doe je dit met een standaard dbExpress Connection? Ik maak gebruik van C++ Builder 6, maar ik krijg het niet voor elkaar om een connectie te maken. Heb jij tips??
Zoek eens naar myODBC :) Ik mag aannemen dat C++ Builder ondersteuning heeft voor odbc-connecties ;)
BoAC heeft geen ervaring met C++ Builder

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Als het goed is zijn er wel mogelijkheden om myODBC daarvoor te gebruiken maar ik weet het niet zeker omdat ik programmeer in Builder 3

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:53

Creepy

Tactical Espionage Splatterer

joostingh schreef op donderdag 18 november 2004 @ 08:53:
Nee op het moment staat in de where een normaal veld. Maar omdat ik voordat ik deze query kan runnen eerst alle waardes uit een calculated field moet halen en dat ik dan pas de selectie kan doen op het veld bestel.

Deze stap zou ik liever niet willen doen omdat dit nogal tijd rovend is. (25 minuten en dit word alleen maar meer) Vandaar dat ik alles via het calculated field zou willen doen.
Je kan toch wel een calculated field in je query gebruiken op de manier zoals je dat nu doet?

"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


  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Na deze query word er een BatchMove toegepast. Die werkt ook via SQL en werkt dus niet met calculated fields. Dus als ik nu van de bovenliggende tabel een calculated field kan gebruiken (is gekoppeld via DataSource van de Query) dan zou ik de waarde die in het calculated field van de tabel staat niet in het vaste veld hoeven te zetten en dat zou de tijds winst zijn...

Snap je het nog?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:53

Creepy

Tactical Espionage Splatterer

Ik ben je volledig kwijt. Wat is nu precies je probleem nog?

Misschien is het handig dat je je DB model eens geeft, want een query zoals hierboven die 25 minuten duurt is wel heel erg traag.

"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

Pagina: 1