Sbírky dotazů

Automaticky přeloženo z Deepl

Jednoduchost je nejvyšší stupeň sofistikovanosti a díky více než 40 metodám pro správu kolekcí ve verzi 4D v16 R6 je pro vás jako vývojáře vše mnohem snazší. Váš kód je nejen čistší a čitelnější, ale také napsaný v rekordním čase!

V tomto příspěvku se podíváme na to, jak tyto dvě nové metody fungují, query a . indices, vám umožní bleskově manipulovat s položkami kolekce a získávat je z ní!

Adresa query a indices stejně jako v tradičním dotazu 4D slouží k manipulaci s položkami v kolekci a k jejich načítání. Pracují úplně stejně, jediný rozdíl je ve vráceném výsledku: query vrátí kolekci obsahující všechny objekty, které odpovídají podmínce hledání definované argumentem dotazu, zatímco funkce indices vrací kolekci indexů.

Příklad databáze: dotazování na kolekce

Pro dotazování na kolekce můžete kombinovat dva typy operátorů. Následující ukázky kódu ukazují, co je možné a jak postupovat.

Jak napsat dotaz?

Startovací příklad

Existují dva možné způsoby zápisu dotazu:

  • dotaz jako řetězec:

$c:=Newcollection(New object("Id";128; "City"; "Paris"; "Weather";1))
$c.push(New object("Id";50; "City"; "New-York"; "Weather";-10))
$c.push(Nový objekt("Id";1792; "Město"; "Tokio"; "Počasí";-5))
$c.push(Nový objekt("Id";2973; "Město"; "Miami"; "Počasí";15))

$col:=$c.query("Weather#0")
$col2:=$c.indices("Weather#0")

  • nebo dotaz se zástupným znakem. Tímto způsobem můžete snadno vytvářet dynamické dotazy a 4D za vás převede proměnné:

$w:=$1
$col:=$c.query("Weather#:1";$w)
$col2:=$c.indices("Weather#:1";$w)

Pokročilý příklad

Předchozí příklady sloužily pouze k ukázce syntaxe, ale je zřejmé, že k nalezení něčeho v kolekci o čtyřech prvcích by stačil cyklus. Skutečná síla query metody je, když potřebujete něco najít v objektu nebo kolekci obsahující velké množství dat. Na adrese query je velmi efektivní způsob přístupu k datům.

Následující příklad ukazuje, jak snadno lze nyní zjistit počet operací, které dnes správce provedl:

// Save the current log file to JSON and put it in a collection
LOG FILE TO JSON("c:\\ExportLogs")
$txt :=Document to text("c:\\ExportLogs\\JournalExport.json")
$col :=JSON Parse($txt)

// Count how many operations have been done by "Administrator"
$count :=$col.query("extraData.user_name=:1"; "Administrator")
.length

Operátory porovnávání

Operátory porovnávání slouží k porovnání jednoho výrazu s jiným. Výsledkem porovnání může být TRUE nebo FALSE. Operátory porovnávání jsou následující:

  • =
  • #
  • <
  • >
  • <=
  • >=

$col:=$c.query("Weather>0")
//$col=[{Id:128,City:Paris,Weather:1},{Id:2973,City:Miami,Weather:15}]
$col2:=$c.indices("Weather>0")
//$col2=[0,3]

logické operátory

Logické operátory se používají k testování platnosti podmínky. Stejně jako porovnávací operátory vracejí hodnotu TRUE nebo FALSE. Logické operátory jsou:

  • AND
  • OR

$col:=$c.query("Id>50 AND (Weather>10 OR Weather<0)")
//$col=[{Id:1792,Město:Tokio,Počasí:-5},{Id:2973,Město:Miami,Počasí:15}]
$col2:=$c.indices("Id>50 AND (Weather>10 OR Weather<0)")
//$col2=[2,3]

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se připojil k týmu 4D Program v listopadu 2016. Jako Product Owner má na starosti psaní uživatelských příběhů, které následně převádí do funkčních specifikací. Jeho úkolem je také zajistit, aby dodaná implementace funkcí splňovala potřeby zákazníků.Po získání bakalářského titulu v oboru informatiky na CNAM nastoupil Fabrice do malé softwarové vydavatelské společnosti jako vývojář Windev. Poté pracoval pro různé společnosti v oblasti průmyslu a obchodu jako vývojář aplikací Windev a webových aplikací a také jako technický poradce pro nové funkce.