Cum se face sortarea în dbgrid e

Cum se face sortarea în DBGrid e

Sortați după faceți clic pe antetul coloanei
Acum o fac în felul următor:

cu (dbgView.DataSource.DataSet ca TClientDataSet) face dacă Active apoi Close;






dacă Column.Field.FieldKind = fkData atunci
cu (dbgView.DataSource.DataSet ca TClientDataSet)
începe
IndexDefs.Clear;
IndexDefs.Add ("SortIndex", AnsiUpperCase (Column.FieldName), []);
IndexName: = "SortIndex";
se încheie;
(dbgView.DataSource.DataSet ca TClientDataSet) .Open;

Problema este că nu puteți sorta câmpurile LookUp atât de mult și de fapt au nevoie de ele.
Poate cineva să facă astfel de lucruri - împărtășiți-vă experiența și apoi tot ceea ce nu cred că mi se pare nu este foarte universal și greoi.

1. Faceți clic pe antetul coloanei pentru a verifica tipul câmpului. Și, dacă nu, nu faceți nimic.

2. Sortați după câmpul de căutare pentru câmpul de căutare.

Primiți acest câmp nu pe client și sortați în interogare

>> Eater Moss Eater
Eu și acum, altceva de la interogare a aruncat când a intrat în întrebare, dar aceasta nu este o opțiune, câmpul tabelului NAME nu este neapărat asociat cu un ID, pe care îl pot folosi

>> Eater Moss Eater
M-am gândit la asta, dar trebuie să scriu o formă universală pe care este grila și ce date vor exista, din care date - nu este cunoscut în prealabil

Puteți, desigur, să transmiteți formularul în plus față de clientDataSet și lista câmpurilor de căutare ale câmpurilor de căutare și cele reale din baza de date și apoi să înlocuiți dinamic în interogarea ORDER BY în câmpurile obligatorii

dar poate fi mai ușor?

Care este criteriul de "simplitate" pentru tine?

Nu aș vrea să urc într-o interogare

doar prost adaugă ORDER BY până la sfârșitul anului? și dintr-o dată există niște prostii după care nu poți pune ORDER BY,
și, în general, dacă aș putea obține de la clientdataset la clientdataset "și acesta este altul și astfel transferați-le pe ambele.

poate mânca în orice fel

Nu pot spune că e mai ușor până când voi afla mai multe metode

În handler-ul onTitleClic:
ClientDataSet.IndexName: = "NameField"
Și asta e tot.

Scuze. Aici:
procedura TForm.GridTitleClick (coloană: TColumn);






începe
ClientDataSet.IndexFieldNames: = Column.FieldName;
se încheie;


> Andrushk (06.02.03 15:50)
> Nu aș vrea să urc într-o interogare
>
> Pur și simplu pentru a adăuga ORDER BY în cele din urmă? Și dintr-o dată există un fir
> crap este dupa care nu poti pune ORDER BY,

Mesagerul face o grămadă pe server.
nu poți pune ORDER BY - de ce?

Bundle pe server:
selectați t. *, lookUp.name
de la t, lookUp
unde t.id = lookUp.id
comanda de lookUp.name

> Andrushk (06.02.03 15:50)
> Nu aș vrea să urc într-o interogare
>
> Pur și simplu pentru a adăuga ORDER BY în cele din urmă? Și dintr-o dată există un fir
> crap este după care este imposibil de a pune ORDER BY

Te contrazici. Puteți să pariați, doar tu de ce - să decideți când să pariați. IMHO.

M-am întrebat dacă cineva poate interoga ORDER BY la sfârșit. ca oricine

Cererea de pe server, în sens în?

Apropo, puteți scrie astfel:

selectați t. *
de la t, lookUp
unde t.id = lookUp.id
comanda de lookUp.name

Dacă ați putea scrie: selectați t. *, LookUp.name - atunci nu ar exista nimic de a contriva cu ORDER BY

poate încă ce metode sunt.


> Andrushk (06.02.03 16:36)
> cerere pe server, în sensul în?

furnizor ai ceva de-a face cu asta?

> Încă pot fi metode.

Este posibil prin ClientDataSet, CommandText.

Dar, în măsura în care înțeleg, clientul nu are nici un sens să facă cereri, pentru că voi alege date nu din întregul set de date, ci numai din cele pe care le are clientul


> Andrushk (06.02.03 16:52)
> set de date-> furnizor-> clientdataset
>
> Dar în măsura în care înțeleg, clientul nu are nici un sens să facă
> solicită, deoarece nu voi selecta date din întregul set
> date, dar numai din cele pe care le are clientul

Trebuie să citiți cu atenție despre Midas.
TQuery (TTable) -> provider-> clientdataset și nu ceea ce ați scris.
ClientDataSet.CommandText - trimite o cerere către furnizor, care determină unde să primească și returnează (elimină, inserează, actualizează) datele. Totuși, există un lucru interesant Delta și ApplyUpdate - asigurați-vă că citiți despre ele.

ce pentru mine TQuery, lucrez cu oracle prin DBExpress, și ca set de date "și folosesc TSQLDataSet

dar în ceea ce privește cererea către furnizor - este necesar să verificăm dacă acest lucru este într-adevăr așa, atunci sarcina pare să fie simplificată

-)) este interesant, dacă nu știți dacă ApplyUpdate puteți lucra în general cu ClientDataSet "om

Și pentru mine în clientdataset "e în SELECT, în clauza FROM pentru a specifica că vreau să aleg din tot ceea ce este în setul de date?

și anume pot face ca setul de date să fie ca un tabel și îl voi specifica în interogarea clientdataset "a

în general, ca și cum o astfel de cerere de a scrie, astfel încât să includă toate câmpurile din setul de date + toate câmpurile

Furnizorul însuși analizează ceea ce are nevoie să se schimbe.
OnGetDataSetPoperties - vedeți acolo puteți specifica cine doriți să schimbați.

Nu, iată cum se face:
există SQLDataSet1 - are un fel de interogare, complicat cu o mulțime de condiții

prin intermediul furnizorului este conectat cu ClientDataSet1

Deci, aici este posibil în ClientDataSet1.CommandText să scrieți:

SELECT * FROM SQLDataSet1

- Ei bine, pe smylu aici și cum se poate scrie cu adevărat?







Articole similare

Trimiteți-le prietenilor: