Toon posts:

[delphi] selectie uit DB

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een progje te schrijven voor enkele administratieve dingen. Nu heb ik een DBGrid waarin ik een overzicht van klanten weergeef. Indien ik op deze klant dubbelklik moet ik een overzicht krijgen van onderwerpen over deze klant.

Ik doe dit als volgt:
code:
1
selected := OnderwerpGrid.SelectedField.AsString;

en vervolgens voer ik een sql-query uit die dan in een nieuw grid de onderwerpen van de geselecteerde klant laat zien. Echter, het is op deze manier niet mogelijk om 2 klanten met dezelfde naam te hebben, omdat ik alleen selecteer op naam.

Om dit te verhelpen sla ik de klanten aan de hand van een klantnummer op in de DB. Echter, ik weet zo niet hoe ik uit de DBGrid nu de goede klant (1 v/d 2) kan selecteren om hierbij de juiste onderwerpen weer te geven in de andere Grid (lees: de juiste naam met bijbehorend klantnummer)

Weet iemand raad?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 31-08 19:41

Creepy

Tactical Espionage Splatterer

Het nummer ook in de onderwerpGrid opnemen is 1 optie. Een andere optie kan zijn dat je kijkt de hoeveelte klant er geselecteerd is en aan de hand hiervan je TTable doorloopt.
Een derde optie (en imho de beste) is dat jew alle benodige gegevens in het geheugen opslaat (m.b.v. een array/list van objecten/record's klanten) en dan alleen de benodigde info toon in de Grid. OP het moment dat je dan dubbelklikt op de Grid weet je ook welke klant dit was en kan je in het geheugen het ID erbij zoeken voor je query. (1ste klant in de grid is dan de eerste klant in je array/list etc.)

"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


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik zal het je nog makkelijker maken. Of Delphi liever gezegt.

De record die je selecteerd in je TDBGrid wordt het actieve record van de TDataSet die verbonden is, via de TDataSource, aan je grid. Dus je kan gewoon MyTable.FieldByName('ID').AsInteger doen, of wat het in jouw geval dan ook is.

Verder kan je met de TDataSet componenten ook heel gemakkelijk master/detail relaties leggen tussen 2 TDataSets zonder een regel code te schrijven. Let wel op dat daar voor en nadelen aan zitten die per persoon verschillen.

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


Verwijderd

Topicstarter
Creepy & LordLarry, beiden bedankt voor jullie reply met mogelijke oplossingen. Ik ga ff op de manier van LordLarry proberen. Thx again! :D