Beräknade fält och knappskript använder programmeringsspråket Python. Beräkningen eller skriptet är implementationen av en funktion vars signatur tillhandahålls åt dig.
Till exempel är
värdet på fältet name_first i den aktuella posten.
Till exempel tillhandahåller
record.related["location"]
de relaterade posterna för aktuell post.
För relationer som anger en ensam post kan du få värdet på ett fält i den posten. Till exempel är
record.related["location"]["name"]
värdet på namnfältet i tabellen som indikeras av platsrelationen (ofta kallad location::name).
För relationer som anger flera poster kan du använda aggregatfunktionerna (sum, count, average) för att få generella värden. Till exempel,
record.related["invoice_lines"].sum("total_price")
.
Hur du testar efter tomma värden beror på fältets typ:
Icke-textfält kan vara tomma, vilket indikerar att användaren inte har matat in något värde i fältet. Till exempel antar inte Glom att ett tomt värde i ett numeriskt fält betyder 0.
Du kan testa om ett fält är tomt genom att använda Pythons None. Till exempel:
if(record["contact_id"] == None):
return "Ingen kontakt"
else:
return record.related["contacts"]["name_full"]
Du kan också testa huruvida det finns relaterade poster. Till exempel:
if(record.related["contacts"] == None):
return "Ingen kontakt"
else:
return record.related["contacts"]["name_full"]
För textfält ser du om strängar har längden noll. Det är inte möjligt i Glom att skilja mellan strängar av längden noll och avsaknad av en sträng, detta för att det inte finns någon fördel i att göra så. Till exempel:
if(record["name_full"] == ""):
return "Inget namn"
else:
return record["name_full"]
pygda är ett python-API för libgda-API:t. Postens attribut connection tillhandahåller en gda.connection som kan användas för att komma åt den aktuella databasen direkt. Detta låter dig köra valfri SQL-fråga, till exempel för att läsa data från databasen med SELECT, eller för att ändra värden i databasen med UPDATE. Observera att anslutningen redan är öppen, så du kan undvika det svåra jobbet med att ange anslutningsdetaljerna.
Attributet table_name för posten tillhandahåller också namnet på den aktuella tabellen.
Detta exempel läser alla data från den aktuella tabellen och skriver ut värdena till terminalen:
# Använd den aktuella databasens anslutning
# för att få alla data för aktuell tabell.
#
# record.connection är ett öppet gda.connection-objekt,
# vilket besparar oss besväret med att öppna anslutningen,
# eller ens att veta databasens namn.
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 " Antal kolumner: ", columns
for i in range(columns):
print " kolumn ", i;
print " namn=", data_model.get_column_title(i)
# Ta reda på om det är primärnyckeln:
field = data_model.describe_column(i)
if field.get_primary_key():
print " (primärnyckel)"
print "\n";
print " Antal rader: ", rows
for row_index in range(rows):
print " rad ", row_index;
for col_index in range(columns):
print " värde=", data_model.get_value_at(col_index, row_index).get()
print "\n";
Om
Copyright
- Copyright © 2004 Murray Cumming
- Copyright © 2006 Daniel Nylander
- Copyright © 2017 Anders Jonsson
Juridisk information
Tillstånd att kopiera, distribuera och/eller modifiera detta dokument ges under villkoren i GNU Free Documentation License (GFDL), version 1.1 eller senare, utgivet av Free Software Foundation utan standardavsnitt och omslagstexter. En kopia av GFDL finns att hämta på denna länk eller i filen COPYING-DOCS som medföljer denna handbok.
Denna handbok utgör en av flera GNOME-handböcker som distribueras under villkoren i GFDL. Om du vill distribuera denna handbok separat från övriga handböcker kan du göra detta genom att lägga till en kopia av licensavtalet i handboken enligt instruktionerna i avsnitt 6 i licensavtalet.
Flera namn på produkter och tjänster är registrerade varumärken. I de fall dessa namn förekommer i GNOME-dokumentation - och medlemmarna i GNOME-dokumentationsprojektet är medvetna om dessa varumärken - är de skrivna med versaler eller med inledande versal.
DOKUMENTET OCH MODIFIERADE VERSIONER AV DOKUMENTET TILLHANDAHÅLLS UNDER VILLKOREN I GNU FREE DOCUMENTATION LICENSE ENDAST UNDER FÖLJANDE FÖRUTSÄTTNINGAR:
-
DOKUMENTET TILLHANDAHÅLLS I "BEFINTLIGT SKICK" UTAN NÅGRA SOM HELST GARANTIER, VARE SIG UTTRYCKLIGA ELLER UNDERFÖRSTÅDDA, INKLUSIVE, MEN INTE BEGRÄNSAT TILL, GARANTIER ATT DOKUMENTET ELLER EN MODIFIERAD VERSION AV DOKUMENTET INTE INNEHÅLLER NÅGRA FELAKTIGHETER, ÄR LÄMPLIGT FÖR ETT VISST ÄNDAMÅL ELLER INTE STRIDER MOT LAG. HELA RISKEN VAD GÄLLER KVALITET, EXAKTHET OCH UTFÖRANDE AV DOKUMENTET OCH MODIFIERADE VERSIONER AV DOKUMENTET LIGGER HELT OCH HÅLLET PÅ ANVÄNDAREN. OM ETT DOKUMENT ELLER EN MODIFIERAD VERSION AV ETT DOKUMENT SKULLE VISA SIG INNEHÅLLA FELAKTIGHETER I NÅGOT HÄNSEENDE ÄR DET DU (INTE DEN URSPRUNGLIGA SKRIBENTEN, FÖRFATTAREN ELLER NÅGON ANNAN MEDARBETARE) SOM FÅR STÅ FÖR ALLA EVENTUELLA KOSTNADER FÖR SERVICE, REPARATIONER ELLER KORRIGERINGAR. DENNA GARANTIFRISKRIVNING UTGÖR EN VÄSENTLIG DEL AV DETTA LICENSAVTAL. DETTA INNEBÄR ATT ALL ANVÄNDNING AV ETT DOKUMENT ELLER EN MODIFIERAD VERSION AV ETT DOKUMENT BEVILJAS ENDAST UNDER DENNA ANSVARSFRISKRIVNING;
-
UNDER INGA OMSTÄNDIGHETER ELLER INOM RAMEN FÖR NÅGON LAGSTIFTNING, OAVSETT OM DET GÄLLER KRÄNKNING (INKLUSIVE VÅRDSLÖSHET), KONTRAKT ELLER DYLIKT, SKA FÖRFATTAREN, DEN URSPRUNGLIGA SKRIBENTEN ELLER ANNAN MEDARBETARE ELLER ÅTERFÖRSÄLJARE AV DOKUMENTET ELLER AV EN MODIFIERAD VERSION AV DOKUMENTET ELLER NÅGON LEVERANTÖR TILL NÅGON AV NÄMNDA PARTER STÄLLAS ANSVARIG GENTEMOT NÅGON FÖR NÅGRA DIREKTA, INDIREKTA, SÄRSKILDA ELLER OFÖRUTSEDDA SKADOR ELLER FÖLJDSKADOR AV NÅGOT SLAG, INKLUSIVE, MEN INTE BEGRÄNSAT TILL, SKADOR BETRÄFFANDE FÖRLORAD GOODWILL, HINDER I ARBETET, DATORHAVERI ELLER NÅGRA ANDRA TÄNKBARA SKADOR ELLER FÖRLUSTER SOM KAN UPPKOMMA PÅ GRUND AV ELLER RELATERAT TILL ANVÄNDNINGEN AV DOKUMENTET ELLER MODIFIERADE VERSIONER AV DOKUMENTET, ÄVEN OM PART SKA HA BLIVIT INFORMERAD OM MÖJLIGHETEN TILL SÅDANA SKADOR.
Återkoppling
Om du vill rapportera ett fel eller göra ett förslag kring Glom eller denna handbok kan de skickas in till GNOME:s Bugzilla , under produkten Glom. Sök i Bugzilla innan du skickar in din rapport för att säkerställa att den inte redan rapporterats.