Results 1 to 7 of 7

Thread: Stringgrid vullen

  1. #1

    Stringgrid vullen

    hi,

    tot nu toe gebruik ik eigenlijk alleen dbgrids, maar binnen mijn huidige
    toepassing moet ik een stringgrid inzetten. Dit grid haalt afhankelijk van
    een bepaalde waarde de informatie uit tabel 1 of 2.

    Omdat het gebruik van stringgrids voor mij nieuw is heb ik een vraag m.b.t
    het gebruik van kolom titels en de juiste velden gebruiken.

    Tabel 1 en 2 hebben dezelfde structuur en totaal 6 velden, waarvan ik
    veld 3 en 6 afgebeeld wil hebben in het grid. Ik gebruik nu onderstaande code
    van het forum, maar krijgt niet gevonden hoe ik de juiste kolom afbeeld en
    een titel plaats. In de praktijk kan het zijn dat tabel 1 bijv. 6 records bevat
    en als tabel 2 wordt gebruikt maar 3. De stringgrid wordt gevuld maar zoals
    je ziet met alle velden.

    Code:
    var
      I, J: Integer;
      AantalF, AantalR: Integer;
    begin
          StringGrid.FixedCols := 0;
          StringGrid.FixedRows := 1;
          AantalF := dmTables.qry_itemBYuitgifte.FieldCount;
          AantalR := dmTables.qry_itemBYuitgifte.RecordCount;
          StringGrid.ColCount := AantalF;
          StringGrid.RowCount := AantalR;
          for I := 0 to pred(AantalF) do begin
             StringGrid.Cells[I, 0] := dmTables.qry_itemBYuitgifte.Fields[i].FieldName;
          end;
          J := 1;
          while not dmTables.qry_itemBYuitgifte.Eof do begin
            for I := 0 to pred(AantalF) do
              StringGrid.Cells[I, J] := dmTables.qry_itemBYuitgifte.Fields[i].AsString;
              dmTables.qry_itemBYuitgifte.Next;
              Inc(J);
          end;

  2. #2
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    5,133
    Het standaard TStringGrid heeft slechts een Cells-property (lees: geen Titles of Columns property's), dus daar zul je het inderdaad mee moeten doen. Indien FixedRows = 1, dan is Cells[*, 0] een kolomtitel. Maar zover was je volgens mij al wel...

    Dit grid haalt afhankelijk van een bepaalde waarde de informatie uit tabel 1 of 2.
    Is het grid hiervoor verantwoordelijk of dmTables.qry_itemBYuitgifte? In jouw code mist namelijk dergelijke keuze, bovendien is daarin geen sprake van een Table.
    Tabel 1 en 2 hebben dezelfde structuur en totaal 6 velden, waarvan ik veld 3 en 6 afgebeeld wil hebben in het grid.
    Indien je query de juiste velden ophaald (3 t/m 6), dan is je code juist, anders moet je misschien de for-loop laten lopen van 2 t/m 5?

    En ook:
    - RowCount moet volgens mij gelijk zijn aan RecordCount + 1?
    - Er mist nog een qry_itemBYuitgifte.First?
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  3. #3
    hi,

    het stuk waarde de afhankelijkheid in zit voor te kiezen tussen
    query 1 en 2 (had inderdaad tabel vermeld) heb ik er ff niet ingezet.

    Er is een zogenaamde uitgifte query met alle medewerkers/gasten, hier
    is een veld 'naw_upgrade' met een waarde Nee of Ja. Indien waarde is
    Nee dan query 1 anders query 2

    in dit geval haalt de query alle velden op, maar misschien is het beter
    of alleen de velden op te halen die ik nodig heb in dit geval, alhoewel de
    velden die ik nodig heb zijn lookup fields naar een andere query.

    ga eens ff aan de slag...kijken of ik er verder uit kan komen...thanks

  4. #4
    Als die gegevens toch uit een tabel komen, is het dan niet handiger om er toch een DBGrid voor te gebruiken? Door simpelweg een andere query uit te voeren of een andere dataset/table/query aan de datasource van je grid te koppelen, kun je al andere data laten zien.
    1+1=b

  5. #5
    hi

    is een optie natuurlijk, maar weet niet wat het effect is in de praktijk
    door het real-time switchen en wat de beste oplossing is.

    Misschien even de achtergrond schetsen...
    Tabel naw, functies en attributen (bijv. drankbon, polsbandje x enz.)
    Koppeling tussen functies en attributen zodat inzichtelijk is welke
    attributen aan een functie hangen. Alle personen (medewerkers,gasten)
    zitten in systeem en hebben een functie, dus weet je op basis van
    de functie welke attributen erbij horen. Tot hier geen probleem en werkt
    als jaren. Nu gaan we een upgrade functionaliteit inbouwen, waarbij ik
    op persoons niveau een upgrade moet kunnen doen. Bijv. je krijgt een
    polsbandje dat toegang geeft tot All-area deel.

    Wat gebeurd er...op moment dat men op de knop upgrade klikt worden de
    attributen die aan de functie hangen gekopieerd naar een aparte tabel.
    Je hebt nu op persoons niveau de attributen gekoppeld en je kunt hier
    attributen toevoegen/verwijderen. Vervolgens wordt er een upgrade
    parameter op ''Ja'' gezet zodat programma weet dat hij een de upgrade
    tabel moet kijken voor de juiste attributen

    Tijdens het festival komen medewerkers/gasten met een accreditatie incl
    barcode. Scannen en men moet direct zien welke attributen men krijgt en
    afhankelijk van de upgrade parameter moet hij deze uit de koppel tabel
    halen of uit de upgrade tabel. Tevens wordt direct er een persoonlijk
    polsbandje geprint.

    Belangrijk is dat het switchen van datasource snel en effectief gaat omdat
    er een bulk van mensen komen waarvan de gegevens verwerkt worden
    en dus de attributen verstrekt worden.

    Ik wil maar 1 grid op het scherm hebben die de info weer geeft, vandaar
    de keuze voor een stringgrid. Een andere optie kan inderdaad zijn om een dbgrid te plaatsen en te switchen, maar moet zeker zijn dat dit snel gaat
    en zonder problemen.

    Suggesties en tips, ervaring zijn van harte welkom natuurlijk.

    Greetz Peter

  6. #6
    Je zou ook meerdere grids kunnen plaatsen en er maar één tonen. Of zet ze op een pagecontrol zonder tabbladen en switch naar het juiste tabblab.

    Maar los daarvan, een andere datasource aan een DBGrid koppelen is verrassend snel.
    Marcel

  7. #7
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    Als het ECHT snel moet doet ik bij de opstart van de applicatie alle noodzakelijke data vanuit de db copieren in het geheugen van de PC. De data plaats ik dan in records. Ook ik maak dan gebruik van Stringgrids (een van mijn lievelings componenten, je kunt er heel veel mee) en het werkt razend snel. Dus ik maak records die een gelijke struktuur hebben als de tabellen en kopier de noodzakelijke date daarin. Verder heb ik nog records voor eventuele bewerkingen en de resultaten worden ook in records of velden van de records opgeslagen en via stringgrids weergegeven. Super snel!!!!

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
  •