Results 1 to 10 of 10

Thread: selecteer waarde in dbgrid

  1. #1

    selecteer waarde in dbgrid

    Hallo,

    ik heb in een dbgrid een lijst met getoonde waarden en bijbehorende id. Vanuit een andere dataset komt een waarde en id. Ik wil in de dbgrid de rij selecteren, waarvoor geldt dat deze hetzelfde id heeft als die uit de andere dataset.

    De dataset van de dbgrid zal dus doorzocht moeten worden op een id, die via een andere dataset binnenkomt. Vervolgens de rij selecteren.

    Iemand suggesties? Bij voorkeur met code voorbeelden. bvd.

    Code:
     if l_form.DBgrid_zoeknaam.Fields[0].AsString = l_form.OD_openbareruimtenaam.FieldValues['NAAM'] then

  2. #2
    Zoek eens bij DataSet.Locate
    De beste manier om te leren is door fouten te maken.
    80 procent van alle leugens die jij en ik vertellen blijft onopgemerkt

  3. #3
    Je hoeft je DB GUI control hiervoor niet aan te spreken.

    Code:
    If TDataSetVeldNaam.AsString = TDataSetVeldNaam.AsString Then
    Wellicht dat je ook nog een functie ervoor zou kunnen maken, die een boolean terug geeft.
    Verder zou ik nog even controleren of de dataset wel records bevat voordat je iets uitvoert.
    Last edited by Patjuh; 21-Mar-13 at 12:32.
    Alvast bedankt, Patrick

  4. #4
    Bedankt, hij lijkt nu inderdaad de dataset te doorzoeken en te vinden (of niet). En volgens de documentatie is het nu ook de 'current record'. Maar in het dbgrid is deze nog niet het geselecteerde rij.


    Code:
                  if TOracleDataSet(l_form.FindComponent( 'OD_' + l_field )).Locate('ORE_ID', l_form.OD_openbareruimtenaam.FieldValues['NAAM'], []) then
                   showmessage('hoera')
                  else
                  showmessage('boeh');

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Die dataset wordt toch opgebouwd op een query, waarvan de twee tabellen zijn geselecteerd? Ik begrijp het niet helemaal.

  6. #6
    ik heb een dataset, gevuld met een sql statement.

    ore_id | naam
    ----------------------------
    1 | pipo
    2 | bassie
    3 | adriaan

    In de dbgrid zijn alleen de waarden van kolom 'naam' zichtbaar. Dus achtereenvolgens 'pipo', 'bassie', 'adriaan'. Via een andere dataset komt de waarde '2' binnen. Ik wil in de dbgrid de rij 'bassie' geselecteerd zien (blauw regel), omdat 'bassie' hoort bij ore_id '2'.

    Met locate heb ik de rij in de dataset gevonden, maar daarmee is de regel nog niet blauw geworden in de dbgrid.

  7. #7
    Kun je de regel niet gewoon zelf (blauw) kleuren als je de rij hebt gevonden?
    Event: OnDrawColumnCell
    Alvast bedankt, Patrick

  8. #8
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Is het niet gewoon een Master-Detail relatie?
    TMemoryLeak.Create(Nil);

  9. #9
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    als dataset1 'bassie, adriaan en pipo' heeft en dataset2 selecteert waarde '2', dan is het meest logische:
    delphi Code:
    1. if not dataset1.locate('ore_id',vararayof([dataset2.fieldbyname('id').asinteger]),[]) then
    2.   showmessage('niet gevonden');
    Dit zet de pointer op de juiste record en de grid weet dat hij de regel moet selecteren.

    @videoripper
    Volgens mij wilt hij het juist andersom en en master/detail filtert de detail.

  10. #10
    bedankt voor de reply's.
    Ik heb het mijzelf makkelijk gemaakt, door een verborgen edit toe te voegen. Hierin wordt 'ORE_ID' opgeslagen en kan ik hergebruiken.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •