[Résolu][Base]Copier une vue dans autre base
Modérateur : Vilains modOOs
					Règles du forum
			
 Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
	Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
- 
				plonge
 - Membre cOOnfirmé

 - Messages : 297
 - Inscription : 09 sept. 2010 19:06
 
							
						[Résolu][Base]Copier une vue dans autre base
		
								
						
			
			
			
			Bonsoir à tous,
N'ayant pas trouver de solution pour pouvoir compléter la macro que j'utilise, je fais appel à vous.
J'utilise depuis un certain temps sans problème une copie de table (ici source.odb dans le rép S2) pour basculer les enregistrements dans une autre table (ici source.odb dans le répertoire S1). Lorsque les deux base n'avaient que des tables, tout marché, mais je suis obligé de rajouter une vue, et la macro ne fonctionne plus.
Ma question: comment est il possible de copier également la vue qui est maintenant indispensable à mon application.
Merci de votre aide par avance
			
			
						N'ayant pas trouver de solution pour pouvoir compléter la macro que j'utilise, je fais appel à vous.
J'utilise depuis un certain temps sans problème une copie de table (ici source.odb dans le rép S2) pour basculer les enregistrements dans une autre table (ici source.odb dans le répertoire S1). Lorsque les deux base n'avaient que des tables, tout marché, mais je suis obligé de rajouter une vue, et la macro ne fonctionne plus.
Ma question: comment est il possible de copier également la vue qui est maintenant indispensable à mon application.
Merci de votre aide par avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
							
					Dernière modification par plonge le 18 mars 2014 07:22, modifié 2 fois.
									
			
						
							LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
			
						- 
				Dude
														 - IdOOle de la suite

 - Messages : 26087
 - Inscription : 03 mars 2006 07:45
 - Localisation : 127.0.0.1
 
Re: [Base]Copier les tables et vues dans autre base
Salut,
 
Modifie ton titre pour qu'il reflète ce problème : [Base] Copier une vue dans un autre ODB
Tu n'as qu'à exécuter une requête "CREATE VIEW" tout simplement.
			
			
									
						
										
						Donc, pourquoi parles-tu de "table" ?plonge a écrit :Ma question: comment est il possible de copier également la vue
Modifie ton titre pour qu'il reflète ce problème : [Base] Copier une vue dans un autre ODB
Tu n'as qu'à exécuter une requête "CREATE VIEW" tout simplement.
- 
				plonge
 - Membre cOOnfirmé

 - Messages : 297
 - Inscription : 09 sept. 2010 19:06
 
Re: [Base]Copier une vue dans autre base
Bonsoir Dude,
Oui bien sûr, mais cela veux dire que je vais demander à des personnes qui ne savent pas utiliser base d'aller créer leur propre vue. La macro dans le zip ci-dessus sert à: permettre lorsque je donne une nouvelle version de mon application de transférer toutes les tables d'une version x à une version x+1 ceci étant "transparent" pour l'utilisateur lambda, donc je tiens à rester dans cette optique pour la vue. Copier la vue par comme les tables.
			
			
									
						
							Oui bien sûr, mais cela veux dire que je vais demander à des personnes qui ne savent pas utiliser base d'aller créer leur propre vue. La macro dans le zip ci-dessus sert à: permettre lorsque je donne une nouvelle version de mon application de transférer toutes les tables d'une version x à une version x+1 ceci étant "transparent" pour l'utilisateur lambda, donc je tiens à rester dans cette optique pour la vue. Copier la vue par comme les tables.
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
			
						- 
				Dude
														 - IdOOle de la suite

 - Messages : 26087
 - Inscription : 03 mars 2006 07:45
 - Localisation : 127.0.0.1
 
Re: [Base]Copier une vue dans autre base
Qui te parle de ça ?plonge a écrit :Oui bien sûr, mais cela veux dire que je vais demander à des personnes qui ne savent pas utiliser base d'aller créer leur propre vue.
Tu exécutes par macro ta requête tout simplement.
- 
				plonge
 - Membre cOOnfirmé

 - Messages : 297
 - Inscription : 09 sept. 2010 19:06
 
Re: [Base]Copier une vue dans autre base
OK, j'ai mal interprété ta réponse, effectivement il suffit de supprimer la vue dans la version X avant la copie des tables pour éviter l'erreur, copier les tables et recréer la vue dans la version x+1 par la macro.
Est-on d'accord?
			
			
									
						
							Est-on d'accord?
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
			
						- 
				plonge
 - Membre cOOnfirmé

 - Messages : 297
 - Inscription : 09 sept. 2010 19:06
 
Re: [Base]Copier une vue dans autre base
Bonjour Dude,
Ca j'avais bien compris. Pour simplifier tout, avant distribution de mon appli je vais supprimer la vue, les tables seront copier comme d'habitude à l'utilisation de la nouvelle version et la vue sera recréé à la suite.
Je clos ce fil.
Cordialement
			
			
									
						
							Ca j'avais bien compris. Pour simplifier tout, avant distribution de mon appli je vais supprimer la vue, les tables seront copier comme d'habitude à l'utilisation de la nouvelle version et la vue sera recréé à la suite.
Je clos ce fil.
Cordialement
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
			
						- 
				Piaf
 - GourOOu

 - Messages : 5622
 - Inscription : 25 nov. 2011 18:07
 - Localisation : Guyane
 
Re: [Résolu][Base]Copier une vue dans autre base
Bonjour
Un peu tard comme d'habitude
 
A testerA+
			
			
									
						
							Un peu tard comme d'habitude
A tester
Code : Tout sélectionner
Sub copierTables( URLsource, URLcible )
On Error GoTo fermerConn
Dim oDC as Object, oCTW as Object
Dim oConnSource as Object, oConnCible as Object
Dim oSource as Object, contenuSource as Object, contenuSourceV as Object
Dim oCible as Object, contenuCible as Object, ContenuCibleV as Object
Dim sTable as String, strSQL as String, creervue as String
Dim marequete as Object
	oDC = createUnoService("com.sun.star.sdb.DatabaseContext")
	oSource = createUnoService("com.sun.star.sdb.DataAccessDescriptorFactory").createDataAccessDescriptor
	oConnSource = oDC.getByName(URLsource).getConnection("","")
	oSource.activeConnection = oConnSource
	oSource.commandType = com.sun.star.sdb.CommandType.TABLE
	contenuSource = oConnSource.tables
	contenuSourceV = oConnSource.views
	oCible = createUnoService("com.sun.star.sdb.DataAccessDescriptorFactory").createDataAccessDescriptor
	oConnCible = oDC.getByName(URLcible).getConnection("","")
	oCible.activeConnection = oConnCible
	ContenuCible = oConnCible.Tables
	ContenuCibleV = oConnCible.Views
	oCible.databaseLocation = URLcible
	For Each sTable In contenuSourceV.elementNames
		If ContenuCibleV.hasByName(sTable) Then
			If msgbox("Une vue """ & sTable & """ existe déjà dans le document cible." & chr(10) & _
					  "Souhaitez-vous la supprimer ?", 4+48, "Avertissement") = 6 Then
				contenuCibleV.dropByName(sTable)
			Else GoTo signet1
			End If
		End If	
	signet1:
	Next
	oConnCible.Parent.Databasedocument.store
	For Each sTable In contenuSource.elementNames
		If contenuSourceV.hasByName(sTable)Then
	 		strSQL =  contenusourcev.getByName(sTable).Command
 			creervue =	"CREATE VIEW  """ & sTable & """ AS " & strSql
 			marequete = oConnCible.createStatement()
 			maRequete.executeQuery(creervue)
 			goto signet
		ElseIf ContenuCible.hasByName(sTable) Then
			If msgbox("Une table """ & sTable & """ existe déjà dans le document cible." & chr(10) & _
					  "Souhaitez-vous la supprimer ?", 4+48, "Avertissement") = 6 Then
				contenuCible.dropByName(sTable)
			Else GoTo signet
			End If
		End If	
	oSource.command = sTable
	oCTW = com.sun.star.sdb.application.CopyTableWizard.create(oSource,oCible)
	oCTW.operation = com.sun.star.sdb.application.CopyTableOperation.CopyDefinitionAndData
	oCTW.setTitle("COPIE DES TABLES")
	oCTW.destinationTableName = sTable
	oCTW.useHeaderLineAsColumnNames = true
	oCTW.execute()
	signet:
	Next
	msgbox("Opération terminée. ")
	oConnSource.close()
	oConnCible.close()
	on error goto 0
	Exit Sub
	
fermerConn:
msgbox error,,"Erreur " & err
if not isNull(oConnSource) then oConnSource.close()
if not isNull(oConnCible) then oConnCible.close()
End SubLibre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
			
						- 
				plonge
 - Membre cOOnfirmé

 - Messages : 297
 - Inscription : 09 sept. 2010 19:06
 
Re: [Résolu][Base]Copier une vue dans autre base
Bonsoir Piaf,
Un grand merci à toi, ton complément de macro répond bien à mon premier souhait.
 
Cordialement
... Je confirme, après test ton complément à la macro fonctionne bien.
Encore merci Piaf
			
			
									
						
							Un grand merci à toi, ton complément de macro répond bien à mon premier souhait.
Cordialement
... Je confirme, après test ton complément à la macro fonctionne bien.
Encore merci Piaf
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
			
						- 
				Bour EmileMarie
 - Membre lOOyal

 - Messages : 35
 - Inscription : 17 févr. 2014 19:28
 
Re: [Résolu][Base]Copier une vue dans autre base
plonge a écrit :Bonsoir à tous,
N'ayant pas trouver de solution pour pouvoir compléter la macro que j'utilise, je fais appel à vous.
J'utilise depuis un certain temps sans problème une copie de table (ici source.odb dans le rép S2) pour basculer les enregistrements dans une autre table (ici source.odb dans le répertoire S1). Lorsque les deux base n'avaient que des tables, tout marché, mais je suis obligé de rajouter une vue, et la macro ne fonctionne plus.
Ma question: comment est il possible de copier également la vue qui est maintenant indispensable à mon application.
Merci de votre aide par avance
J'étais contente de trouver ta réponse mais malheureusement ton formulaire n'est pas accessible en modification alors j'ai peur de faire des sottises puisque je ne sais pas ce qu'il appelle.
peux-tu refaire une autre version accessible. merci d'avance
OpenOffice 4.0.1 sous Windows 8
			
						- 
				Piaf
 - GourOOu

 - Messages : 5622
 - Inscription : 25 nov. 2011 18:07
 - Localisation : Guyane
 
Re: [Résolu][Base]Copier une vue dans autre base
Bonsoir
Ne poste pas dans le fil d'un autre qui en plus est marqué [Résolu].
Poste dans ton fil en faisant référence à ce fil au besoin et en expliquant précisément ce que tu veux obtenir avec un fichier permettant de te répondre (mêmes structures, sans données confidentielle), plutôt que devoir en fabriquer un qui ne correspondrait pas.
A+
			
			
									
						
							Ne poste pas dans le fil d'un autre qui en plus est marqué [Résolu].
Poste dans ton fil en faisant référence à ce fil au besoin et en expliquant précisément ce que tu veux obtenir avec un fichier permettant de te répondre (mêmes structures, sans données confidentielle), plutôt que devoir en fabriquer un qui ne correspondrait pas.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
			
						- 
				Oukcha
														 - RespOOnsable modération

 - Messages : 4299
 - Inscription : 06 oct. 2008 08:03
 
Re: [Résolu][Base]Copier une vue dans autre base
Bonjour,
Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la n° 7
Un sujet = le problème d'une seule personne
Comme vous avez pu le lire, ce sujet est désormais résolu. Si vous avez également ce problème, c'est que ce dernier est différent. Votre configuration n'est peut être pas la même que celle de l'auteur de ce fil.
Dans ce cas et pour des raisons de lisibilité sur ce forum, nous vous demandons de créer une nouvelle question en rappelant que vous avez le même problème que dans ce fil.
Merci de votre participation.
			
			
									
						
										
						Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la n° 7
Un sujet = le problème d'une seule personne
Comme vous avez pu le lire, ce sujet est désormais résolu. Si vous avez également ce problème, c'est que ce dernier est différent. Votre configuration n'est peut être pas la même que celle de l'auteur de ce fil.
Dans ce cas et pour des raisons de lisibilité sur ce forum, nous vous demandons de créer une nouvelle question en rappelant que vous avez le même problème que dans ce fil.
Merci de votre participation.