Toon posts:

[delphi] 3 vraagjes

Pagina: 1
Acties:

Verwijderd

Topicstarter
1. Hoe kan ik een tabel zo filteren dat mijn DBGrid alleen de records laat zien waarvan het veld 'opgehaald'=false???

2. Ik heb een tabel 'gegevens' met verschillende aantallen en verschillende datums en nou wil ik dat dus optellen (dus sum(aantallen) group by (datums), maar hoe/waar doen we dat???

3. Ik wil het verschil laten uitrekenen (per datum) van de bovenstaande rekenfunctie en een getal in een andere tabel, hoe??? (dit moet in een formuliertje komen te staan, en dan voor de eerstvolgende datum...)

dit is allemaal zo makkelijk in access 8-), maar als de ontvangende partij geen access heeft :'( :'(

  • MPEG
  • Registratie: Oktober 2000
  • Laatst online: 21-10-2020
Ik denk dat je iets nodig hebt als een TQuery component (standaard in delphi) Daarin zet je de query zoals je die ook in Access zou plaatsen.

Daarna kan je het TQuery component aan het TDBGrid component koppelen via de properties in de objectinspector. (misschien dat je een TDatasource er tussen moet zetten, dan moet je de TDatasource laten wijzen naar het TQuery comp. en de TDBGrid laten wijzen naar de TDataSource)

Succes...

AMD 64 X2 4800+ @2,41Ghz,
2048MB DDRRAM,
ATI X800GTO,
2x Samsung 930BF 19" TFT


Verwijderd

Topicstarter
ja, dat datasource dat werkt waarschijnlijk wel (heb net ff getest, nou alleen nog ff die SQL statements uit Access halen >:))

alleen dan blijf ik nog steeds met de vraag zitten hoe ik nou zo'n tabelletje opgetelde waarden kan aftrekken van een 'echte' tabel :?

qryTotalenOpDatum:

----------------
|datum |totaal|
----------------
|23-9 |50 |
|24-9 |60 |
----------------

tblAantalBesteldVoorDatum:

----------------
|datum |totaal|
----------------
|23-9 |40 |
|24-9 |40 |
----------------

van bovenstaande gegevens wil ik dan een nieuw tabelletje/formulier maken:

Over:

----------------
|datum |totaal|
----------------
|23-9 |10 | (50-40)
|24-9 |20 | (60-40)
----------------

maar liever geen TabelMaakQuery, omdat bovenstaande gegevens vaak wijzigen... dus gewoon dat je een formulier hebt met de eerstvolgende datum (24-9) en hoeveel er dan nog over zijn.....

(thx voor je reply trouwens...)

  • MPEG
  • Registratie: Oktober 2000
  • Laatst online: 21-10-2020
Volgens mij kun je beter een tabel maken tblVoorraad met daarin bijv.:

Artikel   Aantal Datum_Mutatie
--------- ------ -------------
Artikel X    100    2001-09-23  (Bijboeking)
Artikel Y     65    2001-09-20  (Bijboeking)
Artikel X    -20    2001-09-23  (Afboeking)


En daarin wijzigingen maken zodra je iets besteld.

Dan kun je met b.h.v. een query vragen wat er per dag bij of af is gegaan.

Select Artikel, Count(Aantal) as Huidige_Voorraad from tblVoorraad 
where Datum_Mutatie < 2001-09-24
group by Artikel, Datum_Mutatie (misschien ook Count(Aantal)

resultaat:

Artikel   Huidige_Voorraad
--------- ----------------
Artikel X               80
Artikel Y               65

Dat is veel makkelijker dan meerdere tabellen. En je kunt ook nog zien wanneer er wat bij of af is gegaan.

(Dit lijkt trouwens heel erg veel op een logistiek informatie systeem van mijn vroegere werkgever :) )


Tekst was f*cked up :r

Nog steeds niet dur :r

AMD 64 X2 4800+ @2,41Ghz,
2048MB DDRRAM,
ATI X800GTO,
2x Samsung 930BF 19" TFT


Verwijderd

Topicstarter
nee, dat is niet echt handig:

ik heb gewoon 1 tabel gegevens met daarin al die bestellingen en 1x per week (op vrijdag) worden deze besteld bij de leverancier, en we bestellen ook iets over...

dus nou moet het programma dus uit kunnen rekenen hoeveel er dan nog over is....

hoe :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:32
Zoals eerder al gezegd; ipv een TTable component te gebruiken, gebruik je een TQuery component. Daar zet je gewoon je SQL statements in zodat je uw gegevens in de gewenste 'vorm' krijgt. (SELECT SUM()...)...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja dat snap ik, en zo werken de 1e 2 vragen al idd,

maar met een SQL query kan je geen verschillen uitrekenen....

hoe dan dus wel?

Verwijderd

Je kunt ook calculated fields gebruiken, een vb staat in de Gdsdemo demo [/demos/db/Gdsdemo]

Verwijderd

Topicstarter
dat ga ik vanmiddag dan wel ff proberen, maar wat voor calculated field is dat dan, 1 in een tabel, of gewoon een label??

dat label lijkt me wel makkelijk...

Verwijderd

Zoals ik het begrepen heb, heb je 2 tabellen bv Table1 en Table2; Table1 maak je dan de te aftebeelden tabel, je klikt er met de rechtermuis op en gaat naar de fields editor, voeg alle velden toe die uit Table1 komen [rechtermuis knop, add fields] (Datum veld en Totaal veld)

Dan voeg je een nieuw veld toe [rechtermuis knop, new field] (dit wordt het veld uit de tweede tabel) geef hem een of andere naam [bv Name1], field type wordt 'look up' geef de key field [datum veld uit Table1], Dataset [Table2], Lookup keys [datum veld uit Table2], Result Field [Totaal veld uit Table2], type moet integer zijn (ofzo).

Hierna voeg je weer een nieuw veld toe (hierin zet je het verschil) geef hem weer een of andere naam [bv Name2], field type wordt nu 'calculated', type zal wel integer moeten zijn.

Hierna maak je een OnCalcFields event en zet er zoiets in
code:
1
2
3
4
5
6
7
8
procedure Table1.Table1CalcFields(DataSet: TDataSet);
begin
  inherited;
  { Table1Name1 is het lookup field }
  { Table1Name2 is het calculated field }
  { Table1Total is het veld met het totaal uit Table1 } 
  Table1Name2.Value := Table1Total.Value - Table1Name1.Value;
end;

Hierna zet je nog effe de 'Visible' property van de velden die je niet wil zien op False..

of zoiets :)

Verwijderd

Topicstarter
thx, zal het vanmiddag ff proberen, denk dat dat wel gaat werken...

Verwijderd

Topicstarter
nee, werkt niet, kan iig dat veldtype wat jij zegt niet vinden (niet in D3 en ook niet in D5)

hoe dan???

Verwijderd

Iets meer uitleg aub, ik snap niet wat je bedoelt..

Verwijderd

Topicstarter
pardon me, te snelle reactie, ik had geprobeerd in een DBGrid velden toe te voegen, en dit werkt natuurlijk niet

ik ben nou bezig met het in mekaar zetten van wat je hierboven uitlegt (heb het gevonden => datamodule 8-)

Verwijderd

Topicstarter
JA JA JA, het is me gelukt.... THX man...
Pagina: 1