[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.

[Résolu] formulaires : valider un enregistrement vide

Messagepar oliveur » 05 Sep 2017 11:32

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
base concise pour examen
(21.34 Kio) Téléchargé 10 fois
Dernière édition par Don Corleone le 06 Sep 2017 11:20, édité 6 fois.
Raison: Ajout balise [Résolu]
OpenOffice 4.1.3 sous Windows XP sp2
LibreOffice 5.2.5.1 Windows 7
oliveur
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18

Re: formulaires : valider un enregistrement vide

Messagepar Dude » 05 Sep 2017 13:15

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
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 19626
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: formulaires : valider un enregistrement vide

Messagepar Piaf » 05 Sep 2017 17:03

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: Version: 5.3.7 et Apache OpenOffice 4.1.4 Sur Xubuntu 16.04
Piaf
GourOOu
GourOOu
 
Message(s) : 5017
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: formulaires : valider un enregistrement vide

Messagepar oliveur » 05 Sep 2017 18:40

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
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18

Re: formulaires : valider un enregistrement vide

Messagepar oliveur » 05 Sep 2017 18:48

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
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18

Re: formulaires : valider un enregistrement vide

Messagepar oliveur » 05 Sep 2017 18:56

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
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18

Re: formulaires : valider un enregistrement vide

Messagepar oliveur » 05 Sep 2017 19:36

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
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18

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

Messagepar oliveur » 13 Sep 2017 01:22

: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/viewtopic.php?f=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   AgrandirRéduire
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
oliveur
Fraîchement OOthentifié
 
Message(s) : 9
Inscrit le : 28 Juin 2017 17:18


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)