Ajouter données dans une table via champs de formulaire

Bonjour,
Je suis débutant sur LibreOffice Base, j’utilisais auparavant MS Access.
Ma question va peut être vous semblait très bête mais ça fait des jours que je tourne en rond.

Sur Access, j’utilisais une requête ajout pour insérer dans une table “Contacts” la valeur des champs remplis dans un formulaire “Ajouter contact”. J’exécutais ensuite cette requête en cliquant sur un bouton. Ça donnait ça:

INSERT INTO
Contacts ( Prenom, Nom )
SELECT
[Formulaires]![Ajouter contact]![Prenom] AS Expr1,
[Formulaires]![Ajouter contact]![Nom] AS Expr2,

Jusqu’ici je m’en sors.
En revanche, comme on ne peut pas créer réellement de requête Ajout (sauf en SQL) dans LibreOffice Base, ça me rend la tache plus difficile. En parcourant le net, j’ai bien compris qu’il fallait créer une requête SQL puis l’exécuter via une macro. Et là je ne m’en sors plus, je tourne en rond, je ne sais pas si je dois coller ma requête directement dans la macro ou créer une macro qui lance ma requête… Bref.
Est ce que vous pourriez m’aider? est ce qu’il existe un moyen simple d’ajouter la valeur du champs “Prenom” présent dans mon formulaire “Ajouter contact” au champ “Prenom” dans ma table “Contacts”. Si je pouvais avoir une réponse “pour les nuls” ça serait top. Merci !!!

peut-être cite les sources qui t’ont fait tourner en rond.
et/ou attache un exemple d’où tu en es.

il faut simplement lier les champs(=text box) de ton formulaire aux colonnes de la table => Onglet “données” des propriétés de tes champs.

(les requetes SQL sont seulement nécessaires si besoin de traitements additionels)

Le soucis je crois, c’est que j’ai cherché partout, regarder des videos, des sites etc et je me suis perdu !:cry:
Merci pour ta réponse, peux tu m’expliquer un peu plus comment “lier les champs”? car la pour l’instant j’ai créé un formulaire en mode ébauche appelé “Ajouter contact” dans lequel j’ai un champs de texte appelé “Prenom” (et un autre “Nom”). Je voudrais simplement que ce que j’écris dans ces 2 champs aille s’enregistrer dans ma table “T_Contacts” lorsque je clique sur un bouton puis que le formulaire se ferme.
Si je n’ai pas besoin de requete SQL c’est ça me va très bien ! car encore une fois j’ai vraiment essayer de bien appliquer ce que j’ai pu trouver et rien ne fonctionne :pray:

heu … on en était à

donc le formulaire en mode Design => clic droit sur un des champs => les colonnes de ta table devrait apparaire dans la liste déroulante.
DataTab

ensuite quand tu ouvres le formulaire, la touche <entrée> sur le dernier champ inserera les données dans la table.

ça sera pour une deuxième étape. chaque chose en son temps :wink:

A Terme l’idée serait d’ajouter un commentaire dans la zone texte du bas qui irait s’enregistrer dans la table T_commentaire sous le numero de contact de la personne en question… mais pour ca il faudrait que j’arrive à comprendre les bases.

Le formulaire est en mode ébauche donc il n’est pas lié à une table (Ou en tous cas je ne l’ai pas fait :persevere:) et donc je n’ai pas ces propositions …

upload ton .odb (si il n’y a pas de données perso) ça sera + simple.

Contacts copie.odb (151.9 KB)

Désolé j’ai eu pas mal d’informations à supprimer… Pour info, je ne sais pas si ca a une grande importance, je suis sur Mac. Merci :pray:

Et j’ai la version 24.2.0.3 de LibreOffice

Bonsoir ,
Pour info ,le site LibreOffice contient un guide du débutant qui comme son nom l’indique est assez complet pour quelqu’un qui débute : https://wiki.documentfoundation.org/images/f/f6/GS6408FR-DébuterBase.odt

Merci beaucoup pour votre réponse.
Il s’agit là d’un document vraiment destiné au débutant, j’imagine qu’il existe le même type de doc pour intermédiaire etc???

Bonjour ,
Vous avez accès à toute la documentation officielle à partir d’ici : Documentation/fr — The Document Foundation Wiki
En ce qui concerne les macros, cela se trouve ici : Bienvenue sur les pages Macros francophones — The Document Foundation Wiki
Pour les macros ,la syntaxe peut être différente selon que vous êtes sous hsqldb ou firebird .De même des fonctions peuvent ne pas être incluses .(surtout sous hsqldb intégré)

effectivement, il faut la selectionner dans les propriétés du formulaire :
FormDataTab

Merci ! :pray:
Que pensez vous de cette macro ?
Le but étant toujours le même, enregistrer dans une table la valeur de certains champs du formulaire en cliquant sur un bouton où je pensais assigner cette macro…

Mais j’ai toujours une erreur sur:
Erreur d’exécution BASIC.
Une exception s’est produite :
Type: com.sun.star.container.NoSuchElementException

sur la ligne:
objDatabase = objContext.GetByName(“Contacts copie”)

Sub Insertion

Dim objContext As Object
Dim objDatabase As Object
Dim objConnection As Object
Dim objStatement As Object
Dim strSQL As String
Dim objForm As Object

objContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
objDatabase = objContext.GetByName("Contacts copie")
objConnection = objDatabase.GetConnection("","")
objStatement = objConnection.CreateStatement()

' Insertion des valeurs
strSQL = "INSERT INTO T_Contacts (C_Nom, C_Prenom) SELECT TXTNom, TXTPrenom FROM F_AjoutContact"
objStatement.ExecuteUpdate(strSQL)

objConnection.Close()

objForm = ThisComponent.DrawPage.Forms.GetByName("F_AjoutContact")
objForm.Reload()
objForm.Last()

End Sub

Car même si je me passerai bien des requetes ajout SQL et des macros, j’aimerais quand même comprendre le fonctionnement pour la suite…

trop compliquée.
ça sort d’où ?

attention surtout à ne pas repartir à tourner en rond :wink:

le guide du débutant a été suggéré précedemment,
il y a peut-être des choses + spécifiques qui peuvent aussi ếtre utiles :

Merci pour la réponse.

Trop compliqué ok, mais si c’est si simple de faire la manip que je recherche pourquoi ça ne peut pas s’écrire en quelques lignes comme par exemple:

INSERT INTO
Commentaires ( Num_contact, Com_prenom, Com_nom, Com_type, Com_date, Com_commentaire )
SELECT
[Formulaires]![Ajout commentaire]![Num_contact] AS Expr1,
[Formulaires]![Ajout commentaire]![Prenom] AS Expr2,
[Formulaires]![Ajout commentaire]![Nom] AS Expr3,
[Formulaires]![Ajout commentaire]![Type] AS Expr4,
[Formulaires]![Ajout commentaire]![Date] AS Expr5,
[Formulaires]![Ajout commentaire]![Commentaire] AS Expr6;

Si c’est si simple, pourriez vous me mettre sur la piste?

d’ici: Requête Update, Insert, Delete dans une macro

:pray:t3:

à ce stade je reformulerais la question :

  • pourquoi quand on te (re)met sur une piste simple, tu (re)pars te planter sur des trucs encore trop compliqué pour ta pratique ?

pour mémoire, la question initiale (après quelques prémisses plus ou moins douteux;) était :

en pédalant un peu, on a finalement (j’espère) montré qu’il y a bien un moyen (très) simple.
donc pour ne pas perdre les futurs lecteurs que google enverra ici, je proposerais bien de fermer ce post comme résolu :innocent:

et ça n’aura pas été plus simple d’enrichir le post en question, plutôt que de venir (re)tartiner du code ici ? :thinking:
en appliquant l’expérience méthodologique acquise : titre clair + exemple simple partagé + hypothèses concrètes basées sur de la documentation bien comprise – ou au moins lue :wink:

c’est en tout cas pas les pistes qui manquent :

Ok, mea-culpa. J’insistais sur le fait de pouvoir utiliser une requête d’insertion pour une autre question effectivement. Bref, Oui j’ai lu les docs et oui j’ai réussi à ajouter un contact. Je vais donc recréer un post pour mon autre question et bien sûr valider celui ci comme étant “résolu”.