coller des lignes dans une table

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.

coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 08:14

bonjour,

dans une de mes bases, j'ai différentes tables.
je cherche a dupliquer un contrôles de tables avec tous les enregistrements qu'il contient, vers un autre.

ma base sert a mettre sur papier, une journée type d'agent!
mais cette journée peut varier d'un agent a un autre, il me faut donc une journée par agent, et non pas une journée type avec le nom des agents.

un exemple mieux que un long discours!

prendre le formulaire fWe
on a la date du jour, avec le responsable de la journée
ensuite le nom de l'agent, et sa journée type,

afin d'éviter de recopier la journée type qui peut etre différente mais dans 70% des cas devrait se ressembler , je voudrais avoir un bouton, ou une methode pour pouvoir dupliquer cette journée dans l'enregistrement suivant, tout en ayant la possibilité de le modifier par la suite.

merci pour votre aide
Pièces jointes
garde journaliere forum.odb
(198.53 Kio) Téléchargé 21 fois
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar Dude » 07 Nov 2018 09:29

Salut,

sapeur3873 a écrit:je cherche a dupliquer un contrôles de tables avec tous les enregistrements qu'il contient, vers un autre.

Cette question n'a pas de sens dans un contexte SQL.
Un doublon de table n'est pas conforme dans un modèle relationnel.

capture.png


Les tables tEquipes... devraient être rassemblées en une et avoir une colonne Type pour distinguer les enregistrements J, N et WE.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20799
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 09:46

la base etant que les equipes J N et WE ne fonctionnent pas de la meme manière,
j'ai prefere faire comme si on avait 3 bases distinctes…

peut etre ce n'est pas la bonne solution…

mais pour le moment c'est ma manière de fonctionner, et que je comprend…

merci
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 12:53

Dude a écrit:Les tables tEquipes... devraient être rassemblées en une et avoir une colonne Type pour distinguer les enregistrements J, N et WE.



je te remerci d'avoir pu regarder,

les tables ne sont pas les memes, et ne font pas la meme chose, c'est pour cela que j'ai preferé faire 2 tables qui se ressemble mais qui sont pas vraiment identiques en fait!
mais mon probleme de copie colle, n'est pas la... il vient de la sous table pour le WE ou la nuit...

j'ai mis de quoi faire un exemple pour la table we, a partir du formulaire Fwe, je voudrais pouvoir dans ce formulaire, dupliquer, les données quand je cree un nouvel enregistrement...

je sais pas si je suis assez clair en fait!


La modération a écrit:Pour répondre à un message, utilisez le bouton RÉPONDRE (en bas de page, à gauche), et non le bouton CITER, ce qui évite de citer l'ensemble du message précédent rendant la lecture très difficile.
Dernière édition par Oukcha le 07 Nov 2018 13:41, édité 1 fois.
Raison: Citation réduite à l'essentiel
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar jeanmimi » 07 Nov 2018 14:36

Bonjour,
sapeur3873 a écrit:la base etant que les equipes J N et WE ne fonctionnent pas de la meme manière,
Est-ce qu'une même personne peut tantôt travailler le Jour, tantôt la Nuit, tantôt le Week-end en fonction des plannings ?
Si oui, le conseil de Dude est à suivre, plutôt que de dupliquer des Tables qui ressemblent finalement à des Requêtes.
LibreOffice Version : Version: 6.3.0 (x64) (10 août 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14930
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 15:15

oui les personnes peuvent travailler tantot la nuit, tantot la journée,

mais a chaque fois je cree des lignes pour une date données, avec un personnel.

j'ai deja adapté en supprimant toute la partie tequipes,

en journees semaine, et we le fonctionnemnet sera le meme.

j'ai tout développer autour de ces 2 tables et ensuite créer les requetes qui vont autour, comme si on avait 2 base distinctes,
maintenant, il ne me manque que la fonctionnailité indiqué plus haut...

lorsque j'ajoute une personne a mon WE, et que je developpe sa journée de travail, j'aimerais pouvoir dupliquer les infos de sa journée a la personne suivante!
ou dans l'autre sens, creer la personne suivante et importé la journée de la personne precedentes...

c'est possible?

a voir avec mon exemple de fwe.

merci a vous
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar jeanmimi » 07 Nov 2018 17:13

sapeur3873 a écrit:oui les personnes peuvent travailler tantot la nuit, tantot la journée,

Par conséquent, il ne devrait y avoir qu'une seule Table des personnels.
sapeur3873 a écrit:lorsque j'ajoute une personne a mon WE, et que je developpe sa journée de travail, j'aimerais pouvoir dupliquer les infos de sa journée a la personne suivante!
ou dans l'autre sens, creer la personne suivante et importé la journée de la personne precedentes...

En pratique, comme tu crées des équipes, il te faut
- une Table T_Equipes avec les champs ID_Equipe, ID_Type_Activ (où tu renseignera si c'est en J, ou N, ou WE à partir d'une Table), et éventuellement des champs pour les dates, DateDebut et DateFin
- et une Table_Detail_Equipes avec les champs ID_Detail_Equipe, ID_Equipe (pour faire la Relation avec l'ID_Equipe de la la Table T_Equipes) et ID_Personne.
LibreOffice Version : Version: 6.3.0 (x64) (10 août 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14930
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: coller des lignes dans une table

Messagepar Piaf » 07 Nov 2018 17:39

Bonjour
A tester, je te laisse le plaisir de faire les déclarations :)
Code : Tout sélectionner   AgrandirRéduire
Sub InsertDonnees(oEv as Object)
Dim oForm as Object
   oForm = oEv.Source.Model.Parent
   rst = oEv.Source.Model.Parent.createResultSet
   enCours = rst.Columns.getByName("refPerswe").Value
   maConnexion = rst.ActiveConnection
   rst.last
   rst.previous
   maDate = rst.Columns.getByName("refwe").String
   pers = rst.Columns.getByName("refPerswe").Value
   strSQL = "SELECT ""type"", ""asthdeb"", ""asthfin"", ""commentaire"" FROM ""tWeAst"" WHERE ""refPerswe"" = " & pers & " AND ""refwe"" = {d '" & maDate & "' }"
   maRequete = maConnexion.createStatement()
   Resultat = maRequete.executeQuery(strSQL)
   maDate = CDateFromIso(maDate)
   unRowSet = createUnoService("com.sun.star.sdb.RowSet")
   With unRowSet
      .ActiveConnection = maConnexion
      .CommandType = com.sun.star.sdb.CommandType.TABLE
      .Command = "tWeAst"
      .execute   
      While Resultat.next
         fin = TimeValue(resultat.Columns.getByName("asthfin").String)
         Debut = TimeValue(resultat.Columns.getByName("asthdeb").String)
         .moveToInsertRow
         .Columns.getByName("refwe").updateDate(DateTodbDate(maDate))
         .Columns.getByName("refPerswe").updateInt(EnCours)
         .Columns.getByName("type").updateString(resultat.Columns.getByName("type").String)
         .Columns.getByName("asthfin").updateTime(TimeTodbTime(fin))
         .Columns.getByName("asthdeb").updateTime(TimeTodbTime(Debut))
         .Columns.getByName("commentaire").updateString(resultat.Columns.getByName("commentaire").String)
         .insertRow
      wend
   End With
   unRowset.dispose
   oForm.getByName("Insert").Enabled = False
   oForm.getByName("astreinte").reload   
End Sub
Si questions, le faire dans la section Macros et API avec la balise [Base]
A+
Pièces jointes
garde journaliere forum.odb
(200.28 Kio) Téléchargé 21 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 18:43

merci pour ce code,

je l'intègre dans ma feuille et le teste…
et je vous tiens au courant, mais ca a l'air de correspondre a mes besoins...

en tout cas je n'aurais pas reussi a creer une macro comme celle la... donc encore une fois... merci
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar sapeur3873 » 07 Nov 2018 19:27

je suis en train de tester le code…

il fonctionne en partie…

au debut j'ai cru qu'il fonctionné pas et j'ai répondu ici, en expliquant mon probleme…

mais en fouillant un peu dans la macro en pas a pas…

il y a un probleme avec la commande CDateFromIso qui me transforme du coup ma date du 17-11-2018 en 17-01-2018... et du coup ca ne marcher pas…

en modifiant la macro que tu ma envoyé , j'ai reussi a faire fonctionner… et ca a l'air top…

merci a toi pour ton aide!
libre office 5.1.5.2 sous Windows 10
sapeur3873
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 03 Jan 2017 10:41

Re: coller des lignes dans une table

Messagepar Piaf » 07 Nov 2018 23:32

Bonsoir
Piaf a écrit:Si questions, le faire dans la section Macros et API avec la balise [Base]
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane


Retour vers Base de données

Qui est en ligne ?

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