Vypočítávaná pole a skripty tlačítek
Vypočítávaná pole a tlačítko skripty používají programovací jazyk Python. Výpočet či skript jsou implementací funkce, pro kterou je vám poskytnut podpis.
- B.1. Hodnoty polí
- B.2. Navazující záznamy
- B.3. Test na prázdnou hodnotu
- B.4. Používání úplného API pygda
B.1. Hodnoty polí
Například
record["krestni_jmeno"]
B.2. Navazující záznamy
Například
record.related["misto"]
- B.2.1. Jeden navazující záznam
- B.2.2. Vícenásobné navazující záznamy
B.3. Test na prázdnou hodnotu
Jak můžete testovat na prázdné hodnoty u různých typů polí:
- B.3.1. Netextová pole
- B.3.2. Textová pole
B.3.1. Netextová pole
Netextová pole mohou být prázdná, což znamená, že uživatel do pole nezadal žádnou hodnotu. Glom například nepředpokládá, že prázdná hodnota v číselném poli by měla znamenat 0.
Zda je pole prázdné můžete testovat pomocí hodnoty None jazyka Python. Například:
if(record["kontakt_id"] == None): return "Žádný kontakt" else: return record.related["kontakty"]["cele_jmeno"]
Můžete také otestovat, jestli existují nějaké navazující záznamy. Například:
if(record.related["kontakty"] == None): return "Žádný kontakt" else: return record.related["kontakty"]["cele_jmeno"]
B.3.2. Textová pole
U textových polí byste měli kontrolovat nulovou délku řetězce. V aplikaci Glom není možné rozlišit mezi nulovou délkou řetězce a nezadaným žádným řetězcem, protože to nemá žádný praktický význam. Například:
if(record["cele_jmeno"] == ""): return "Žádné jméno" else: return record["cele_jmeno"]
B.4. Používání úplného API pygda
pygda je API jazyka Python pro API libgda. Vlastnost connection u záznamu poskytuje gda.connection, které lze použít k přímému přístupu do aktuální databáze. Díky tomu můžete spustit libovolný dotaz v SQL, například přečíst data z databáze pomocí SELECT nebo změnit hodnoty v databázi pomocí UPDATE. Všimněte si, že spojení je již otevřeno, takže si ušetříte náročnou práci se zadáváním připojovacích údajů.
Vlastnost table_name u záznamu poskytuje název aktuální tabulky.
Tento příklad čte všechna data z aktuální tabulky a hodnoty vypisuje na terminál:
# Použití aktuálního databázového připojení # k získání všech dat z aktuální tabulky. # # record.connection je již otevřený objekt gda.connection, # takže se nemusíme trápit s otevíráním připojení, # ani znalostí názvu databáze. query = "SELECT * FROM %s" % record.table_name data_model = gda.gda_execute_select_command(record.connection, query) rows = data_model.get_n_rows() columns = data_model.get_n_columns() print " Počet sloupců: ", columns for i in range(columns): print " sloupec ", i; print " název=", data_model.get_column_title(i) # Zjistit, zda se jedná o primární klíč:: field = data_model.describe_column(i) if field.get_primary_key(): print " (primární klíč)" print "\n"; print " Počet řádků: ", rows for row_index in range(rows): print " řádek ", row_index; for col_index in range(columns): print " hodnota=", data_model.get_value_at(col_index, row_index).get() print "\n";