Podrška #27089
ZatvorenNumerička i datumska polja i semafori: rješenje
Dodano od Ernad Husremović prije oko 13 godina. Izmjenjeno prije oko 13 godina.
100%
Povezani tiketi 1 (0 otvoreno — 1 zatvoren)
Izmjenjeno od Ernad Husremović prije oko 13 godina
nema nikakve potrebe da mijenjamo algoritam semafora da bi numerička i datumska polja ubacitli u postojeći algoritam semafora.
Izmjenjeno od Ernad Husremović prije oko 13 godina
ako imamo polje koje je indeksirano po numeričkoj vrijednosti IDNUM
i postojeći indeks je
index on idnum tag "ID"
sve što treba jeste da promjenimo logiku indeksa ... ili da ne čačkamo (ako se već indeks koristi) uvodimo polje
index on STR(IDNUM, 13) TAG "ID_SEM"
ID_SEM tag ćemo koristiti za sinhronizaciju podataka. On će biti indeksiran po stringu.
Izmjenjeno od Ernad Husremović prije oko 13 godina
idugov¶
index on DATUG to tag "DATUG"
uvodimo novi indeks:
index on DTOS to tag "DATUG_SEM"
DATUG_SEM koristimo kao indeks za semafore
Izmjenjeno od Ernad Husremović prije oko 13 godina
serverska strana¶
http://redmine.bring.out.ba/issues/27077#note-13
u sql where stavljamo: to_char( datug, 'YYYYMMDD')
Izmjenjeno od Ernad Husremović prije oko 13 godina
rezime¶
semafori traže da postiji dbf indeks koji sadrži izraz pohranjen u ključu.
Uvođenje novog indeksa za potrebe semafora u dbf je "bezbolna" i jednostavna operacija.
Uvođenje to_char na sql strani takođe nije problematično.
Time se sva logika semafora svodi na identifikatore koji su string polja.
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Naslov promijenjeno iz Numerička i datumska polja u semaforima, rješenje u Numerička i datumska polja i semafori: rješenje
Izmjenjeno od Saša Vranić prije oko 13 godina
Mislim da ovdje nije problem u samom kluču koliko je u formiranju sql izraza
Naime, u a_dbfs matrici definišemo ključna polja za insert/update
{ "id", "datum", "naz", ... }
ta se polja na kraju koriste kod formiranja del/ins sklopa
Izmjenjeno od Saša Vranić prije oko 13 godina
praktično tu treba napraviti manipulaciju sa datumskom varijablom, da je konvertuje u DTOS
Izmjenjeno od Saša Vranić prije oko 13 godina
To je dio gdje se IDS zapisi dodaju
Izmjenjeno od Ernad Husremović prije oko 13 godina
da.
kod numeričkih polja smo rekli
{ "num_polje", 5 } => STR(num_polje, 5)
stavićemo ovako za datumska polja
{ "dat_polje", 100 } => DTOS(dat_polje)
if VALTYPE( _field ) == "A" _t_field := _field[1] _t_field_dec := _field[2] _values_dbf[_t_field] := EVAL(FIELDBLOCK(_t_field)) if _values_dbf[_t_field] != values[ _t_field ] _changed_id := .t. endif if _t_field_dec > 99 // ovo je datumsko polje _full_id_dbf += DTOS(_values_dbf[ _t_field ]) _full_id_mem += DTOS( values[ _t_field ]) else // num polj _full_id_dbf += STR(_values_dbf[ _t_field ], _t_field_dec) _full_id_mem += STR( values[ _t_field ], _t_field_dec ) endif else ... obična karakter polja endif
Izmjenjeno od Ernad Husremović prije oko 13 godina
dodaj ovo u kod semafora.
Hmm ova sekvenca koda se pojavljuje na još par mjesta mislim ... uradi isto kao ovdje
Izmjenjeno od Saša Vranić prije oko 13 godina
jednostavno ispitujem ne osnovu vrijednosti tog polja o čemu se radi
Izmjenjeno od Ernad Husremović prije oko 13 godina
aha dole. tvoje rješenje je bolje. to je to
gADBFS se ne zadaje kao matrica onda.
Izmjenjeno od Saša Vranić prije oko 13 godina
tako da nema potrebe mjenjati strukturu matrice, praktično nam je to potrebno samo kod numeričkih vrijednosti radi toga da znamo koliko će biti decimala
Izmjenjeno od Saša Vranić prije oko 13 godina
Sada još samo da ispitam sklop semafora i ids-ova kod kupljenja podataka da li će biti dobro
Izmjenjeno od Saša Vranić prije oko 13 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno
- % završeno promijenjeno iz 0 u 100