[Résolu] formulaires : valider un enregistrement vide

Discussions sur le module de base de données 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 modOOs

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.
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

[Résolu] formulaires : valider un enregistrement vide

Message par oliveur »

Bonjour à tous
J'utilise une table avec une clé primaire et deux champs texte.

Mon problème est relatif au texte par défaut des contrôles de formulaire.
J'ai besoin d'utiliser des options par défaut donc tout naturellement, je pré-remplis
mes contrôles avec les valeurs souhaitées. Il s'agit de simples textbox liées à un champ.

Or les textes par défaut ne sont pas pris en compte si je ne fais que valider l'enregistrement sans apporter une modification. C'est le même comportement que lorsqu'on tente de valider un enregistrement vide.
  • Dans mon exemple j'ai deux textbox avec pour texte par défaut "bleu" et "rond"
  • Si je modifie "bleu" en "vert" par exemple et que je valide l'enregistrement (CR, TAB ou sortie de focus), celui-ci est validé dans la table.
  • Chaque fois que quelque chose change dans les valeurs par défaut, l'enregistrement est validable.
  • Si je laisse les valeurs par défaut telles quelles ou même si je les réécris* , elles ne sont pas validées

*j'écris "vert" à la place de "bleu", puis je réécris "bleu" et ben ça revient à la situation non validable

Ce que j'ai déjà essayé:
  • placer le tag isModified du formulaire en TRUE
  • shunter l'événement "avant l'enregistrement" pour envoyer une commande SQL (basic)mais j'ai peut-être mal fait
  • j'ai placé un témoin sur les variables objet afin d'observer le comportement des "propriétés" (non Xray ne m'apporte rien de plus)
  • j'ai aussi beaucoup lu :mrgreen:
Je suppose que lors d'une validation pour modification de table, il doit y avoir une méthode intégrée à la classe forms qui opère la transmission vers la table. A supposer qu'elle existe, il me suffirait lui transmettre les bons paramètres.
Ou sinon, n'y-a-t-il que la procédure de création d'un objet de connexion à la base ?

Voilà, j'espère n'avoir rien oublié je vous joins une base exemple avec mémo, mini-macro avec pointeurs sur les contrôles et des exemples de saisie que j'espère explicites.
Merci d'avance à tous
valider un enregistrement vide.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Don Corleone le 06 sept. 2017 10:20, modifié 6 fois.
Raison : Ajout balise [Résolu]
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25165
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: formulaires : valider un enregistrement vide

Message par Dude »

Salut,
oliveur a écrit :Mon problème est relatif au texte par défaut des contrôles de formulaire.
Pourquoi faire cela sur les contrôles ?
Dans la conception de ta table, tu as un champ pour définir une "valeur par défaut" :

Image
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: formulaires : valider un enregistrement vide

Message par Piaf »

Bonjour
En complément de la réponse précédente.
Si ta table ne comprend que ces trois champs, le comportement est normal, les valeurs par défaut, comme la valeur du champ auto incrémenté, ne sont ajoutés dans la table qu'à l’enregistrement.
Base ne détectant aucune valeur, ton enregistrement ne passe jamais en modifié.
Il devrait être possible pas macro d'insérer les enregistrements.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

Re: formulaires : valider un enregistrement vide

Message par oliveur »

réponse à Dude :
Tu as raison, j'ai oublié de préciser que ça aussi je l'ai fait mais que ça ne donne rien non plus.
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

Re: formulaires : valider un enregistrement vide

Message par oliveur »

Dude a écrit :Dans la conception de ta table, tu as un champ pour définir une "valeur par défaut" :
Tu as raison, mais j'ai essayé aussi, j'ai oublié de le préciser dans les choses que j'ai déjà tenté.
Désolé.
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

Re: formulaires : valider un enregistrement vide

Message par oliveur »

Piaf a écrit :Bonjour
En complément de la réponse précédente.
Si ta table ne comprend que ces trois champs, le comportement est normal, les valeurs par défaut, comme la valeur du champ auto incrémenté, ne sont ajoutés dans la table qu'à l’enregistrement.
Base ne détectant aucune valeur, ton enregistrement ne passe jamais en modifié.
Il devrait être possible pas macro d'insérer les enregistrements.
A+
Ah oui oui, c'est tout à fait possible par ce biais si j'en crois le Marcelly Godard.
Je n'ai pas réussi mais si c'est la manière la plus évidente d'y arriver, je me repencherai sur le
problème.
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

Re: formulaires : valider un enregistrement vide

Message par oliveur »

Je viens de comprendre grâce à cet échange que j'ai un problème de conceptualisation.
Ce que je cherchais ne servait à rien.
C'est ce qui arrive à force de piocher les infos de-ci de-là.

Merci à tous
car sans cet échange, je ramerais encore
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
oliveur
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 28 juin 2017 16:18

Re: [Résolu] formulaires : valider un enregistrement vide

Message par oliveur »

:D la solution réside dans l'ouverture puis la connexion à une base via une macro documentée ici :

https://forum.openoffice.org/fr/forum/v ... =15&t=1454
(chercher les explications de "the dude")

Par ce biais, on peut insérer des enregistrements totalement vides y compris dans une table sans clé primaire.
Ceci nécessite toutefois de créer un contexte de BD, or ce contexte existe déjà dans un formulaire lui-même connecté.
Donc voici une formule plus directe (honteusement pompée sur un forum anglophone):

Code : Tout sélectionner

dim oStatement as object

oStatement = ThisComponent.DrawPage.Forms.getByIndex(0).ActiveConnection.createStatement()
oStatement.executeUpdate(insertSQL)
  • - getByIndex(0) suppose qu'on s'attaque à la table liée au formulaire premier de la liste
  • - "insertSQL" étant bien entendu la requête SQL sous forme de chaîne de caractères
(pour info, mon but était de comprendre comment insérer dans une table le texte par défaut d'un contrôle quand aucune modification n'est enregistrée dans ce formulaire,
ce qui revient à vouloir créer un enregistrement vide, selon le texte de l'erreur envoyé par Base. Vala, vala, vala)
(ce texte pourra alimenter ensuite un sous-formulaire)
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7