Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi 2007 + cxgrid

[es] :: Pascal / Delphi / Kylix :: Delphi 2007 + cxgrid

[ Pregleda: 2030 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Delphi 2007 + cxgrid27.09.2017. u 13:38 - pre 79 meseci
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.


 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.e-info.ba.



+62 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 08:23 - pre 79 meseci
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
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 08:52 - pre 79 meseci
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
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 09:32 - pre 79 meseci
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.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.e-info.ba.



+62 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 09:37 - pre 79 meseci
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
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 10:33 - pre 79 meseci
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.

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 10:46 - pre 79 meseci
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.
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 10:56 - pre 79 meseci
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.
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 11:00 - pre 79 meseci
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.
 
Odgovor na temu

kraki
Ranko Krstic
Sistem administrator
Kragujevac

Član broj: 3173
Poruke: 22
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 11:49 - pre 79 meseci
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...
cracky
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid28.09.2017. u 12:17 - pre 79 meseci
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....
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid29.09.2017. u 08:26 - pre 79 meseci
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).
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Delphi 2007 + cxgrid29.09.2017. u 08:57 - pre 79 meseci
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
...

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi 2007 + cxgrid29.09.2017. u 12:45 - pre 79 meseci
...to bas komplikovano, cudi me da QuantumGrid to nema lepse reseno, cini mi se da klasicni DBGrid lepo radi kad postoji RefreshQuery.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi 2007 + cxgrid

[ Pregleda: 2030 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.