Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 3.549 pregleda

Najnovija ↓

Delphi 2007 + cxgrid 27.09.2017. u 14:38 · pre 110 meseci #1
Imam zanimljiv problem...

qry.SqlSelect := 'select a.field1, a.field2, b.field3, b.field3
from a
left join b on a.f = b.f'

podaci se prikazuju u cxgridu

Kada radim append podataka, radim ga na qry-u.
Nakon pos, comitretainig i refresh imam sljedeću situaciju:

vrijdenosti qry fieldova su ok, onako kako su upisani
cxgrid ima tri slučaja:
1. ako nije uključen sort cxgrida-a, podaci se prikazuju ispravno
2. ako je uključen sort cxgrida, po bilo kojoj koloni, podaci iz joinane tablice (b) se ne prikazuju za dodati slog
3. ako napravim qry.close, qry.open - podaci se prikazuju ispravno (ovo mi nije nasretnija varijanta zbog brzine)

iskušao sam i cxgridview.datacontroller.refresh - ista stvar.


Re: Delphi 2007 + cxgrid 28.09.2017. u 09:23 · pre 110 meseci #2
Nisam siguran da li sam dosad radio sa cxgridom, ali evo par predloga:

1) Append odradi kroz poseban query (samo na tabeli a), nakon toga refresh osnovnog query-ja; mislim da bi trebalo da bude ok.
2) Ako ne valja (dobijes opet prazne podatke iz tabele b), probaj onda ovako: a) iskljucis sort; b) odradis append na osnovnom query-ju; c) ponovo ukljucis sort. E da, pre a) ako treba uzmes bookmark, pa se posle c) pozicioniras na taj bookmark.

Pozz
Re: Delphi 2007 + cxgrid 28.09.2017. u 09:52 · pre 110 meseci #3
1) ovo ne mogu koristiti jer nakon toga treba Locate, a to traje...
2) ne radi, opet su prazni podaci

Za sada jedino kako radi: Close - Open - Locate
Re: Delphi 2007 + cxgrid 28.09.2017. u 10:32 · pre 110 meseci #4
Cini mi se kao scenario za dataset komponentu a ne quey ili table. Ako se dobro secam u DataSet komponenti postoje 3-4 query-ija: select, update, delete i mozda append. Pa nju (DataSet) bindujes na cxGrid. Ja se kroz maglu secam AdoDataSet.
Re: Delphi 2007 + cxgrid 28.09.2017. u 10:37 · pre 110 meseci #5
A varijanta 2b):

a) iskljucis sort; b) odradis append na osnovnom query-ju; c) refresh i na kraju d) ponovo ukljucis sort.

Prema tvom prvom postu na temi, koraci od a) do c) bi MORALI da rade. Ako nakon sort-a opet bude 'rupa' u podacima, onda tu nesto ne stima...

Pozz
Re: Delphi 2007 + cxgrid 28.09.2017. u 11:33 · pre 110 meseci #6
dejanet: to je sve ispravno postavljeno. qry->dataset->cxgrid

Dakle, u kodu gdje dodajem novi slog, redom imam;

Code:

RjesenjaDBGridDBTableView1.DataController.ClearSorting(false);
q1.append;
q1F1.AsString := Nesto;
...
q1.Post;
q1.Transaction.CommitRetaining;
q1.Refresh;
RjesenjaDBGridDBTableView1.DataController.Refresh;

ShowMessage(q1Field3.AsString);


- q1Field3 je field iz joinane tablice i ShowMessage ga prikaže ispravno, a cxgrid ne. Podatke iz "a" tablice uredno prikaže.
- Maknuo sam sort i nisam ga nakon appenda vraćao.
- cxgrid više nije sortiran
- RefreshSQL je ispravan i qry ga odradi jer da nije ispravan niti ShowMessage ne bi prikazao ispravno podatak.

Ako nakon starta programa ne postavim sort (klik na column title), ostavim grid kako je - nesortiran, podaci se ispravno prikazuju. Sve mi više miriše na bug u cxgridu.

Re: Delphi 2007 + cxgrid 28.09.2017. u 11:46 · pre 110 meseci #7
Sa cxGridom nisam nesto posebno radio pa u tom delu ne mogu pomoci, mozda samo savet da pokusas kod njih na forumu ili preko supporta, ako je bug mislim da ispravljalju.

Da li koristis Firebird? Vidim da koristis CommitRetaining, on nije bas najbolje resenje i za vece baze moze izazvati usporenja, bolje je resenje hard Commit. Sam dataset bi preko RefreshaSQLa trebalo da uradi refresh samo izmenjenog sloga, a cak i ako radi cele tabele to nece biti problem ali bi verovatno bilo bolje da koristis posebnu ReadOnly transakciju za pregled i drugu transakciju (i query) za izmene.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Delphi 2007 + cxgrid 28.09.2017. u 11:56 · pre 110 meseci #8
Mozda klikom na sort dx grid komponenta pogresno update-uje sql query sa "order by", pa zato imas "empty" resultset, mada bi onda trebalo da dobijes neki error ili bar warning u debuger-u.
Re: Delphi 2007 + cxgrid 28.09.2017. u 12:00 · pre 110 meseci #9
Koristim FireBird.
Ne mogu napraviti Commit jer on closa dataset pa izgubim aktivni slog. Sa commit i open stvar radi samo moram i locate, a vrijeme...
Ako korisim odvojene trans. za pregled i izmjene, opet isti problem sa lociranjem dodatog sloga.

Pisao sam supportu ali nikako da odgovore, na forumima nisam ništa pronašao o tom problemu. Mislio sam da je netko od vas imalo takav problem.
cx kontrole su krasne, ali... da ponovno radim taj projekt sigurno ih ne bih koristio, a sada ih ići mijenjati :( sada koristim svoj dbgrid kojem sam napravio, ima slično incrementalno pretraživanje, filter i sortiranje po koloni kao i cxgrid, a bez milion property-a.
Re: Delphi 2007 + cxgrid 28.09.2017. u 12:49 · pre 110 meseci #10
Izvini ako ako si probao a ja sam preskočio... A da probaš da uradiš refresh cxGgrida... na primer cxGridNekoIme.Refresh. Znači ne refresh DataSet-a nego samog grida preko ugrađene funkcije...
Potpis
cracky
Re: Delphi 2007 + cxgrid 28.09.2017. u 13:17 · pre 110 meseci #11
Isprobano:
Code:

RjesenjaDBGridDBTableView1.DataController.Refresh;


DevExpres objavio pitanje, a nisu poslati odgovor. To je support? Za 1-2 mjeseca možda dobijem odgovor od koga....
Re: Delphi 2007 + cxgrid 29.09.2017. u 09:26 · pre 110 meseci #12
Ovo su mi odgovorili, ništa pametno... ne pada mi na pamet kupovati novu verziju...
Preostaje qry.Close -> Open -> Locate

In your account records, I see that you are using a very old version of our TcxGrid control. I admit that there may be issues in such old builds. However, in this case, I think that the behavior you described is caused by the fact that your data set (query) does not notify listeners about changes. Regular data sets (e.g., TClientDataSet, TADOTable, etc.) should correctly work in this case. I suggest that you check if calling the cxGridDBTableView.DataController.RefreshExternalData method can help you overcome this problem. If populating grid records takes much time, consider enabling the cxGridDBTableView.DataController.DataModeController.GridMode property to speed up the process (see the "Grid Mode" help topic).
Re: Delphi 2007 + cxgrid 29.09.2017. u 09:57 · pre 110 meseci #13
Ako će tko imati sličan problem, evo kako sam ga riješio, malo zobilazno ali puno brže od close->open->locate...

Nakon qry.Refresh upišem u cxgrid podatke iz joinane tablice:
Code:

qry.Refresh;
index := cxGridDBTableView1.DataController.GetSelectedRowIndex(0);
rw := cxGridDBTableView1.Datacontroller.GetRowInfo(index);
KeyInd := cxGridDBTableView1.DataController.GetItemByFieldName('FieldName').Index;
cxGridDBTableView1.DataController.SetValue(rw.RecordIndex, KeyInd, qryFieldName.AsString);
...
// i tako za sve field-ove iz join-ane tablice
...

Re: Delphi 2007 + cxgrid 29.09.2017. u 13:45 · pre 110 meseci #14
...to bas komplikovano, cudi me da QuantumGrid to nema lepse reseno, cini mi se da klasicni DBGrid lepo radi kad postoji RefreshQuery.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme