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.
sapeur3873
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 03 janv. 2017 09:41

coller des lignes dans une table

Message par sapeur3873 »

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libre office 5.1.5.2 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: coller des lignes dans une table

Message par Dude »

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.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
sapeur3873
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 03 janv. 2017 09:41

Re: coller des lignes dans une table

Message par sapeur3873 »

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
Messages : 32
Inscription : 03 janv. 2017 09:41

Re: coller des lignes dans une table

Message par sapeur3873 »

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 vous 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 modification par Oukcha le 07 nov. 2018 12:41, modifié 1 fois.
Raison : Citation réduite à l'essentiel
libre office 5.1.5.2 sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: coller des lignes dans une table

Message par jeanmimi »

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 : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
sapeur3873
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 03 janv. 2017 09:41

Re: coller des lignes dans une table

Message par sapeur3873 »

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
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: coller des lignes dans une table

Message par jeanmimi »

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 : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: coller des lignes dans une table

Message par Piaf »

Bonjour
A tester, je te laisse le plaisir de faire les déclarations :)

Code : Tout sélectionner

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+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
sapeur3873
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 03 janv. 2017 09:41

Re: coller des lignes dans une table

Message par sapeur3873 »

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
Messages : 32
Inscription : 03 janv. 2017 09:41

Re: coller des lignes dans une table

Message par sapeur3873 »

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
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: coller des lignes dans une table

Message par Piaf »

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