Champs calculés et scripts de boutons
Les champs calculés et les scripts de boutons utilisent le langage de programmation Python. Le calcul ou le script est la réalisation d'une fonction dont la signature vous est fournie.
- B.I. Valeurs de champ
- B.II. Enregistrements reliés
- B.III. Test de valeurs vides
- B.IV. Utilisation de l'API pygda complète
B.I. Valeurs de champ
For instance,
record["name_first"]
B.II. Enregistrements reliés
For instance,
record.related["location"]
- B.II.I. Enregistrements reliés unique
- B.II.II. Enregistrements reliés multiples
B.III. Test de valeurs vides
La manière de tester les valeurs vides dépend du type de champ :
- B.III.I. Champs non-texte
- B.III.II. Champs texte
B.III.I. Champs non-texte
Les champs non-texte peuvent être vides, signifiant que l'utilisateur n'a saisi aucune valeur dans le champ. Par exemple, Glom ne suppose pas qu'une valeur vide dans un champ numérique signifie 0.
Vous pouvez tester si un champ est vide en utilisant le « None » de Python. Par exemple :
if(record["numero_identification"] == None): return "Aucun contact" else: return record.related["contacts"]["nom_complet"]
Vous pourriez également tester s'il existe des enregistrements reliés. Par exemple :
if(record.related["contacts"] == None): return "Aucun Contact" else: return record.related["contacts"]["nom_complet"]
B.III.II. Champs texte
Pour les champs texte, vous devez vérifier que les chaînes ne sont pas vides. Il n'est pas possible dans Glom de faire la distinction entre des chaînes vides et l'absence d'une chaîne parce que ce n'est pas avantageux de le faire. Par exemple :
if(record["nom_complet"] == ""): return "Aucun nom" else: return record["nom_complet"]
B.IV. Utilisation de l'API pygda complète
Le module pygda est une API Python de l'API libgda. L'attribut connection d'un enregistrement fournit une gda.connection qui peut être utilisée pour accéder à la base de données actuelle de manière directe. Ceci vous permet d'exécuter n'importe quelle requête SQL, par exemple lire des données de la base de données avec SELECT ou modifier des valeurs dans la base de données avec un UPDATE. Notez que la connexion est déjà ouverte ce qui vous évite le travail difficile de spécification des détails de connexion.
L'attribut table_name de l'enregistrement fournit également le nom de la table actuelle.
Cet exemple permet de lire toutes les données de la table actuelle et d'afficher les valeurs sur le terminal :
# Utilise la connexion à la base de données actuelle # pour récupérer toutes les données de la table actuelle. # # record.connection est un objet gda.connection déjà ouvert, # nous évitant de nous occuper de l'ouverture de la connexion, # ou même de connaître le nom de la base de données. 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 " Nombre de colonnes: ", columns for i in range(columns): print " colonne ", i; print " nom =", data_model.get_column_title(i) # Recherche s'il s'agit de la clé primaire : field = data_model.describe_column(i) if field.get_primary_key(): print " (clé primaire)" print "\n"; print " Nombre de lignes : ", rows for row_index in range(rows): print " ligne ", row_index; for col_index in range(columns): print " valeur =", data_model.get_value_at(col_index, row_index).get() print "\n";