Techniques pour débuter avec OOo Base

Discussions sur le module de base de données de StarOffice NeoOffice ou OpenOffice.org Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOos

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.

Techniques pour débuter avec OOo Base

Messagepar archiifk » 22 Mar 2006 19:29

Utiliser les commandes système HSQLDB

apres avoir traduit le premier chapitre de la dooc officielle de HSQLDB, entamer le second, et traduit un certain nombre de commandes SQL, j'ai cherhcer à attaquer une base créée avec OOo.

bon ca n'a pas été si simple, j'ai fini par installer HSQLDB v 1.8 qui ne marchait pas, l'ne des première version qui marchait, comparer les différences réussie à corriger et executer HSQLDB 1.8.

Enfin par analogie j'ai réussi à lancer le manager fourni avec HSQLDB integré dans OOo.

Cela est int"eressant pour des taches d'administration (sauvegarde, dump...)

Pour ceux que cela interesse les explications sont
http://archiifk.mageos.com/OOo/Base/Base.htm
et
http://archiifk.mageos.com/OOo/Base/guide_base_fr.html

Bonsoir à tous


Le modérateur a écrit:Aucune question n'est autorisée dans ce post-it !
Si vous avez un problème de compréhension, ouvrez un nouveau fil de discussion.
OpenOffice v 2.0.1 / Win 2000
archiifk
NOOouvel adepte
NOOouvel adepte
 
Messages: 20
Inscrit le: 22 Fév 2006 16:47

Techniques pour débuter avec OOo Base

Messagepar cris59 » 13 Juin 2006 09:50

Bien utiliser le SQL


Rappel

Dans OOoBase, vous pouvez faire :

- des requêtes de type SELECT dans la section requête en vue SQL

- tous types de requêtes dans Outils / SQL ...


Exemples de requêtes

1. Total d'un champ pour l'année en cours

Code: Tout sélectionner   AgrandirRéduire
SELECT SUM("TVA196") AS "Total" FROM "TFactures" WHERE YEAR("DateEmission") = YEAR(NOW( ))


Note : MONTH("DateEmission") = MONTH(NOW( )) pour le mois en cours


2. Total d'un champ entre 2 dates particulières

Code: Tout sélectionner   AgrandirRéduire
SELECT SUM("TVA196") AS "Total" FROM  "TFactures"  WHERE  "DateEmission" >=  '2006-01-01' AND "DateEmission"  < '2006-04-01'


Note : format de date aaaa-mm-jj (ou yyyy-mm-dd)


3. Le montant total, le nombre et le taux moyen des factures par client, avec concaténation des champs Nom et Prénom... les données proviennent de 2 tables liées par RefClient

Code: Tout sélectionner   AgrandirRéduire
SELECT CONCAT("TClients"."Nom" || '  ' || "TClients"."Prenom") AS "Nom & Prénom", SUM("TFactures"."Montant") AS "Total", COUNT("TFactures"."Montant") AS "Nombre", AVG("TFactures"."Montant") AS "Moyenne" FROM "TFactures", "TClients" WHERE ("TFactures"."RefClient" = "TClients"."RefClient") GROUP BY "TFactures"."RefClient"  ORDER BY "Nom & Prénom" ASC


Note : ce type de concaténation est mieux accepté

Code: Tout sélectionner   AgrandirRéduire
CONCAT("TClients"."Nom", CONCAT(' ', "TClients"."Prenom")) AS "Nom & Prénom"




4. Mise à jour d'une table avec mise en majuscule du Nom

Code: Tout sélectionner   AgrandirRéduire
UPDATE "TClients" SET "RaisonSociale" = 'Les Arts d''Aujourd''hui', "Nom" = UCASE('debrier') WHERE "RefClient"=12



5. Sélection sur un champ booléen

Code: Tout sélectionner   AgrandirRéduire
SELECT "Titre" FROM "TLivres" WHERE "Nouvelle" = True



6. Insertion d'un enregistrement dans une table

Code: Tout sélectionner   AgrandirRéduire
INSERT INTO "TLivres" ("Titre", "RefAuteur", "Nouvelle") Values ('Les jeux de l''esprit', 12, False)




Requêtes par macros

http://user.services.openoffice.org/fr/forum/ftopic1454.html


cris59

PS : ces requêtes ont été testée, mais elles peuvent, peut-être, être améliorées ...
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

En charge du projet FactOOor

http://www.cpserv.net/
Avatar de l’utilisateur
cris59
Membre enthOOousiaste
Membre enthOOousiaste
 
Messages: 482
Inscrit le: 20 Mar 2006 17:15
Localisation: Paris

Sélection dans une liste et affichage des données

Messagepar Bidouille » 06 Déc 2006 11:47

Cette exemple fonctionne avec une macro : si vous avez des questions, merci de vous référer au bandeau rouge en haut de la page.

Dans cette exemple, le formulaire utilise une combo et deux champs texte. La sélection d'un nom depuis la combo permet l'affichage des données.

Image

Le fichier Base est téléchargeable ici

Pour que cela fonctionne, vous devez créer un lien "source de données" TEST (attention à la casse) vers le fichier ODB que vous venez d'enregistrer.

Image

.
Avatar de l’utilisateur
Bidouille
RespOOonsable forum
RespOOonsable forum
 
Messages: 4251
Inscrit le: 08 Nov 2005 18:23
Localisation: Saumur, France

Messagepar Dude » 15 Déc 2006 10:22

Ouverture et fermeture de formulaire

Image

Cette base de données contient un formulaire général qui permet de lancer via des boutons quatre autres formulaires. Sur chaque formulaire appelé, un bouton permet également de le fermer.

Un très bon exemple si vous débutez : http://user.services.openoffice.org/fr/ci-joint/fichier/2007/09/26-125443.odb

Attention ! Depuis la 3.1.0 et l'intégration de macro directement dans un ODB, on peut maintenant ouvrir un formulaire à l'ouverture de la base.
Voici le même exemple :
ouvreForm31.odb
(47.56 Kio) Téléchargé 159 fois


Si vous avez des questions, vous devez les poster dans la section Macros et API.

:idea:
Dernière édition par Dude le 22 Juil 2009 11:04, édité 2 fois au total.
Avatar de l’utilisateur
Dude
GourOOou
GourOOou
 
Messages: 7936
Inscrit le: 03 Mar 2006 09:45
Localisation: Lyon, France

[Résolu] Base Oo - Requête SQL

Messagepar neness » 12 Fév 2007 01:37

Bonsoir à tous,
Voici une requête SQL que j'ai réussie à trouver, oui, oui. Elle permet de sélectionner tous les enregistrements dont la date n'a pas été saisie et ceux saisis pour un mois désiré de l'année courante.
A toutes fins utiles.
(L'ami Bronchart que je salue au passage m'a mis sur la voie) :wink:

Code: Tout sélectionner   AgrandirRéduire
SELECT "T_Activite".*, YEAR( "Date" ), MONTH( "Date ), "T_Activite"."Date_" FROM "T_Activite" WHERE ( ( YEAR( "Date" ) = YEAR( NOW( ) ) AND MONTH( "Date" ) = :indiquez_ici_le_numero_du_mois ) OR ( "Date" IS NULL ) )
XP -SP2 - Oo version 2.1
neness
Membre lOOoyal
Membre lOOoyal
 
Messages: 30
Inscrit le: 18 Nov 2006 17:41
Localisation: Ain (01)

Avec quel moteur je tourne ?

Messagepar Dude » 15 Avr 2008 14:54

Connaître le moteur de base de données utilisé par mon fichier ODB

Base est un module de base de données qui peut travailler en mode natif avec son propre moteur (le fameux format HSQL ou HSQLDB 100 % Java).

Mais Base peut également servir de lien vers d'autres bases ou SGBD (dBase, MS-Access, Oracle, etc). Dans ce cas, les données ne sont pas intégrées et Base ne sert que de lien.

Il est très important de savoir avec quoi vous travaillez pour répondre à votre problème de manière précise. Pour connaître le format de base utilisé par ODB, il suffit de regarder en bas à gauche dans la barre d'état :

Image

Dans l'illustration ci-dessus, c'est bien le format natif HSQL.

8)
Dernière édition par Dude le 17 Avr 2009 16:32, édité 1 fois au total.
Avatar de l’utilisateur
Dude
GourOOou
GourOOou
 
Messages: 7936
Inscrit le: 03 Mar 2006 09:45
Localisation: Lyon, France

Ajouter un nombre à une date par requête

Messagepar Pierre-Yves Samyn » 05 Fév 2009 11:56


Objectif
: nous avons un champ de type Date et nous voulons ajouter (soustraire) un nombre de jours, mois ou année.

Dans les exemples suivants :
  • le champ de type Date se nomme Date
  • le nombre à ajouter est contenu dans le champ NbJours
  • Nous ajoutons... des jours mais le principe sera aisément transposable pour les mois et années

1) Jeu d'enregistrements résultat non modifiable

La requête suivante doit être créée en mode SQL (on peut commencer en mode ébauche pour sélectionner la table et les champs puis passer en mode SQL pour ajouter les fonctions).

Code: Tout sélectionner   AgrandirRéduire
SELECT "IdTable", "Date", "NbJours", CONVERT( YEAR( "Date" ) || '-' || MONTH( "Date" ) || '-' || DAY( "Date" ) + "NbJours", DATE ) as "Date+NbJours" FROM "Table" AS "Table"


Le bouton "Exécuter directement l'instruction SQL" doit être enfoncé.

Explications
  • Nous ne disposons pas, à ce jour, de fonctions permettant directement de calculer à partir d'un champ date.
  • Le principe est donc de décomposer la date en année, mois, jour (fonctions YEAR, MONTH, DAY) puis d'ajouter le nombre à l'élément "décomposé", puis de reconvertir en date (fonction CONVERT)

2) Jeu d'enregistrements résultat modifiable

Code: Tout sélectionner   AgrandirRéduire
SELECT "IdTable", "Date", "NbJours", CAST ( YEAR( "Date" ) || '-' || MONTH( "Date" ) || '-' || DAY( "Date" ) + "NbJours" AS "DATE" ) AS "Date+NbJours" FROM "Table" AS "Table"


Cette requête peut être réalisée en mode ébauche (le bouton "Exécuter directement l'instruction SQL" ne doit pas être enfoncé).

Capture-1.png
Capture-1.png (9.6 Kio) Consulté 7593 fois


Explications
  • Nous utilisons cette fois la fonction CAST pour reconvertir en date. Attention la syntaxe est différente de CONVERT.
  • L'avantage est que cette fonction est reconnue en mode ébauche, et que le jeu d'enregistrements "résultat" reste modifiable.
  • Son inconvénient est que par défaut la date est affichée au format nombre (40109 par exemple pour le 23/10/09).
  • Pour restaurer l'affichage "date", il suffit de faire un clic droit sur l'en-tête de colonne puis de choisir le format. Ce dernier sera mémorisé
Pièces jointes
requeteAjoutDate.odb
(34.26 Kio) Téléchargé 97 fois
OOo 3.1.1 windows XP

A lire avant tout !
Pierre-Yves Samyn
GourOOou
GourOOou
 
Messages: 7433
Inscrit le: 02 Mai 2006 10:42

Sun report builder

Messagepar charlemagne » 03 Mai 2009 14:53

Bonjour à toutes et à tous et félicitations pour ce forum.
Juste à titre d'information, je suis un Québécois de la ville de Québec (Canada). Votre forum m'a dépanné souvent et je veux apporter ma modeste contribution.

Concernant le problème de date avec SRB, j'ai essayé plusieurs idées et j'ai trouvé une solution qui fonctionne très bien chez moi.
Dans l'en-tête de page j'insère une date par le menu "insertion- date et heure" ensuite je clique sur le champ et dans la partie de droite où sont les propriétés, dans "champ de données", je modifie "TODAY()" par "(TODAY()) + 0".
J'imprime mon rapport et la date demeure juste et je sauvegarde au format pdf et la date demeure juste également.

J'espère que cela pourra fonctionner pour vous tous également.
Merci et bonne journée !
Dernière édition par Oukcha le 03 Mai 2009 18:31, édité 1 fois au total.
Raison: Message fusionné
OpenOffice 3.0.1 sous Windows Vista Familial Premium
charlemagne
Fraîchement OOothentifié
 
Messages: 1
Inscrit le: 03 Mai 2009 13:39

Réduire la taille d'un ODB

Messagepar Dude » 20 Nov 2009 10:28

Comme indiqué dans le bandeau rouge en haut de la page, vous facilitez les réponses en joignant votre base. Bien sûr celle-ci doit être au format natif HSQL (voir plus haut). Cela ne sert à rien de joindre un ODB relié à une source de données externe (MySQL, Oracle, etc).

Cependant, la taille maximum du fichier ne doit pas excéder les 500 ko. Or, à force de manipulation sur les données (ajout / suppression), le fichier ODB a tendance à enfler. Pour en réduire la taille, il existe une commande SQL :
Code: Tout sélectionner   AgrandirRéduire
CHECKPOINT DEFRAG;

Cette commande est à saisir via le menu Outils > SQL et va permettre la compression et le nettoyage de la base des enregistrements rayés.


.
Avatar de l’utilisateur
Dude
GourOOou
GourOOou
 
Messages: 7936
Inscrit le: 03 Mar 2006 09:45
Localisation: Lyon, France


Retour vers Base de données

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : rol1 et 1 invité