# Manual del usuario de Glom V0.1

para Glom v0.8
2004
Murray Cumming
2007
Jorge González (jorgegonz@svn.gnome.org)
Equipo de desarrollo de Glom

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre de GNU, Versión 1.1 o cualquier otra versión posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. Puede encontrar una copia de la licencia GFDL en este enlace o en el archivo COPYING-DOCS distribuido con este manual.

Este manual es parte de una colección de manuales de GNOME distribuido bajo la GFDL. Si quiere distribuir este manual por separado de la colección, puede hacerlo añadiendo una copia de la licencia al manual, tal como se describe en la sección 6 de la licencia.

Muchos de los nombres usados por compañías para distinguir sus productos y servicios son mencionados como marcas comerciales. Donde esos nombres aparezcan en cualquier documentación de GNOME, y los miembros del Proyecto de Documentación de GNOME están al corriente de esas marcas comerciales, entonces los nombres se pondrán en mayúsculas o con la inicial en mayúsculas.

ESTE DOCUMENTO Y LAS VERSIONES MODIFICADAS DEL MISMO SE PROPORCIONAN SEGÚN LAS CONDICIONES ESTABLECIDAS EN LA LICENCIA DE DOCUMENTACIÓN LIBRE DE GNU (GFDL) Y TENIENDO EN CUENTA QUE:

1. EL DOCUMENTO SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, NI EXPLÍCITA NI IMPLÍCITA INCLUYENDO, SIN LIMITACIÓN, GARANTÍA DE QUE EL DOCUMENTO O VERSIÓN MODIFICADA DE ÉSTE CAREZCA DE DEFECTOS COMERCIALES, SEA ADECUADO A UN FIN CONCRETO O INCUMPLA ALGUNA NORMATIVA. TODO EL RIESGO RELATIVO A LA CALIDAD, PRECISIÓN Y UTILIDAD DEL DOCUMENTO O SU VERSIÓN MODIFICADA RECAE EN USTED. SI CUALQUIER DOCUMENTO O VERSIÓN MODIFICADA DE AQUÉL RESULTARA DEFECTUOSO EN CUALQUIER ASPECTO, USTED (Y NO EL REDACTOR INICIAL, AUTOR O CONTRIBUYENTE) ASUMIRÁ LOS COSTES DE TODA REPARACIÓN, MANTENIMIENTO O CORRECCIÓN NECESARIOS. ESTA RENUNCIA DE GARANTÍA ES UNA PARTE ESENCIAL DE ESTA LICENCIA. NO SE AUTORIZA EL USO DE NINGÚN DOCUMENTO NI VERSIÓN MODIFICADA DE ÉSTE POR EL PRESENTE, SALVO DENTRO DEL CUMPLIMIENTO DE LA RENUNCIA;Y

2. BAJO NINGUNA CIRCUNSTANCIA NI BAJO NINGUNA TEORÍA LEGAL, SEA POR ERROR (INCLUYENDO NEGLIGENCIA), CONTRATO O DE ALGÚN OTRO MODO, EL AUTOR, EL ESCRITOR INICIAL, CUALQUIER CONTRIBUIDOR, O CUALQUIER DISTRIBUIDOR DEL DOCUMENTO O VERSIÓN MODIFICADA DEL DOCUMENTO, O CUALQUIER PROVEEDOR DE CUALQUIERA DE ESAS PARTES, SERÁ RESPONSABLE ANTE NINGUNA PERSONA POR NINGÚN DAÑO DIRECTO, INDIRECTO, ESPECIAL, INCIDENTAL O DERIVADO DE NINGÚN TIPO, INCLUYENDO, SIN LIMITACIÓN DAÑOS POR PÉRDIDA DE MERCANCÍAS, PARO TÉCNICO, FALLO INFORMÁTICO O MAL FUNCIONAMIENTO O CUALQUIER OTRO POSIBLE DAÑO O PÉRDIDAS DERIVADAS O RELACIONADAS CON EL USO DEL DOCUMENTO O SUS VERSIONES MODIFICADAS, AUNQUE DICHA PARTE HAYA SIDO INFORMADA DE LA POSIBILIDAD DE QUE SE PRODUJESEN DICHOS DAÑOS.

Murrayc
Cumming
Equipo de desarrollo de Glom

     murrayc@murrayc.com

Glom 0.8
20 de junio de 2004

Murray Cumming

Murray Cumming

Este manual describe el uso de la versión 0.8 de Glom

## Comentarios

Para informar sobre un error o hacer sugerencias sobre Glom o sobre éste manual, puede enviarlas en la página Gnome Bugzilla, seleccionando el producto Glom. Para asegurarse de que otros no han informado antes del mismo fallo, busque en Bugzilla antes de enviar su error.

Manual del usuario de Glom.

## Introducción

Glom le permite diseñar y usar sistemas de bases de datos.

## Inicio

### Iniciar Glom

Puede iniciar Glom de las siguientes maneras:

Menú de Aplicaciones

  Elija Oficina Glom.

### Al iniciar Glom

Se mostrará la siguiente ventana al iniciar Glom.

#### Ventana de inicio de Glom

Muestra la ventana principal de Glom.

## Uso de Glom como un operador

Para abrir un documento existente de Glom, puede hacerlo con el administrador de archivos o bien puede escoger Glom del menú de Aplicaciones, y después escoger el documento cuando se le pregunte. Glom le pedirá un nombre de usuario y una contraseña para acceder a la base de datos. El administrador le proveerá de ése nombre y ésa contraseña.

Cuando abra un documento existente, Glom estará ejecutándose a `nivel de usuario` `Operador`. Éste nivel le permite buscar y editar registros pero no le permite cambiar la estructura fundamental de la base de datos.

### Navegación

Cada base de datos tiene varias tablas. Para ver una tabla diferente, escoja `Tabla` del menú de `Navegación`. Después pulse dos veces sobre la tabla o bien selecciónela y pulse el botón `Abrir`.

### Introducir datos

Cuando trabaje en `Modo de datos`, puede introducir información en la `Lista` o en la vista de `Detalles`. La vista de la «Lista» muestra cuántos registros hay a la vez, pero no muestra todos los campos. La vista de «Detalles» muestra sólo un registro pero muestra todos los campos ordenados de manera adecuada.

Cuando introduzca datos en un campo se guardarán en la base de datos inmediatamente después de que termine de editarlo. Si es un campo de fecha u hora el formato se comprobará automáticamente.

Para crear un nuevo registro pulse el botón `Nuevo`. Se creará un nuevo registro con los campos vacíos para que los pueda rellenar.

### Buscar datos

Elija `Modo de búsqueda` del menú. Los campos en la lista y vista detallada estarán vacíos y un botón de búsqueda aparecerá en la parte inferior de la ventana.

Introduzca la información, o parte de la información, en el campo para buscar registros que contengan esa información en ese campo. Por ejemplo, introduzca Javi en un campo de nombre para buscar registros con «Javi» o «Javier» en el campo «Nombre».

Cuando presione el botón `Buscar`, Glom buscará los registros y después los mostrará.Si sólo se encuentra un registro entonces se mostrará con la vista de «Detalles». Si se encuentran varios registros, entonces se mostrarán con la vista de «Lista».

## Uso de Glom como desarrollador

Cuando cree un nuevo documento, Glom estará ejecutándose a `nivel de usuario` `Desarrollador`. También puede cambiar al nivel de usuario «Desarrollador» después de abrir un documento existente, desde el menú `Nivel de usuario`. Glom permitirá este cambio sólo si el administrador también lo permite.

### Añadir tablas

Puede ver la lista de las tablas existentes escogiendo `Tabla` del menú de `Navegación`. También verá esta ventana después de conectarse con un servidor de bases de datos, después de crear un documento nuevo. Para crear una tabla nueva, pulse en el botón `Añadir` e introduzca un nombre para la tabla nueva. Éste nombre no debería contener espacios ni caracteres especiales. Glom le sugerirá un título legible por humanos paraesta tabla. Los `Operadores` verán éste título en lugar del nombre actual de la tabla. También puede marcar una tabla como `oculta` para los Operadores. Por ejemplo, los Operadores deberían ver «Lista de facturas» como un registro relacionado de la tabla «Facturas», pero nunca podrán navegar directamente por la tabla «Lista de facturas».

Puede especificar una tabla como la `tabla predeterminada`. Esta tabla e mostrará siempre que un operador abra un documento existente, sin preguntarle que seleccione una tabla de la lista.

También puede usar esta ventana para renombrar una tabla existente.

Pulse el botón de `Abrir` para ver las tablas seleccionadas.

### Editar campos

Elija `Campos` del menú de `Desarrollador`. Esto mostrará la lista de campos en la tabla. Las tablas nuevas tienen un campo de clave primaria automáticamente, pero puede cambiar el campo si es necesario.

Para añadir un campo nuevo pulse el botón de `Añadir`, después introduzca el nombre del campo nuevo. El nombre no debe contener espacios o caracteres especiales.Glom supondrá un título apropiado y legible por humanos para este campo, pero puede editarlo. Los `Operadores` verán este nombre en lugar del nombre actual del campo.

Para especificar más detalles de un campo, seleccione el campo y pulse en el botón de `Detalles`.

#### Editar campos

Editar los campos de tabla.

#### Claves primarias

Cada tabla debe tener una, y solamente una, `Clave primaria`. El valor en este campo debe ser único, lo que quiere decir que cada valor en este campo sólo aparecerá en un sólo registro de la tabla. Por ejemplo, cada registro de la tabla «Clientes» tendrá también un campo «ID del cliente». Este valor se usará para referirse a este cliente en otras tablas, tales como los registros «Proyectos» y «Facturas». Lea la sección Creando relaciones para obtener más información acerca de cómo relacionar tablas entre si.

#### Tipos de campos

Glom ofrece algunos tipos simples de campos:

1. Número

2. Texto

3. Fecha

4. Hora

5. Booleano - tanto cierto como falso

6. Imagen

#### Campos calculados

El valor de los campos se puede calcular con términos de otros campos, usando el lenguaje de programación Python. Éste cálculo debería ser la implementación de una función en Python y debería devolver un valor. El valor devuelto se usará como el valor del campo. Este valor se volverá a calcular cada vez que cambie alguno de los campos de los que obtiene sus datos. Por desarrollar: Por ahora ésto sólo funciona para valores predeterminados, y tampoco se pueden usar los valores de los campos en el cálculo.

También puede hacer cálculos para especificar el valor predeterminado de los campos, seleccionado la solapa `Valor predeterminado` de la ventana `Detalles del campo`, pulsando sobre la casilla `Calcular valor` e introduciendo un cálculo en Python. Puede comprobar este cálculo en la ventana `Editar`.

### Ordenando las distribuciones

Cada tabla tiene una vista de `Lista` y de `Detalles`, por omisión ambas muestran todos los campos de la tabla por fecha de creación. Puede editar la distribución escogiendo `Distribución` del menú de `Desarrollador`.

Para la vista de `Lista`, puede especificar la secuencia de los campos columna, y también si hay algún campo oculto.

Para la vista de `Detalles`, puede crear grupos o campos y darlos títulos. Después puede colocar campos en esos grupos y especificar la secuencia de los campos en los grupos. También puede especificar la secuencia de los grupos. Por ejemplo, en una tabla de «Contactos» puede crear un grupo llamado «Nombre», y colocar los campos «Título», «Nombre» y «Apellido» en ese grupo. Puede tener otros grupos para los campos «Direcciones».

Los campos de «Fecha» y «Hora» se mostrarán, y se introducirán, en un formato correcto según la localización del usuario, pero se almacenarán en la base de datos de una forma canónica. Por tanto, un usuario español puede introducir la fecha en formato español, pero después a un usuario estadounidense se mostrará en formato estadounidense.

### Crear relaciones

Muchas veces las tablas de una base de datos están relacionadas entre sí. Por ejemplo, una tabla de «Facturas» podrá tener un campo «ID del cliente». El valor de ese campo especifica un registro en la tabla «Clientes» el cual tiene el mismo valor. Glom puede mostrar información adicional, como el nombre del cliente, de ese registro relacionado. O puede mostrar una lista de varios registros relacionados - por ejemplo, algún registro de la «Lista de facturas» que está relacionado con otro registro de «Facturas».

Para crear relaciones, escoja `Relaciones` del menú de `Desarrollador. Esto le mostrarA e introduzca un nombre para ella. Debe elegir un campo de la tabla actual y un campo de otra tabla con el que se crear`

Puede usar las relaciones en los siguientes lugares.

1. Para mostrar un campo relacionado en la lista o en la vista detallada.

2. Para mostrar una lista de registros relacionados en la vista detallada.

3. Para buscar un valor de un campo en un registro relacionado. Por ejemplo, copie el precio de un «Producto» en el campo «Precio» de un registro de «Facturas».

4. Para calcular el valor de un campo.

### Administración de usuarios

To define the `Operators` who can use your database, and to specify what access they have to the various tables, choose `Users` from the `Developer` menu..

## Diálogos

### Dialog: New database

### Dialog: Create database

### Dialog: Connection

This dialog requests a user name and password for connection to a database server. This is usually not the same username and password combination with which you log in to your system. All Glom systems require a database server on which the actual data will be stored. If the database server is not running on your local computer ("localhost"), then you must also provide its network hostname, such as "glomserver.openismus.com", though your hostname will be different.

Your system administrator can provide these database login details.

If you are the system administrator, see Glom's Postgres Configuration web page for help with installing and configuring a database server.

### Dialog: Connection Error

This dialog is shown when Glom could not connect to the specified database server. Either the database server is not running at the specified hostname, or the user name and password were not accepted by the database server. See the Connection Dialog section for more details.

### Dialog: Database preferences

### Dialog: Change language

### Window: Textobject

### Window: Imageobject

### Dialog: Notebook

### Dialog: Data invalid format

### Dialog: Relationship overview

### Window: Groups

### Dialog: Group by sort fields

### Dialog: Group by secondary fields

### Window: Button script

### Window: Field calculation

### Dialog: New group

### Dialog: Choose user

### Dialog: User

### Dialog: Translation identify original

### Dialog: Translation copy

### Dialog: Choose Date

## Acerca de Glom

Glom y la comunidad de voluntarios de Glom se encargan de mantener Glom. Para obtener más información acerca de Glom, visite la página web de Glom.

Para informar sobre un error o hacer sugerencias sobre esta aplicación o sobre éste manual, puede enviarlas usando Bugzilla.

Otra excelente fuente de información son las listas de correo de Glom.

Este programa se distribuye bajo los términos de la Licencia Pública General GNU (GPL) tal y como fue publicada por la Free Software Foundation, en la versión 2 ó (a su elección) cualquier versión posterior. Una copia de esta licencia puede encontrarse en este enlace, o en el archivo COPYING incluido con el código fuente de este programa.

## Conceptos

Glom es fácil de usar, pero debe entender los siguientes conceptos básicos.

1. `Base de datos`: Cada documento de Glom permite el acceso a una base de datos.

2. `Tabla`: Cada base de datos contiene varias tablas, tales como, por ejemplo, las tablas «Clientes» y «Facturas».

3. `Campo`: Cada tabla tiene varios campos, tales como «ID del cliente», «Nombre» y «Fecha de nacimiento», en otros documentos y aplicaciones, se suele denominar a estos campos «columnas».

4. `Registros`: Cada tabla tiene varios registros, cada uno de los cuales contiene valores para cada uno de los campos. Por ejemplo la tabla de «Clientes» tendrá un registro para cada cliente. En otros documentos y aplicaciones, a los registros se los suele denominar `filas`.

5. `Relaciones`: Cada tabla puede estar relacionada con otras tablas, por medio de los campos de ambas tablas. Por ejemplo, la tabla «Clientes» puede tener relación con la tabla «Facturas», de tal manera que se pueden ver todas las facturas de ése cliente. Sólo los desarrolladores necesitan entender éste concepto. En otros documentos y aplicaciones, a las relaciones se las suele denominar «uniones» o «joins».

## Calculated fields and button scripts

Calculated fields and button scripts use the Python programming language. The calculation or script is the implementation of a function whose signature is provided for you.

### Editing the definition of a calculated field

Editing the definition of a calculated field.

### Field values

For instance,

    record["name_first"]

is the value of the name_first field in the current record.

### Related Records

For instance,

    record.related["location"]

provides the related records for the current record.

#### Single related records

For relationships that specify a single record, you can get the value of a field in that record. For instance,

    record.related["location"]["name"]

is the value of the name field in the table indicated by the location relationship (often called location::name).

#### Multiple related records

For relationships that specify multiple records, you can use the aggregate functions (sum, count, average) to get overall values. For instance,

    record.related["invoice_lines"].sum("total_price")

.

### Testing for empty values

How you test for empty values depends on the type of field:

#### Non-text fields

Non-text fields may be empty, indicating that the user has not entered any value in the field. For instance, Glom does not assume that an empty value in a numeric field should mean 0.

You can test whether a field is empty by using Python's None. For instance:

      if(record["contact_id"] == None):
        return "No Contact"
      else:
        return record.related["contacts"]["name_full"]

You might also test whether there are any related records. For instance:

      if(record.related["contacts"] == None):
        return "No Contact"
      else:
        return record.related["contacts"]["name_full"]

#### Text fields

For text fields, you should check for zero-length strings. It is not possible in Glom to distinguish between zero-length strings and the absence of any string, because there is no advantage to doing so. For instance:

      if(record["name_full"] == ""):
        return "No Name"
      else:
        return record["name_full"]

#### Using the full pygda API

pygda is a python API for the libgda API. The record's `connection` attribute provides a gda.connection that can be used to access the current database directly. This allows you to run any SQL query, for instance to read data from the database with a SELECT, or to change values in the database with an UPDATE. Note that the connection is already open so you can avoid the difficult work of specifying the connection details.

The record's `table_name` attribute also provides the name of the current table.

(Note that the `record.connection` and `record.table_name` attributes are only available since Glom 1.1.6.)

This example reads all data from the current table and prints the values to the terminal:

    # Use the current database's connection
    # to get all the data for the current table.
    #
    # record.connection is an already-open gda.connection object,
    # saving us the bother of opening the connection,
    # or even knowing the name of the database.

    query = "SELECT * FROM %s" % record.table_name
    command = gda.Command(query)
    data_model = record.connection.execute_single_command(command)

    rows = data_model.get_n_rows()
    columns = data_model.get_n_columns()
    print "    Number of columns: ", columns

    for i in range(columns):
        print "      column ", i;
        print "        name=", data_model.get_column_title(i)

        # Find out whether it's the primary key:
        field = data_model.describe_column(i)
        if field.get_primary_key():
            print "        (primary key)"

        print "\n";

    print "    Number of rows: ", rows

    for row_index in range(rows):
        print "      row ", row_index;

        for col_index in range(columns):
            print "        value=", data_model.get_value_at(col_index, row_index).get()

        print "\n";