[ captPicard @ 10.09.2012. 14:16 ] @
Znači u

Code:
procedure TFForma.DBGrid1DrawColumnCell


imam slijedeće:

Code:
  with Dataset do
  begin
    Close;
    SelectSQL.Text := 'select 1 from tablica where ' +
      'nesto= ' + QuotedStr(NekiDataset.FieldByName('sifra').AsString) + ' and oznaka = ''n'' ';
    Open;
    if RecordCount <> 0 then
      Grid.Canvas.Font.Color := clRed;
  end;

  Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);


i to radi jako sporo. Jasno mi je da on svaki puta kod novog reda ponovo pokreće upit, ali ne vidim kako drukčije da riješim (polje "oznaka" je u drugoj tablici, znači to polje nemam u podacima u gridu). Netko ima ideju, iskustva?

Hvala.
[ aca andrijevic @ 10.09.2012. 15:30 ] @
Da li si probao da upit pokreces kroz neki drugi event a ne u DrawColumnCell, jer bi
on pri svakom refreshu dataseta trebao da radi iscrtavanje prema parametrima.Ja na
primer imam samo ovo u nekom mom kodu:

Code:

procedure TfrmNekaForma.dgNekiGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
      if dsNekiDataSource.DataSet.FieldByName('neko_polje').AsString = 'n' then
        begin
          if Column.FieldName = 'ovo_je_to_polje' then
            begin
              dgNekiGrid.Canvas.Font.Color := clRed;
              dgNekiGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
        end;
    end;
end;


I to radi svaki put kada se radi osvezavanje dataseta.
[ captPicard @ 10.09.2012. 17:17 ] @
Napravio sam calculated field u prvom datasetu i sada to radi malo brže (makar opet nisam baš zadovoljan).
Ali hvala na savjetu.


[ reiser @ 10.09.2012. 17:31 ] @
Ne kontam bas sta hoces da prikazes u tom polju? Ako hoces da ti polje bude crveno u zavisnosti od toga da li u drugoj tabeli postoje recordi ili ne, pogledaj JOIN sql komandu.
[ savkic @ 11.09.2012. 00:03 ] @
> i to radi jako sporo. Jasno mi je da on svaki puta kod novog reda ponovo pokreće upit, ali ne vidim kako drukčije da riješim (polje "oznaka" je u drugoj tablici, znači
> to polje nemam u podacima u gridu). Netko ima ideju, iskustva?

Čupaš podatke iz baze kod svakog refreša ćelije, to može biti više stotina puta u sekundi, možeš postupak optimizovati tako da kad je jednom dobijeno status za dati slog ne traži ga ponovo. A možeš uraditi unapred bilo kroz neko calculated polje bilo kroz join ili dodatni upit koji će odmah po otvaranju dataseta saznati i te dodatne stvari.