SQL - Ověření použití pole v tabulce - příklad
SELECT
Barva
FROM
HR__Z201
WHERE
Barva
IS NOT NULL
ORDER BY
Barva
DESC
2014.01.09a / 00:00
002) Upraveny TimeOut u SQL dotazů
2013.12.19a / 12:00
003) Příklad SQL pro analýzu tabulky QueryLog - řazeno od nejpomalejších SQL dotazů
SELECT
*
FROM
(
SELECT
StartTime,
EndTime,
ROUND((CAST(EndTime AS EXTENDED)-CAST(StartTime AS EXTENDED))*24.0*3600.0*1000.0) AS ms,
TimeOut,
Finished,
AliasName,
ErrorCode,
ErrorString,
Query
FROM
QueryLog
) AS x
WHERE
(ms > 32)
ORDER BY
ms Desc
004) Příklad SQL pro analýzu tabulky QueryLog - SQL dotazy týkající se K1
SELECT
StartTime,
EndTime,
ROUND((CAST(EndTime AS EXTENDED)-CAST(StartTime AS EXTENDED))*24.0*3600.0*1000.0) AS ms,
TimeOut,
Finished,
AliasName,
ErrorCode,
ErrorString,
Query
FROM
QueryLog
WHERE
(Query LIKE '%K1%')
2008.02.21a / 00:00
001) SQL
- upraveno pro spouštění libovolně dlouhých SQL dotazů
2007.07.08a / 21:00
001) Úprava poddotazů pro NexusDB verze 2.07.01
- od verze 2.07.01 NexusDB je nutné pro každý poddotaz použít alias:
Př.:
SELECT ... FROM
(
SELECT ...
) alias;
kde alias je jméno aliasu, např.: X
2007.01.09a / 08:00
001) SQL
- zvýšen maximální TimeOut z 15-ti minut na 24 hodin
2000.03.12b / 21:00
02) Poznamky k zadavani SQL dotazu:
- v casti ORDER BY mohou byt uvedena pouze pole, ktera jsou uvedena
v casti SELECT (v casti WHERE libovolna)
---> pro spravne formatovane trideni cisel musi byt v casti
SELECT uvedeno i MISTRIDCISLO(..)
Úvod do jazyka SQL
SQL = Structured Query Language - databázový jazyk. Vznikl kolem roku 1975, firma IBM.
SW manas umožňuje použití jazyka SQL na 2 úrovních.
Na 1. úrovni jsou to SQL dotazy nad tabulkami FF2 serveru, které vrací množinu vět dle omezení. Na tuto množinu vět je možné použít 2. úroveň - xSQL dotazy, které mohou výběr vět dále zúžit a doplnit do vybraných vět údaje z jiných tabulek (např. k číslu zboží jeho název) a vyhnout se tak časově velmi pomalým spojováním tabulek. SQL dotaz je prováděn na straně serveru, xSQL dotaz na straně klienta. Součástí xSQL dotazu jsou uživatelsky definované funkce - v současné době již pres 120 funkcí, které nejsou součástí jazyka SQL. Další funkce je možné podle potřeby doplňovat.
Od jiných klient/serverových aplikací se SW manas mimo možnost použití SQL dotazů jak na straně serveru tak na straně klienta liší dále tím, že je možné
v kombinovaném SQL dotazu pomocí pracovní tabulky v paměti sloučit výsledky více SQL dotazů a nad vysledkem potom vykonat xSQL dotaz.
Př.:
- sloučení dat za partnera za několik měsíců a za několik typů dokladů
- sloučení dat za všechny pokladny v měsíci
Výsledkem SQL dotazů jsou 3 tabulky, které je možné procházet a data v nich je možné exportovat do většiny používaných datových formátů (TXT, DOC, XLS, HTM, PDF (bez diakritiky), ...). Další možností výstupu dat je tisk pomocí 2 generátorů reportů (je možné doplnit obrázky, čárkové kódy, ...).
Toto řešení je zcela univerzální a svými možnostmi předčí řešení v podstatně dražších informačních systémech.
Kombinované SQL dotazy
Kombinace SQL dotazu na straně serveru (SQL) a na straně klienta (xSQL) s využitím paměťové tabulky pro shromažďování výstupů SQL dotazu na straně serveru.
V záložce scénář lze použít:
//
... poznámka
;
... poznámka
prázdný řádek
... oddělení
ME zpráva
... zobrazení zprávy + pípnutí
B1X název parametru 1
... vyžádá si zadání parametru 1 v okně, má přednost před jinak zadaným parametrum 1
B2X název parametru 2
... vyžádá si zadání parametru 2 v okně, má přednost před jinak zadaným parametrum 2
B3X název parametru 3
... vyžádá si zadání parametru 3 v okně, má přednost před jinak zadaným parametrum 3
B4X název parametru 4
... vyžádá si zadání parametru 4 v okně, má přednost před jinak zadaným parametrum 4
B5X název parametru 5
... vyžádá si zadání parametru 5 v okně, má přednost před jinak zadaným parametrum 5
B6X název parametru 6
... vyžádá si zadání parametru 6 v okně, má přednost před jinak zadaným parametrum 6
B7X název parametru 7
... vyžádá si zadání parametru 7 v okně, má přednost před jinak zadaným parametrum 7
B8X název parametru 8
... vyžádá si zadání parametru 8 v okně, má přednost před jinak zadaným parametrum 8
kde X je A ... parametr bude zadán výběrem agendy
B
C ... parametr bude zadán na kalkulačce
D ... parametr bude zadán výběrem v kalendáři
- postupně mohou být až 4 výběry v kalendáři
- k formátovanému datumu je přístup pomocí parametrů ~Axxx až ~Lxxx
E ... parametr bude zadán v editovacím poli
F
G
H
I
J
K
L
M
N
O
P
Q
R
S ... parametr bude zadán výběrem agendy skladu
T ... parametr bude zadán výběrem střediska
U
V
W
X
Y
Z
F1
... sestava z tabulky 1 pomocí generátoru sestav 1
F2
... sestava z tabulky 2 pomocí generátoru sestav 1
M1 ... ukončení skriptu, pokud je paměťová tabulka prázdná
MA
... následná vložení výsledku tabulky 1 do paměťové tabulky
MC
... inicializace paměťové tabulky
MI
... prvotní vložení výsledku tabulky 1 do paměťové tabulky - včetně struktury tabulky
N1 název sestavy
... definice názvu sestavy
N2 podnázev sestavy
... definice podnázvu sestavy
N3 název
... název SQL dotazu - zobrazen v okně parametrizace
P1 parametr1
... definice parametru 1, nahradí '~1'
P2 parametr2
... definice parametru 2, nahradí '~2'
P3 parametr3
... definice parametru 3, nahradí '~3'
P4 parametr4
... definice parametru 4, nahradí '~4'
P5 parametr5
... definice parametru 5, nahradí '~5'
P6 parametr6
... definice parametru 6, nahradí '~6'
P7 parametr7
... definice parametru 7, nahradí '~7'
P8 parametr8
... definice parametru 8, nahradí '~8'
Q1 jméno tabulky FF2
... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz
31 jméno tabulky FF2
... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz
32 jméno tabulky FF2
... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz
QA jméno tabulky FF2
... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz
výsledek z tabulky 1 připojí do paměťové tabulky,
inicializace paměťové tabulky je provedena automaticky
41 jméno tabulky FF2
... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz
výsledek z tabulky 1 připojí do paměťové tabulky,
inicializace paměťové tabulky je provedena automaticky
42 jméno tabulky FF2
... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz
výsledek z tabulky 1 připojí do paměťové tabulky,
inicializace paměťové tabulky je provedena automaticky
QI jméno tabulky FF2
... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz,
výsledek přesune z tabulky 1 do inicializované paměťové tabulky
51 jméno tabulky FF2
... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz,
výsledek přesune z tabulky 1 do inicializované paměťové tabulky
52 jméno tabulky FF2
... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz,
výsledek přesune z tabulky 1 do inicializované paměťové tabulky
R1
... sestava z tabulky 1 pomocí generátoru sestav 2
R2
... sestava z tabulky 2 pomocí generátoru sestav 2
S1 definice SQL1
... definice a spuštění SQL1 dotazu
11 definice SQL12
... definice a spuštění SQL11 dotazu
12 definice SQL12
... definice a spuštění SQL12 dotazu
S2 definice SQL2
... definice a spuštění SQL2 dotazu
21 definice SQL21
... definice a spuštění SQL21 dotazu
22 definice SQL22
... definice a spuštění SQL22 dotazu
SQL1
... provedení SQL1 dotazu - na straně serveru, výsledek v tabulce 1
SQL11
... provedení SQL11 dotazu - na straně serveru, výsledek v tabulce 1
SQL12
... provedení SQL12 dotazu - na straně serveru, výsledek v tabulce 1
SQL2
... provedení SQL2 dotazu - na straně klienta, výsledek v tabulce 2
SQL21
... provedení SQL21 dotazu - na straně klienta, výsledek v tabulce 2
SQL22
... provedení SQL22 dotazu - na straně klienta, výsledek v tabulce 2
Parametrizace
~1
... bude nahrazeno parametrem 1
~2
... bude nahrazeno parametrem 2
~3
... bude nahrazeno parametrem 3
~4
... bude nahrazeno parametrem 4
~5
... bude nahrazeno parametrem 5
~6
... bude nahrazeno parametrem 6
~7
... bude nahrazeno parametrem 7
~8
... bude nahrazeno parametrem 8
~A000 ... poslední zadaný datum funkce
~B000 ... poslední zadaný datum + dny RRRR-MM-DD
~C000 ... poslední zadaný datum - dny RRRR-MM-DD
~D000 ... -1 zadaný datum funkce
~E000 ... -1 zadaný datum + dny RRRR-MM-DD
~F000 ... -1 zadaný datum - dny RRRR-MM-DD
~G000 ... -2 zadaný datum funkce
~H000 ... -2 zadaný datum + dny RRRR-MM-DD
~I000 ... -2 zadaný datum - dny RRRR-MM-DD
~J000 ... -3 zadaný datum funkce
~K000 ... -3 zadaný datum + dny RRRR-MM-DD
~L000 ... -3 zadaný datum - dny RRRR-MM-DD
funkce
901 - RRRR-MM-DD
902 - RRRR-MM-DD + 1 den
001 - r
002 - m
003 - rm
011 - TT
021 - DD
022 - MM
023 - RR
024 - RRRR
031 - DD
032 - DD.MM
033 - DD.MM.RR
034 - DD.MM.RRRR
035 - DDMM
036 - DDMMRR
037 - DDMMRRRR
041 - MM.DD
042 - MM.RR
043 - MM.RRRR
044 - MMDD
045 - MMRR
046 - MMRRRR
051 - RR.MM
052 - RR.MM.DD
053 - RRRR.MM
054 - RRRR.MM.DD
055 - RRMM
056 - RRMMDD
057 - RRRRMM
058 - RRRRMMDD
RRRR-MM-DD
101 - 1. den aktuálního roku
102 - poslední den aktuálního roku
103 - 1. den následujícího roku
104 - poslední den následujícího roku
105 - 1. den předcházejícího roku
106 - poslední den předcházejícího roku
111 - 1. den aktuálního pololetí
112 - poslední den aktuálního pololetí
113 - 1. den následujícího pololetí
114 - poslední den následujícího pololetí
115 - 1. den předcházejícího pololetí
116 - poslední den předcházejícího pololetí
117 - 1. den 1. pololetí
118 - poslední den 1. pololetí
119 - 1. den 2. pololetí
120 - poslední den 2. pololetí
131 - 1. den aktuálního čtvrtletí
132 - poslední den aktuálního čtvrtletí
133 - 1. den následujícího čtvrtletí
134 - poslední den následujícího čtvrtletí
135 - 1. den předcházejícího čtvrtletí
136 - poslední den předcházejícího čtvrtletí
137 - 1. den 1. čtvrtletí
138 - poslední den 1. čtvrtletí
139 - 1. den 2. čtvrtletí
140 - poslední den 2. čtvrtletí
141 - 1. den 3. čtvrtletí
142 - poslední den 3. čtvrtletí
143 - 1. den 4. čtvrtletí
144 - poslední den 4. čtvrtletí
201 - 1. den aktuálního měsíce
202 - poslední den aktuálního měsíce
203 - 1. den následujícího měsíce
204 - poslední den následujícího měsíce
205 - 1. den předcházejícího měsíce
206 - poslední den předcházejícího měsíce
207 - 1. den 1. měsíce
208 - poslední den 1. měsíce
209 - 1. den 2. měsíce
210 - poslední den 2. měsíce
211 - 1. den 3. měsíce
212 - poslední den 3. měsíce
213 - 1. den 4. měsíce
214 - poslední den 4. měsíce
215 - 1. den 5. měsíce
216 - poslední den 5. měsíce
217 - 1. den 6. měsíce
218 - poslední den 6. měsíce
219 - 1. den 7. měsíce
220 - poslední den 7. měsíce
221 - 1. den 8. měsíce
222 - poslední den 8. měsíce
223 - 1. den 9. měsíce
224 - poslední den 9. měsíce
225 - 1. den 10. měsíce
226 - poslední den 10. měsíce
227 - 1. den 11. měsíce
228 - poslední den 11. měsíce
229 - 1. den 12. měsíce
230 - poslední den 12. měsíce
301 - 1. den aktuální dekády
302 - poslední den aktuální dekády
303 - 1. den následující dekády
304 - poslední den následující dekády
305 - 1. den předcházející dekády
306 - poslední den předcházející dekády
307 - 1. den 1. dekády v měsíci
308 - poslední den 1. dekády v měsíci
309 - 1. den 2. dekády v měsíci
310 - poslední den 2. dekády v měsíci
311 - 1. den 3. dekády v měsíci
312 - poslední den 3. dekády v měsíci
313 - 1. den 1. dekády v 1. měsíci
314 - poslední den 1. dekády v 1. měsíci
315 - 1. den 2. dekády v 1. měsíci
316 - poslední den 2. dekády v 1. měsíci
317 - 1. den 3. dekády v 1. měsíci
318 - poslední den 3. dekády v 1. měsíci
319 - 1. den 1. dekády v 2. měsíci
320 - poslední den 1. dekády v 2. měsíci
321 - 1. den 2. dekády v 2. měsíci
322 - poslední den 2. dekády v 2. měsíci
323 - 1. den 3. dekády v 2. měsíci
324 - poslední den 3. dekády v 2. měsíci
325 - 1. den 1. dekády v 3. měsíci
326 - poslední den 1. dekády v 3. měsíci
327 - 1. den 2. dekády v 3. měsíci
328 - poslední den 2. dekády v 3. měsíci
329 - 1. den 3. dekády v 3. měsíci
330 - poslední den 3. dekády v 3. měsíci
331 - 1. den 1. dekády v 4. měsíci
332 - poslední den 1. dekády v 4. měsíci
333 - 1. den 2. dekády v 4. měsíci
334 - poslední den 2. dekády v 4. měsíci
335 - 1. den 3. dekády v 4. měsíci
336 - poslední den 3. dekády v 4. měsíci
337 - 1. den 1. dekády v 5. měsíci
338 - poslední den 1. dekády v 5. měsíci
339 - 1. den 2. dekády v 5. měsíci
340 - poslední den 2. dekády v 5. měsíci
341 - 1. den 3. dekády v 5. měsíci
342 - poslední den 3. dekády v 5. měsíci
343 - 1. den 1. dekády v 6. měsíci
344 - poslední den 1. dekády v 6. měsíci
345 - 1. den 2. dekády v 6. měsíci
346 - poslední den 2. dekády v 6. měsíci
347 - 1. den 3. dekády v 6. měsíci
348 - poslední den 3. dekády v 6. měsíci
349 - 1. den 1. dekády v 7. měsíci
350 - poslední den 1. dekády v 7. měsíci
351 - 1. den 2. dekády v 7. měsíci
352 - poslední den 2. dekády v 7. měsíci
353 - 1. den 3. dekády v 7. měsíci
354 - poslední den 3. dekády v 7. měsíci
355 - 1. den 1. dekády v 8. měsíci
356 - poslední den 1. dekády v 8. měsíci
357 - 1. den 2. dekády v 8. měsíci
358 - poslední den 2. dekády v 8. měsíci
359 - 1. den 3. dekády v 8. měsíci
360 - poslední den 3. dekády v 8. měsíci
361 - 1. den 1. dekády v 9. měsíci
362 - poslední den 1. dekády v 9. měsíci
363 - 1. den 2. dekády v 9. měsíci
364 - poslední den 2. dekády v 9. měsíci
365 - 1. den 3. dekády v 9. měsíci
366 - poslední den 3. dekády v 9. měsíci
367 - 1. den 1. dekády v 10. měsíci
368 - poslední den 1. dekády v 10. měsíci
369 - 1. den 2. dekády v 10. měsíci
370 - poslední den 2. dekády v 10. měsíci
371 - 1. den 3. dekády v 10. měsíci
372 - poslední den 3. dekády v 10. měsíci
373 - 1. den 1. dekády v 11. měsíci
374 - poslední den 1. dekády v 11. měsíci
375 - 1. den 2. dekády v 11. měsíci
376 - poslední den 2. dekády v 11. měsíci
377 - 1. den 3. dekády v 11. měsíci
378 - poslední den 3. dekády v 11. měsíci
379 - 1. den 1. dekády v 12. měsíci
380 - poslední den 1. dekády v 12. měsíci
381 - 1. den 2. dekády v 12. měsíci
382 - poslední den 2. dekády v 12. měsíci
383 - 1. den 3. dekády v 12. měsíci
384 - poslední den 3. dekády v 12. měsíci
401 - 1. den aktuálního týdne
402 - poslední den aktuálního týdne
403 - 1. den následujícího týdne
404 - poslední den následujícího týdne
405 - 1. den předcházejícího týdne
406 - poslední den předcházejícího týdne
407 - 1. den 1. týdne
408 - poslední den 1. týdne
409 - 1. den 2. týdne
410 - poslední den 2. týdne
411 - 1. den 3. týdne
412 - poslední den 3. týdne
413 - 1. den 4. týdne
414 - poslední den 4. týdne
415 - 1. den 5. týdne
416 - poslední den 5. týdne
417 - 1. den 6. týdne
418 - poslední den 6. týdne
419 - 1. den 7. týdne
420 - poslední den 7. týdne
421 - 1. den 8. týdne
422 - poslední den 8. týdne
423 - 1. den 9. týdne
424 - poslední den 9. týdne
425 - 1. den 10. týdne
426 - poslední den 10. týdne
427 - 1. den 11. týdne
428 - poslední den 11. týdne
429 - 1. den 12. týdne
430 - poslední den 12. týdne
431 - 1. den 13. týdne
432 - poslední den 13. týdne
433 - 1. den 14. týdne
434 - poslední den 14. týdne
435 - 1. den 15. týdne
436 - poslední den 15. týdne
437 - 1. den 16. týdne
438 - poslední den 16. týdne
439 - 1. den 17. týdne
440 - poslední den 17. týdne
441 - 1. den 18. týdne
442 - poslední den 18. týdne
443 - 1. den 19. týdne
444 - poslední den 19. týdne
445 - 1. den 20. týdne
446 - poslední den 20. týdne
447 - 1. den 21. týdne
448 - poslední den 21. týdne
449 - 1. den 22. týdne
450 - poslední den 22. týdne
451 - 1. den 23. týdne
452 - poslední den 23. týdne
453 - 1. den 24. týdne
454 - poslední den 24. týdne
455 - 1. den 25. týdne
456 - poslední den 25. týdne
457 - 1. den 26. týdne
458 - poslední den 26. týdne
459 - 1. den 27. týdne
460 - poslední den 27. týdne
461 - 1. den 28. týdne
462 - poslední den 28. týdne
463 - 1. den 29. týdne
464 - poslední den 29. týdne
465 - 1. den 30. týdne
466 - poslední den 30. týdne
467 - 1. den 31. týdne
468 - poslední den 31. týdne
469 - 1. den 32. týdne
470 - poslední den 32. týdne
471 - 1. den 33. týdne
472 - poslední den 33. týdne
473 - 1. den 34. týdne
474 - poslední den 34. týdne
475 - 1. den 35. týdne
476 - poslední den 35. týdne
477 - 1. den 36. týdne
478 - poslední den 36. týdne
479 - 1. den 37. týdne
480 - poslední den 37. týdne
481 - 1. den 38. týdne
482 - poslední den 38. týdne
483 - 1. den 39. týdne
484 - poslední den 39. týdne
485 - 1. den 40. týdne
486 - poslední den 40. týdne
487 - 1. den 41. týdne
488 - poslední den 41. týdne
489 - 1. den 42. týdne
490 - poslední den 42. týdne
491 - 1. den 43. týdne
492 - poslední den 43. týdne
493 - 1. den 44. týdne
494 - poslední den 44. týdne
495 - 1. den 45. týdne
496 - poslední den 45. týdne
497 - 1. den 46. týdne
498 - poslední den 46. týdne
499 - 1. den 47. týdne
500 - poslední den 47. týdne
501 - 1. den 48. týdne
502 - poslední den 48. týdne
503 - 1. den 49. týdne
504 - poslední den 49. týdne
505 - 1. den 50. týdne
506 - poslední den 50. týdne
507 - 1. den 51. týdne
508 - poslední den 51. týdne
509 - 1. den 52. týdne
510 - poslední den 52. týdne
511 - 1. den 53. týdne
512 - poslední den 53. týdne
513 - 1. den 54. týdne
514 - poslední den 54. týdne
601 - počet dní v 1. měsíci
602 - počet dní v 2. měsíci
603 - počet dní v 3. měsíci
604 - počet dní v 4. měsíci
605 - počet dní v 5. měsíci
606 - počet dní v 6. měsíci
607 - počet dní v 7. měsíci
608 - počet dní v 8. měsíci
609 - počet dní v 9. měsíci
610 - počet dní v 10. měsíci
611 - počet dní v 11. měsíci
612 - počet dní v 12. měsíci
621 - počet dní v aktuální 3 dekádě
631 - počet dní v 3 dekádě v 1 měsíci
632 - počet dní v 3 dekádě v 2 měsíci
633 - počet dní v 3 dekádě v 3 měsíci
634 - počet dní v 3 dekádě v 4 měsíci
635 - počet dní v 3 dekádě v 5 měsíci
636 - počet dní v 3 dekádě v 6 měsíci
637 - počet dní v 3 dekádě v 7 měsíci
638 - počet dní v 3 dekádě v 8 měsíci
639 - počet dní v 3 dekádě v 9 měsíci
640 - počet dní v 3 dekádě v 10 měsíci
641 - počet dní v 3 dekádě v 11 měsíci
642 - počet dní v 3 dekádě v 12 měsíci
651 - počet týdnů
652 - počet dní v 1. týdnu
653 - počet dní v posledním týdnu
661 - pořadové číslo dne v roce
662 - do konce roku zbývá dní
@
... v SQL1 dotazu znamená místo pro vložení jména konkrétní tabulky definované v Q1 / QA / QI
`AA
... bude nahrazeno agendou - např. XX
`AM
... bude nahrazeno agendou + aktuálním rokem + aktuálním měsícem
např. XX21 - pro agendu XX, rok 2002, měsíc leden
`AR
... bude nahrazeno agendou + aktuálním rokem
např. XX2 - pro agendu XX, rok 2002
`AS
... bude nahrazeno agendou skladu - např. XX
`D0
... datum zpracování ve tvaru RRRRMMDD
`D1
... datum zpracování ve tvaru RRMMDD
`D2
... datum zpracování ve tvaru RRRR
`D3
... datum zpracování ve tvaru RR
`D4
... datum zpracování ve tvaru MM
`D5
... datum zpracování ve tvaru DD
`D6
... datum zpracování ve tvaru RRRR-MM-DD
`DM
... datum zpracování ve tvaru rm - kód roku + měsíce
`DR
... datum zpracování ve tvaru r - kód roku
`SM
... bude nahrazeno agendou skladu + aktuálním rokem + aktuálním měsícem
např. XX21 - pro agendu skladu XX, rok 2002, měsíc leden
`SR
... bude nahrazeno agendou skladu + aktuálním rokem
např. XX2 - pro agendu skladu XX, rok 2002
FF2 - popis SQL
{select stmt} = SELECT [ALL | DISTINCT] {selection list}
FROM {table ref list}
[WHERE {cond expr}]
[GROUP BY {column list}]
[HAVING {cond expr}]
[ORDER BY {order list}]
{selection list} = {selection} [, {selection} …]
{selection} = * | {simple expr} [{column alias}]
{column list} = {column} [, {column} …]
{order list} = {order item} [, {order item} …]
{order item} = { {column} | {integer literal} } [ASC | DESC]
{insert stmt} = INSERT INTO {table name}
{ DEFAULT VALUES
| ( {insert column list} ) {table expr}
| {table expr}
}
{insert column list} = {column} [, {column} ...]
{update stmt} = UPDATE {simple table ref} SET {update list}
[ WHERE {cond expr} ]
{update list} = {update item} [, {update item} ...]
{update item} = {column name} = { DEFAULT | NULL | {simple expr} }
{delete stmt} = DELETE FROM {simple table ref} [ WHERE {cond expr} ]
{aggregate} = { COUNT( { * | [ALL | DISTINCT] {simple expr} } )
| { MIN | MAX | SUM | AVG }
( [ALL | DISTINCT] {simple expr} )
}
{allOrAny} = { ALL | ANY | SOME } ( {select stmt} )
{between} = BETWEEN {simple expr} AND {simple expr}
{boolean literal} = { TRUE | FALSE }
{case expr} = {when list} [ELSE { NULL | {simple expr} }] END
{coalesce expr} = ( {simple expr} [, {simple expr} …] )
{column} = {ident}
{column alias} = [AS] {column}
{cond expr} = {cond term} [OR {cond term}]
{cond factor} = [NOT] {cond primary}
{cond primary} = { {exists} | {unique}
| {simple expr}
[ { = | {= | { | } | }= | {} }
{ {allOrAny} | {simple expr} }
| {between} | {like} | {in}
| {match}
| NOT {{between} | {like} | {in} }
| {isTest}
]
}
{cond term} = {cond factor} [AND {cond factor}]
{database name} = {ident}
{date literal} = DATE {string literal}
{exists} = EXISTS ( {select stmt} )
{factor} = [-] { ( { {cond expr} | {select stmt} } )
| {field ref}
| {literal}
| {param}
| {aggregate}
| {scalar func}}
{field ref} = { {ident}
| " { {ident} | {integer literal} }
[{ {ident} | {integer literal} } …] " }
[. { {ident}
| " { {ident} | {integer literal} }
[{ {ident} | {integer literal} } …] "
| * }
]
{float literal} = {digit} [{digit} …] . {digit} [{digit} …]
{ident} = {letter} [{ {letter} | {digit} } …]
{in} = IN ( { {select} | {simple expr list} } )
{integer literal} = {digit} [{digit} …]
{interval literal} = INTERVAL {string literal}
{ YEAR | MONTH | DAY |
HOUR | MINUTE | SECOND }
[TO { YEAR | MONTH | DAY |
HOUR | MINUTE | SECOND }]
{isTest} = IS [NOT] { NULL | TRUE | FALSE | UNKNOWN }
{join table expr} = { CROSS JOIN {table ref}
| [ NATURAL ]
[ INNER
| LEFT [OUTER]
| RIGHT [OUTER]
| FULL [OUTER]
| UNION ]
JOIN
{simple table expr}
[ ON {cond expr}
| USING ( {using list} ) ]
}
{like} = LIKE {simple expr}
{literal} = { {float literal} | {integer literal}
| {string literal} | {date literal}
| {time literal} | {timestamp literal}
| {interval literal} | {boolean literal} }
{match} = MATCH [UNIQUE] [{ PARTIAL | FULL }] ( {select stmt} )
{non-join table expr} = { ( {non-join table expr} )
| {select statement}
| TABLE {table ref}
| {table constructor}
}
{noQuote} = {any character other than single quote and end of line}
{param} = : {ident}
{scalar func} = { CASE {case expr}
| { CHARACTER_LENGTH | CHAR_LENGTH}
( {simple expr} )
| COALESCE {coalesce expr}
| CURRENT_DATE
| CURRENT_TIME
| CURRENT_TIMESTAMP
| LOWER ( {simple expr} )
| UPPER ( {simple expr} )
| POSITION ( {simple expr} , {simple expr} )
| SUBSTRING ( {simple expr} FROM
{simple expr}
[FOR {simple expr}] )
| TRIM ( [LEADING | TRAILING | BOTH]
{simple expr}
[FROM {simple expr}] )
| EXTRACT ( { YEAR | MONTH | DAY |
HOUR | MINUTE | SECOND }
FROM {simple expr} )
| NULLIF ( {simple expr} , {simple expr} )
}
{simple alias} = [ AS ] {alias}
{simple expr} = {term} [{+ | - | "||" } {term} …]
{simple expr list} = {simple expr} [, {simple expr} …]
{simple table expr} = { {simple table ref}
| ( {table expr} ) [ {simple alias} ]
}
{simple table ref} = [ {database name} . ] {table name} [ {simple alias} ]
{string literal} = ' [{ {noQuote} | '' } …] '
{table constructor} = VALUES ( {value list} )
{table expr} = { {simple table expr} {join table expr}
[{join table expr} ...]
| {non-join table expr}
| ( {table expr} ) }
{table ref} = { {table expr} [ {simple alias} ] [ ( {insert column list} )]
| [ {database name} . ] {table name} [ {simple alias} ]
}
{table ref list} = {table ref} [, {table ref} …]
{term} = {factor} [{ * | / } {factor} …]
{time literal} = TIME {string literal}
{timestamp literal} = TIMESTAMP {string literal}
{unique} = UNIQUE ( {select stmt} )
{using list} = {column name} [, {column name} ...]
{value item} = { DEFAULT
| {simple expr}
}
{value list} = {value item} [, {value item} ...]
{when} = WHEN {cond expr} THEN { NULL | {simple expr} }
{when list} = {when} [{when} …]
Poznámky:
{} - element
[] - může být
... - může se opakovat
| - výběr 1 možnosti
{} - jedna z možností musí být použita
xSQL - Úvod do SQL
Příkaz SELECT - vyhledávání dat podle různých kritérií.
SELECT seznam_vystupnich_sloupcu
FROM seznam_tabulek
WHERE podminka_radku
GROUP BY seznam_vyrazu_seskupeni
HAVING podminka_skupiny
ORDER BY seznam_kriterii_trideni
- pouze části SELECT a FROM jsou povinné
- nezáleží na velikosti písmen
SELECT
- definice sloupců ve výsledku - jejich obsahu i textu v záhlaví
FROM
- seznam tabulek, ze kterých jsou získávány požadované informace
- tabulky jsou dostupné pomocí aliasu (Z200 - číselník zboží, ...), viz. Seznam tabulek v manas, a to
vždy aktuálně otevřené tabulky (podle datumu zpracování)
WHERE
- omezení zpracovávaných řádků pomocí podmínky
GROUP BY
- definice výrazů, podle kterých jsou řádky seskupeny
- skupina řádku se stejnými hodnotami ve všech uvedených výrazech je nahrazena jedním souhrnným řádkem
HAVING
- omezení souhrnných řádků definovaných pomocí GROUP BY ve výsledku
ORDER BY
- setřídění řádku ve výsledku postupně podle zadaných kritérií
Příklady
Výpis vybraných sloupců tabulky
SELECT Cislo,Nazev FROM O200
- vypíše seznam obalů
- seznam sloupců je oddělen čárkami
Modifikovaný text v záhlaví
SELECT Cislo AS [Cislo obalu], Nazev AS Nazev_obalu FROM O200
- lze použít diakritiku
- pomocí AS je možné modifikovat text v záhlaví
- pokud má text obsahovat mezery nebo jiné znaky než 'A'..'Z','a'..'z' a '_', musí být uveden v []
Výpis všech sloupců v tabulce
SELECT * FROM O200
Výpis modifikovaných údajů
SELECT "Obal:",Cislo,Nazev,ZasobaKc/1000 AS [Zasoba v tisicich] FROM O200
- lze uvést 'Obal:' nebo "Obal:"
- doplněná zásoba v tisících Kč
Modifikátor DISTINCT
SELECT DISTINCT DPH FROM O200
- ve výsledku nebudou uvedeny duplicitní řádky
- za duplicitní se považují řádky, které mají stejné hodnoty ve VŠECH vypisovaných sloupcích
- použití DISTINCT může výrazně způsobit provádění dotazu - každý nalezený řádek se musí porovnávat se všemi již nalezenými, aby se vyloučily duplicity
FROM - seznam vstupních tabulek
SELECT Z.cislo,Z.nazev,Z.obal,O.nazev FROM Z200 Z,O200 O WHERE Z.obal=O.cislo
- vypíše seznam zboží z tabulky Z200, pro každé zboží je z tabulky O200 vypsán název obalu
- použito spojení 2 tabulek
- ve FROM použít alias Z pro tabulku Z200 a alias O pro tabulku O200, aliasy slouží k odlišení sloupců
WHERE - omezení řádků
SELECT cislo,nazev FROM Z200 WHERE (Cislo>=10000) AND (Cislo<=19999)
nebo
SELECT cislo,nazev FROM Z200 WHERE Cislo BETWEEN 10000 AND 19999
- z číselníku zboží se vypíše pouze zboží s číslem 1xxxx
GROUP BY - seskupení řádků
SELECT dph,SUM(zasobakc) FROM Z200 GROUP BY dph
- vypíše celkovou zásobu v Kč zboží podle typu DPH
- použitá funkce SUM pro součet
- pole použitá v GROUP BY musí být použita i v SELECT
Seskupení podle více sloupců
SELECT skupina,dph,SUM(zasobakc) FROM Z200 GROUP BY skupina,dph
- vypíše celkovou zásobu v Kč zboží podle skupiny zboží a typu DPH
HAVING - omezení souhrnných řádků
SELECT skupina,dph,SUM(zasobakc) FROM Z200 GROUP BY skupina,dph HAVING SUM(zasobakc)>100000
- viz předchozí, vypíše pouze skupiny zboží a typy DPH, pro které je celková zásoba v Kč zboží větší než 100.000 Kč
ORDER BY - setřídění řádků na výstupu
SELECT cislo,nazev,MISASCII(nazev) AS [Nazev pro trideni] FROM O200 ORDER BY [Nazev pro trideni]
- seznam obalů se setřídí podle názvu (správně podle diakritiky)
- použitá funkce manas MISASCII, která převede řetězec s diakritikou na tvar vhodný pro třídění
Sestupné třídění řádků na výstupu
SELECT cislo,nazev,zmenadatum FROM O200 ORDER BY zmenadatum DESC
- seznam obalů sestupně podle datumu změny v číselníku obalů
Příklad složitého složeného SQL dotazu:
SELECT skupina AS [Skupina zbozi],FORMAT('%16.2m',suma) AS [Zasoba v Kc] FROM
(
SELECT * FROM
(
SELECT skupina,SUM(zasobakc) AS suma
FROM Z200
GROUP BY skupina
HAVING SUM(zasobakc)>100000
)
ORDER BY suma DESC
)
- vypíše se seznam skupin zboží, sestupně podle celkové zásoby v Kč, pouze skupiny se zásobou > 100.000 Kč
- zásoba je formátovaná s oddělovači tisíců včetně Kč
Spojení tabulek pomocí JOIN
SELECT Z.cislo,Z.nazev,Z.obal,O.nazev
FROM Z200 Z
JOIN O200 O
ON Z.obal=O.cislo
- do výsledku jsou zahrnuty pouze ty řádky z obou tabulek, pro které byla nalezena odpovídající hodnota v druhé tabulce
SELECT Z.cislo,Z.nazev,Z.obal,O.nazev
FROM Z200 Z
LEFT JOIN O200 O
ON Z.obal=O.cislo
- do výsledku jsou zahrnuty i řádky, pro které nebyly nalezeny odpovídající hodnoty v druhé tabulce
- spojování tabulek je časově velmi náročná činnost
- RIGHT [OUTER] JOIN a FULL [OUTER] JOIN nejsou podporovány
syntaxe:
- table1 [INNER] JOIN table2 ON (table1.common_field=table2.common_field)
[ [INNER] JOIN table3 ON (table2.common_field=table3.common_field) ] ...
- table1 LEFT [OUTER] JOIN table2 ON (table1.common_field=table2.common_field)
[ LEFT [OUTER] JOIN table3 ON (table2.common_field=table3.common_field) ] ...
Vnořený dotaz
SELECT cislo,nazev,zasobakc
FROM O200
WHERE zasobakc>(SELECT AVG(zasobakc) FROM O200)
- z číselníku obalů vybere obaly, jejichž zásoba v Kč je větší než průměrná zásoba obalů v Kč
Poznámka
/* poznamka */
Operátory ve výrazech
+, -, *, /, ^
(((1+(5)-(2))/2)*5)^2 ... 100, 2. a další sčítance a menšitele chce v závorkách
DIV
101 div 10 ... 10
MOD
101 mod 10 ... 1
SHL
1 shl 2 ... 4
SHR
4 shr 2 ... 1
Funkce v SQL dotazech
Matematické funkce
function Abs ( X : Float ): Float
- absolutní hodnota čísla
Abs(-10) ... 10, absolutní hodnota
function ArcTan ( X : Float ): Float
- arcus tangens
- vysledkem je velikost uhlu v radianech v intervalu (-Pi/2,Pi/2)
- prevod radianu na uhlove stupne se provede vynasobenim 180/Pi
- prevod uhlovych stupnu na radiany se provede vynasobenim Pi/180
- vypocet dalsich trigonometrickych funkci (mimo sin a cos):
Tan(x) = Sin(x) / Cos(x)
ArcSin(x) = ArcTan (x/sqrt (1-sqr (x)))
ArcCos(x) = ArcTan (sqrt (1-sqr (x)) /x)
ArcTan(1) ... 0.785
function Cos ( X : Float) : Float
- cosinus zadaného úhlu v radiánech
Cos(1) ... 0.540
function Exp( X : Float) : Float
- e^x
Exp(1) ... 2.718
function Frac ( X : Float) : Float
- vrátí desetinnou část z reálného čísla
- Frac(X) = X - Int(X)
Frac(1.23) ... 0.23
function Int ( X: Float ) : Float
- vrátí celou část z reálného čísla
Int(1.23) ... 1
function Ln ( X : Float ) : Float
- přirozený logaritmus
- hodnota parametru X musí být větší než 0
Ln(10) ... 2.302
function MAXOF ( arg1, arg2, ..., argn )
- největší z výčtu hodnot
- minimálně 2 argumenty
MAXOF(1,9) ... 9
function MINOF ( arg1, arg2, ... argn )
- nejmenší z výčtu hodnot
- minimálně 2 argumenty
MINOF(1,9) ... 1
function Pi(0) : Float
- Ludolfovo číslo
Pi(0) ... 3.14159265358979
function Power ( Zaklad, Exponent : Float ) : Float
- x^y
- x>0
Power(2,3) ... 8
function Round ( X : Extended ) : Integer
- převod reálného čísla na celé číslo zaokrouhlením
Round(10/1.8) ... 6, zaokrouhlí na celé číslo (5.555555)
function RoundDec ( Realne_cislo : Extended, Desetinnych_mist : Integer ) : Float
- zaokrouhlí reálné číslo na zadaný počet desetinných míst
RoundDec(1/1.9,2) ... 0.53, zaokrouhlí na 2 desetinná místa (0.5263157)
function Sin ( X : Float) : Float
- sinus zadaného úhlu v radiánech
Sin(1) ... 0.841
function Sqr ( X : Float ) : Float
- druhá mocnina, X*X
Sqr(2) ... 4
function Sqrt ( X : Float ) : Float
- druhá odmocnina
Sqr(4) ... 2
function Trunc ( X : Extended ) : Integer
- převod reálného čísla na celé číslo odseknutím desetinných míst
Trunc(10/1.8) ... 5, převede na celé číslo, odsekne desetinná místa (5.555555)
function TruncDec ( Realne_cislo : Extended, Desetinnych_mist : Integer) : Float
- z reálného čísla odřízne nadbytečná desetinná místa
TruncDec(1/1.9,2) ... 0.52, osekne na 2 desetinná místa (0.526315)
Funkce pro práci s datumem a časem
function EXTRACT ( extract_field FROM column_reference ) : integer
- získání roku, měsíce, dne, hodiny, minuty a sekundy z datumových polí
EXTRACT(YEAR FROM now) ... 2001
EXTRACT(month FROM now) ... 10
EXTRACT(Day FROM now) ... 27
EXTRACT(Hour FROM now) ... 18
EXTRACT(Minute FROM now) ... 21
EXTRACT(Second FROM now) ... 28
function Now
- aktuální datum a čas ve tvaru pro FormatDateTime()
Now ... 37191.5927230903
Řetězcové funkce
function Copy ( S : string; Pocatek, Delka: Integer ) : string
- část řetězce S od Pocatek v délce Delka
Copy('ABC',2,2) ... 'BC'
function Length ( S : string ) : Integer
- délka (počet znaků) řetězce S
Length('ABC') ... 3
function Lower ( S : string ) : string
- převod řetězce na malé znaky
- včetně diakritiky
Lower('ÁČĎĚÉÍĽŇÓŘŠŤÚŮÝŽ') ... 'áčďěéíľĺňóřšťúůýž'
function Pos ( Hledany_retezec : string; S : string ): Integer
- pozice Hledany_retezec v řetězci S
- 0 pokud neexistuje
Pos('ojk','Bojkovice') ... 2
function SUBSTRING ( column_reference FROM start_index [ FOR length ] ) : string
- podřetězec od pozice FROM v délce FOR znaku
SUBSTRING("ABCDE" FROM 2 FOR 3) ... 'BCD'
SUBSTRING("ABCDE" FROM 2) ... 'BCDE'
function TRIM ( LEADING | TRAILING | BOTH trimmed_char FROM column_reference ) : string
- zrušení úvodních (LEADING), koncových (TRAILING) nebo obojích (BOTH) znaků trimmed_char
TRIM(LEADING ' ' FROM ' ABC ') ... 'ABC '
TRIM(TRAILING ' ' FROM ' ABC ') ... ' ABC'
TRIM(BOTH ' ' FROM ' ABC ') ... 'ABC'
TRIM(BOTH 'X' FROM 'XABCX') ... 'ABC'
TRIM(BOTH 'X' FROM Upper('XABCx')) ... 'ABC'
function Upper ( S : string ) : string
- převod řetězce na velké znaky
- včetně diakritiky
Upper('abc') ... 'ABC'
Upper('áčďěéíľĺňóřšťúůýž') ... 'ÁČĎĚÉÍĽĹŇÓŘŠŤÚŮÝŽ'
Podmínka
function IF ( Condition: Boolean, TrueResult, FalseResult ): ResultType
- funkce vrací TrueResult, je-li splněna podmínka Condition, v opačném případě FalseResult
select cislo,nazev,zasobaKc,zasobaMJ,if(zasobaMJ<>0,zasobaKc/zasobaMJ,0)
from o200
where if(zasobaMJ<>0,zasobaKc/zasobaMJ,0)>100
Formátovací funkce
function Format ( Format : string; Arg1, Arg2, Arg3, ... ) : string;
- formátuje sérii argumentů do výsledného řetězce podle Format
Format('%8d',123) ... ' 123', celé číslo
Format('%8.2f',123.456) ... ' 123.46', reálné číslo
Format('%12.2e',123.456) ... ' 1.2E+002', vědecká notace
Format('%12e',123.456) ... '1.23456000000000E+002'
Format('%.e',123.456) ... '1.2E+002'
Format('%.g',100000000000.) ... '1E11', nejkratší zobrazení, musí být reálné číslo (stačí desetinná tečka
Format('%20.g',100000000000.) ... ' 1E11'
Format('%20g',100000000000.) ... ' 100000000000'
Format('%20n',100000000000.) ... ' 100,000,000,000.00', oddělené tisíce, 2 desetinná místa, musí být reálné číslo
Format('%.n',100000000000.) ... '100,000,000,000'
Format('%20.4n',100000000000.) ... '100,000,000,000.0000'
Format('%m',1000000.) ... '1,000,000.00 Kc', peněžní hodnota
Format('%.m',1000000.) ... '1,000,000 Kc'
Format('%20.4m',1000000.) ... ' 1,000,000.0000 Kc'
Format('%10s','ABC') ... ' ABC', retezec
Format('%x',127) ... '7F', hexadecimal, musí být celé číslo
Format('%d text %x',127,127) ... '127 text 7F'
function FormatDateTime ( Format : String; DateTime : float ) : String
- formátuje systémově zadaný datum a čas do výsledného řetězce podle Format
FormatDateTime('dd.mm.yyyy',Now) ... '27.10.2001', datum
FormatDateTime('c',Now) ... '27.10. 2001 16:16:00', datum a čas
FormatDateTime('d',Now) ... '5', den bez úvodní nuly
FormatDateTime('dd',Now) ... '05', den s úvodní nulou
FormatDateTime('ddd',Now) ... 'so', zkratka dne v týdnu
FormatDateTime('dddd',Now) ... 'sobota',
FormatDateTime('ddddd',Now) ... '27.10. 2001'
FormatDateTime('dddddd',Now) ... '27. říjen 2001'
FormatDateTime('m',Now) ... '5', měsíc bez úvodní nuly
FormatDateTime('mm',Now) ... '05', měsíc s úvodní nulou
FormatDateTime('mmmm',Now) ... 'říjen'
FormatDateTime('yy',Now) ... '01', rok RR
FormatDateTime('yyyy',Now) ... '2001', rok RRRR
FormatDateTime('h',Now) ... '5', hodina bez úvodní nuly
FormatDateTime('hh',Now) ... '05', hodina s úvodní nulou
FormatDateTime('n',Now) ... '5', minuta bez úvodní nuly
FormatDateTime('nn',Now) ... '05', minuta s úvodní nulou
FormatDateTime('s',Now) ... '5', sekund bez úvodní nuly
FormatDateTime('ss',Now) ... '05', sekund s úvodní nulou
FormatDateTime('z',Now) ... '5', milisekund bez úvodní nuly, 0-999
FormatDateTime('zzz',Now) ... '005', milisekund s úvodní nulou, 000-999
FormatDateTime('t',Now) ... '16:24'
FormatDateTime('tt',Now) ... '16:25:18'
FormatDateTime('dd.mm.yyyy "text"',Now) ... '27.10.2001 text'
function FormatFloat ( Format : String; Value : Float ) : String
- formátuje reálné číslo do výsledného řetězce podle Format
Znaky používané ve Format:
0 - číslice
# - číslice, pro '0' prázdný řetězec
. - desetinná tečka
, - výstup bude obsahovat oddělovače tisíců, čárka kdekoliv
E+,E-,e+,e- - vědecká notace
"text" - text
; - oddělení formátování pro kladné a záporné číslo a nulu
FormatFloat('000',0) ... '000'
FormatFloat('###',0) ... ''
FormatFloat('##0.00',0) ... '0.00'
FormatFloat('0.000E+00',-1234) ... '-1.234E+03'
FormatFloat('0.000e+00',-1234) ... '-1.234e+03'
FormatFloat('0.000E-00',-1234) ... '-1.234E03'
FormatFloat('0.000e-00',-1234) ... '-1.234e03'
FormatFloat('#,##0.00;;Zero',0) ... 'Zero'
Agregační funkce
- agregační (souhrnné) funkce pracují najednou s celou množinou hodnot
- parametr agregační funkce musí obsahovat název sloupce, nad kterým se má pracovat
- v parametru agregační funkce nesmí být použita další agregační funkce
- lze použít modifikátor DISTINCT - vyloučení duplicit
AVG()
- prostý aritmetický průměr ze všech hodnot v množině
select avg(zasobamj) from o200 ... 721.9
COUNT(*)
- počet hodnot ve sloupci
select count(*) from o200 ... 99
select count(DISTINCT DPH) from o200 ... 2, počet různých DPH
MAX()
- maximální hodnota z množiny
- DISTINCT nemá význam
select max(zasobamj) from o200 ... 28434
MIN()
- minimální hodnota z množiny
- DISTINCT nemá význam
select min(zasobamj) from o200 ... -12508
STDEV()
- velikost směrodatné odchylky (standard deviation)
select stdev(zasobamj) from o200 ... 4368.9
SUM()
- součet hodnot v množině
select sum(zasobamj) from o200 ... 71470
Funkce MIS dostupné v xSQL dotazech
Pro komplexní zadávání SQL dotazů bez nutnosti spojovat tabulky kvůli např. doplnění jména osoby (podstatné zpomalení).
MISASCII ( Retezec_1250 : string ) : string
- funkce převede řetězec v kódu 1250 na ASCII, velká písmena
- určeno pro třídění bez ohledu na diakritiku a velikost písmen
MISCARKOVYKODZ200 (Cislo_zbozi : integer ) : string
- funkce pro zadané číslo zboží vrátí čárkový kód z číselníku zboží nebo ? pokud zboží neexistuje
MISCELNISAZEBNIKZ200 (Cislo_zbozi : integer ) : string
- funkce pro zadané číslo zboží vrátí číslo celního sazebníku z číselníku zboží nebo prázdný řetězec pokud zboží neexistuje
MISCENA00Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #00 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA01Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #01 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA02Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #02 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA03Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #03 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA04Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #04 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA05Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #05 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA06Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #06 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA07Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #07 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA08Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #08 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENA09Z200 (Cislo_zbozi : integer ) : float
- funkce pro zadané číslo zboží vrátí cenu #09 z číselníku zboží nebo 0 pokud zboží neexistuje
MISCENAPODLEPARTNERA (Cislo_zbozi : integer; Cislo_partnera : integer ) : float
- funkce z číselníku partnerů pro zadané číslo partnera přečte parametr TypCeny (pro Drogerii D_TypCeny)
- je-li typ ceny záporný nebo partner neexistuje, bere se typ ceny nulový
- je-li typ ceny větší nez 32, bere se 29
- funkce vrátí pro zadané číslo zboží z číselníku zboží cenu podle typu ceny:
0..29 - cena #00 - #29
30 - pole ZdrojovaCena
31 - pole Currency_01 - poslední nákupní cena
32 - pole Currency_09 - poslední prodejní cena
- pokud zboží neexistuje, vrátí se 0.0
MISCENAPODLETYPU (Cislo_zbozi : integer; Typ_ceny : integer ) : float
- funkce vrátí pro zadané číslo zboží z číselníku zboží cenu podle typu ceny:
0..29 - cena #00 - #29
30 - pole ZdrojovaCena
31 - pole Currency_01 - poslední nákupní cena
32 - pole Currency_09 - poslední prodejní cena
- je-li typ ceny záporný, bere se nulový
- je-li typ ceny větší než 32, bere se 29
- pokud zboží neexistuje, vrátí se 0.0
MISCENASDPH ( Typ_DPH : integer; Cena_bez_DPH ) : float
- funkce vrátí podle typu DPH (hodnoty nastavené v konfiguraci:
0 = 0 % nulová sazba / 1 = 5% snížená sazba / 2 = 22% základní sazba)
k zadané ceně bez DPH cenu včetně DPH zaokrouhlenou na 0,10 Kc
- jiný typ DPH nez 0/1/2 se bere jako 0
MISCISLOPOSLEDNIHODOKLADU : integer
- funkce vrátí číslo posledního dokladu pořízeného na PC
MISCISLOZBOZICK00 ( CK : string ) : integer
- funkce pro zadaný čárkový kód vrátí číslo zboží z číselníku čárkového kódu
- pokud čárkový kód neexistuje, vrátí 0
MISDATUMDD ( Datum : float ) : integer
- funkce vrátí den DD zadaného datumu
MISDATUMINTDD ( DatumRRMMDD : integer ) : integer
- funkce vrátí den DD z datumu zadaného jako RRMMDD
MISDATUMINTMM ( DatumRRMMDD : integer ) : integer
- funkce vrátí měsíc MM z datumu zadaného jako RRMMDD
MISDATUMINTMMDD ( DatumRRMMDD : integer ) : integer
- funkce vrátí měsíc a den MMDD z datumu zadaného jako RRMMDD
MISDATUMINTRR ( DatumRRMMDD : integer ) : integer
- funkce vrátí rok RR z datumu zadaného jako RRMMDD
MISDATUMINTRRMMDD ( DatumRRMMDD : integer ) : integer
- funkce vrátí rok, měsíc a den RRMMDD z datumu zadaného jako RRMMDD nebo RRRRMMDD
MISDATUMINTRRRR ( DatumRRMMDD : integer ) : integer
- funkce vrátí rok RR z datumu zadaného jako RRMMDD nebo rok RRRR z datumu zadaného jako RRRRMMDD
MISDATUMINTRRRRMMDD ( DatumRRRRMMDD : integer ) : integer
- funkce vrátí zadaný datum RRRRMMDD
MISDATUMMM ( Datum : float ) : integer
- funkce vrátí měsíc MM zadaného datumu
MISDATUMMMDD ( Datum : float ) : integer
- funkce vrátí měsíc a den MMDD zadaného datumu
MISDATUMRR ( Datum : float ) : integer
- funkce vrátí rok RR zadaného datumu
MISDATUMRRMMDD ( Datum : float ) : integer
- funkce vrátí datum RRMMDD zadaného datumu
MISDATUMRRRR ( Datum : float ) : integer
- funkce vrátí rok RRRR zadaného datumu
MISDATUMRRRRMMDD ( Datum : float ) : integer
- funkce vrátí datum RRRRMMDD zadaného datumu
MISDODAVATELZ200 (Cislo_zbozi : integer ) : integer
- funkce pro zadané číslo zboží vrátí číslo dodavatele z číselníku zboží nebo 0 pokud zboží neexistuje
MISDPCCENABEZDPH ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer; Mnozstvi_MJ : float ) : float
- funkce vrátí doporučenou prodejní cenu DPC bez DPH z ceny bez DPH
- pro zadaného partnera, zboží, typ DPH a množství zboží
- je-li cena #09 nenulová, vrátí se pro TypCeny=6 cena #09 - akční cena (bez DPH bez zaokrouhlení)
- připočte se marže doporučené prodejní ceny (viz funkce MISDPCMARZE)
MISDPCCENASDPH ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer; Mnozstvi_MJ : float ) : float
- funkce vrátí doporučenou prodejní cenu DPC s DPH z ceny bez DPH
- pro zadaného partnera, zboží, typ DPH a množství zboží
- je-li cena #09 nenulová, vrátí se pro TypCeny=6 cena #09 - akční cena
- výsledek je zaokrouhlen na desetník nebo na desetník nahoru podle parametru ZaokrouhlovatDesetnikNahoruOK z konfigurace
- připočte se marže doporučené prodejní ceny (viz funkce MISDPCMARZE)
MISDPCMARZE ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer ) : float
- funkce vrátí marži doporučené prodejní ceny DPC v %
- pro zadaného partnera, zboží, ceny bez DPH a typu DPH
- je-li marže nulová nebo záporná, provede se zápis do logového souboru #DPCMarze P/Z/Cena/DPH
- v adresáři \TISK hleda soubor XXXXXXXX.SKU, kde XXXXXXXX je 8-mi místné číslo partnera včetně levostranných nul
- údaje pro soubor *.SKU jsou pro partnera uloženy v číselníku partnerů v poli BlobMemo
- je-li nastaven parametr DebugDPCOK v konfiguraci, provede se zápis do logového souboru #3 - DPC/New/MarzeDPC/P/Z/DPH/CenaMJ
- příklad obsahu souboru 00111111.SKU:
;Skupiny pro partnera: Naše prodejny
;
15.00 16 - Nealko sirupy a nápoje
12.75 266 - Ostatní nápoje
25.00 -11113 - Jablka
- úvodní středník znamená poznámku
- důležité jsou 2 číselné údaje zleva, další údaje monou být poznámky
- mezi oběma číselnými údaji může být 1 nebo větší počet mezer
- 1. reálné číslo udává marži v % pro doporučenou prodejní cenu zboží ve skupině zadané jako 2. celé číslo
- skupina zboží (2. číslo) může být i záporná, v tomto případě se bere jako konkrétní číslo zboží
- ze zadaného zboží z číselníku zboží se zjistí skupina zboží a ze zadaného DPH (nebere se z číselníku zboží) se připraví z ceny #09 akční cena bez DPH, která je v poli cena #09 uvedená včetně DPH
- ze zadaného partnera z číselníku partnerů se zjistí TypCeny
- pokud je nenulová cena #09 a současně TypCeny=6, použije se akční cena (cena #09) bez ohledu na doporučenou prodejní cenu
MISDPH ( Typ_DPH : integer ) : float
- funkce vrátí podle typu DPH (hodnoty nastavené v konfiguraci:
0 = 0 % nulová sazba / 1 = 5% snížená sazba / 2 = 22% základní sazba)
odpovídající sazbu DPH 0% / 5% / 22%
- jiný typ DPH než 0/1/2 se bere jako 0
MISDPHO200 ( Cislo_obalu : integer ) : integer
- funkce vrátí typ DPH 0/1/2 z číselníku obalů pro zadané číslo obalu
MISDPHZ200 ( Cislo_zbozi : integer ) : integer
- funkce vrátí typ DPH 0/1/2 z číselníku zboží pro zadané číslo zboží
MISEAN28Z200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané číslo zboží z číselníku zboží, pokud existuje, první čárkový kód z číselníku čárkového kódu nebo ? pokud neexistuje
MISEGALIZACE2CK00 ( Carkovy_kod : string ) : float
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Egalizace2
MISEGALIZACE2Z200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Egalizace2
MISEGALIZACECK00 ( Carkovy_kod : string ) : float
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Egalizace
MISEGALIZACEZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Egalizace
MISFORMATCISLO ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string
- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných
- funkce je kopií funkce MISFORMATCISLO2 pro současné použití v SQL dotazu
MISFORMATCISLO2 ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string
- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných
- funkce je kopií funkce MISFORMATCISLO pro současné použití v SQL dotazu
MISHMOTNOSTMJGZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole HmotnostMJg
MISICOP200 ( Cislo_partnera : integer ) : integer
- funkce vrátí pro zadané číslo partnera z číselníku partnerů pole IČO
MISJKPOVZ200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole JKPOV
MISMJZ200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole MJ
MISMOPKC ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MO příjem Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMOPMJ ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MO příjem MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMOVKC ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MO výdej Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMOVMJ ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MO výdej MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMZPKC ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MZ příjem Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMZPMJ ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MZ příjem MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMZVKC ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MZ výdej Kc pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISMZVMJ ( Index : integer; Mesic : integer ) : float
- funkce vrátí z databáze měsíčních obratů MZ výdej MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)
MISNAZEVDO00 ( Cislo_dodavatele : integer ) : string
- funkce vrátí pro zadané číslo dodavatele z číselníku dodavatelů název dodavatele
MISNAZEVDODAVATELEZ200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané číslo zboží z číselníku zboží název dodavatele
MISNAZEVO200 ( Cislo_obalu : integer ) : string
- funkce vrátí pro zadané číslo obalu z číselníku obalů název obalu
MISNAZEVP200 ( Cislo_partnera : integer ) : string
- funkce vrátí pro zadané číslo partnera z číselníku partnerů název partnera
MISNAZEVPC00 ( Cislo_PC : integer ) : string
- funkce vrátí pro zadané číslo PC z číselníku PC název PC
MISNAZEVRI00 ( Cislo_ridice : integer ) : string
- funkce vrátí pro zadané číslo řidiče z číselníku řidičů název řidiče
MISNAZEVWU00 ( Cislo_uzivatele : integer ) : string
- funkce vrátí pro zadané číslo uživatele z číselníku uživatelů název uživatele
MISNAZEVZ200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané číslo zboží z číselníku zboží název zboží
MISNAZEVZS00 ( Cislo_skupiny_zbozi : integer ) : string
- funkce vrátí pro zadané číslo skupiny zboží z číselníku skupin zboží název skupiny zboží
MISOBAL2CK00 ( Carkovy_kod : string ) : integer
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Obal2
MISOBAL2Z200 (Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Obal2
MISOBALCK00 ( Carkovy_kod : string ) : integer
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Obal
MISOBALZ200 (Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Obal
MISOBECCTVEREC10 ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec10
MISOBECCTVEREC100 ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec100
MISOBECCTVEREC25 ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec25
MISOBECCTVEREC50 ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec50
MISOBECDODAVACIPOSTA ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole DodavaciPosta
MISOBECNAZEV ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Nazev - název obce
MISOBECNAZEVASCII ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole NazevASCII - název obce pro třídění
MISOBECNCELEK ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole NCelek - číslo současného kraje
MISOBECNEU ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole NEU - číslo celku podle EU
MISOBECNKRAJ ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole NKraj - číslo dřívějšího kraje
MISOBECNOKRES ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole NOkres - číslo dřívějšího okresu
MISOBECOBYVATEL ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole Obyvatel - orientační počet obyvatel obce
MISOBECPODNIKATELU ( Cislo_obce : integer ) : integer
- funkce vrati pro zadane cislo obce z ciselniku obci pole Pondnikatelu - orientacni odhad poctu podnikatelu v obci
MISOBECPSC ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole PSC - poštovní směrovací číslo
MISOBECSBRNO ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole SBrno - silniční vzdálenost z Brna v km
MISOBECSOSTRAVA ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole SOstrava - silniční vzdálenost z Ostravy v km
MISOBECSUB ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole SUB - silniční vzdálenost z Uherského Brodu v km
MISOBECUTO ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole UTO - telefonní UTO
MISOBECVBRNO ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole VBrno - vzdušná vzdálenost z Brna v km
MISOBECVOSTRAVA ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole VOstrava - vzdušná vzdálenost z Ostravy v km
MISOBECVUB ( Cislo_obce : integer ) : integer
- funkce vrátí pro zadané číslo obce z číselníku obcí pole VUB - vzdušná vzdálenost z Uherského Brodu v km
MISOBECVZDALENOST ( Cislo_obce1 : integer; Cislo_obce2 : integer ) : integer
- funkce vrátí pro zadané číslo obce #1 a #2 z číselníku obcí jejich vzdušnou vzdálenost v km
MISOBECZCELEK ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZCelek - zkratka současného kraje
MISOBECZEU ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZEU - zkratka celku podle EU
MISOBECZKRAJ ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZKraj - zkratka dřívějšího kraje
MISOBECZOKRES ( Cislo_obce : integer ) : string
- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZOkres - zkratka dřívějšího okresu
MISOKRESNAZEV ( Cislo_okresu : integer ) : string
- funkce vrátí pro zadané číslo okresu z číselníku okresů jeho název
MISOKRESNAZEVASCII ( Cislo_okresu : integer ) : string
- funkce vrátí pro zadané číslo okresu z číselníku okresů jeho název ASCII pro třídění
MISPOCETOBALU2CK00 ( Carkovy_kod : string ) : float
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole PocetObalu2
MISPOCETOBALUCK00 ( Carkovy_kod : string ) : float
- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole PocetObalu
MISPOSLEDNIDODAVATELZ200 ( Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole PosledniDodavatel
MISPOSLEDNINCZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Currency_01 - poslední nákupní cena
MISRIDICAU00 ( Cislo_auta : integer ) : integer
- funkce vrátí pro zadané číslo auta z číselníku aut číslo řidiče
MISSKUPINAZ200 ( Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané číslo zboží z číselníku zboží číslo skupiny zboží
MISSLEVAOKZ200 ( Cislo_zbozi : integer ) : boolean
- funkce vrátí pro zadané číslo zboží z číselníku zboží pole SlevaOK
MISSPZAU00 ( Cislo_auta : integer ) : string
- funkce vrátí pro zadané číslo auta z číselníku aut SPZ auta
MISTRID1250 ( Retezec : string ) : string
- funkce vrátí pro zadaný řetězec v kódu 1250 upravený řetězec pro jeho třídění podle abecedy včetně diakritiky
MISTRIDCISLO ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string
- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných pro jeho třídění včetně záporných hodnot
- funkce je kopií funkce MISTRIDCISLO2 pro současné použití v SQL dotazu
MISTRIDCISLO2 ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string
- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných pro jeho třídění včetně záporných hodnot
- funkce je kopií funkce MISTRIDCISLO pro současné použití v SQL dotazu
MISTRIM ( Retezec : string ) : string
- funkce vrátí zadaný řetězec bez levých i pravých mezer
MISTRZBAPRODEJNY ( Cislo_partnera : integer ) : float
- funkce vrátí pro zadaného partnera z číselníku partnerů pole Currency_01 - tržba prodejny
MISTYPCENYP200 ( Cislo_partnera : integer ) : integer
- funkce vrátí pro zadaného partnera z číselníku partnerů pole TypCeny
MISTYPZBOZI ( Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané zboží z číselníku zboží jeho typ podle čísla zboží:
cislo_zbozi typ_zbozi
0..10000 0
10000..49999 1
50000..89999 2
90000.. 3
MISUMISTENI2Z200 ( Cislo_zbozi : integer ) : string
- funkce vrátí pro zadané zboží z číselníku zboží pole Umisteni2 (řetězec)
MISUMISTENIZ200 ( Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané zboží z číselníku zboží pole Umisteni (číslo)
MISZAOKROUHLENI ( Realne_cislo : float; Typ_zaokrouhleni : integer ) : float
- funkce vrátí zadané reálné číslo zaokrouhlené podle typu zaokrouhlení:
0 - 0.01
1 - 0.10
2 - 1.00 statisticky
3 - 0.10 nahoru
4 - 1.00 nahoru
5 - 0.10 nahoru - 2 des. místa - zjednodušený daňový doklad
6 - počet desítek
7 - počet stovek
8 - počet tisíců
9 - počet desetitisíců
10 - počet statisíců
11 - počet miliónů
MISZASOBAKCZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaKc
MISZASOBAMJZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaMJ
MISZASOBANAPOCETDNIZ200 ( Cislo_zbozi : integer ) : integer
- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaNaPocetDni
MISZDROJOVACENAZ200 ( Cislo_zbozi : integer ) : float
- funkce vrátí pro zadané zboží z číselníku zboží pole ZdrojovaCena
Poznámky:
- funkce lze použít tam, kde lze použít sloupec (SELECT,WHERE)
- funkce MISxxx nesmí být vnořené (pro vnoření je nutné použít
samostatně i vnořenou funkci)
- nelze použít funkci MISxxx při zařazení MISxxx do FROM
- v části ORDER BY mohou být uvedena pouze pole, která jsou uvedena
v části SELECT (v části WHERE libovolná)
---> pro správné formátované třídění čísel musí být v části SELECT uvedeno i MISTRIDCISLO(..)