Bonjour,
La question a sûrement du déjà être posée maintes fois mais je n'ai pas vraiment trouvé mon bonheur. Je ne sais pas non plus si c'est possible.
Pour un projet d'entreprise, je dois pouvoir passer une base de données access quelconque (enfin, elle a toujours la même structure) sous openoffice pour qu'elle puisse être utilisée. En sachant que j'ai déjà créé une base sous openoffice avec des formulaires et des requêtes.
Est-il possible de faire passer les tables avec les données sur cette base OpenOffice déjà faite ? (je sais que faire la connexion sur access ne marche pas, enfin, les requêtes qui ont des liaisons plantent)
Merci d'avance pour votre aide.
[Résolu] passer une BdD access sous OOo Base
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.
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.
-
- Membre OOrganisé
- Messages : 94
- Inscription : 04 avr. 2006 13:48
[Résolu] passer une BdD access sous OOo Base
Dernière modification par Yaone le 30 mai 2006 09:53, modifié 1 fois.
OOo 2.0.1 sous WinXP SP2
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
bonjour,
Normalement, tu peux créer une base de données dans OOo Base en lui demandant de se connecter, lors de la cration, à la base access déjà existante.
Si ta OOo Base existe déjà, as-tu tenté de faire une copie de la table de la base acces (sélectionner, copier) et de la coller dans ta OOo Base ouverte et l'icone Tables séléctionnée ?
Normalement, tu peux créer une base de données dans OOo Base en lui demandant de se connecter, lors de la cration, à la base access déjà existante.
Si ta OOo Base existe déjà, as-tu tenté de faire une copie de la table de la base acces (sélectionner, copier) et de la coller dans ta OOo Base ouverte et l'icone Tables séléctionnée ?
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 94
- Inscription : 04 avr. 2006 13:48
Non parce que je ne peux pas accéder au contenu de ma base de données access. (il faudrait que je demande le mot de passe)
Et même si ça marche, je ne vais pas demander à l'utilisateur de faire ça manuellement.
Il n'y a pas un moyen de le faire automatiquement ? Genre avec des macros ?
Et même si ça marche, je ne vais pas demander à l'utilisateur de faire ça manuellement.
Il n'y a pas un moyen de le faire automatiquement ? Genre avec des macros ?
OOo 2.0.1 sous WinXP SP2
-
- Membre OOrganisé
- Messages : 93
- Inscription : 03 avr. 2006 15:50
Salut salut !
J'ai fais qqch d'équivalent avec une macro.
Mais ma base access n'était pas protégé par mot de passe.
(Je suppose que ca ne pose pas de réel problème excepté qu'il apparait en dur ds le code et si tu ne le connais pas ....)
Bref j'ai créer un fichier Base qui est l'import du fichier access et j'ai créer une connexion a cette base de données.
Je récupère les valeurs de tout les champs entrée par entrée j'apporte qq corrections quand c'est faisable
et j'ouvre une autre connexion vers ma nouvelle base de donnée pour chaque entrée de l'ancienne base. Je fais alors autant d'insert que je vise de table dans ma nouvelle base avec les valeurs récupérer dans l'ancienne et le tour est joué
Temps d'exécution pour une base de donnée qui contient au total 10 000 entrée environ 12 min.
Si tu veux plus de détails demande
+
J'ai fais qqch d'équivalent avec une macro.
Mais ma base access n'était pas protégé par mot de passe.
(Je suppose que ca ne pose pas de réel problème excepté qu'il apparait en dur ds le code et si tu ne le connais pas ....)
Bref j'ai créer un fichier Base qui est l'import du fichier access et j'ai créer une connexion a cette base de données.
Je récupère les valeurs de tout les champs entrée par entrée j'apporte qq corrections quand c'est faisable
et j'ouvre une autre connexion vers ma nouvelle base de donnée pour chaque entrée de l'ancienne base. Je fais alors autant d'insert que je vise de table dans ma nouvelle base avec les valeurs récupérer dans l'ancienne et le tour est joué
Temps d'exécution pour une base de donnée qui contient au total 10 000 entrée environ 12 min.
Si tu veux plus de détails demande
+
OOo 2.0.2 sous windows XP
-
- Membre OOrganisé
- Messages : 94
- Inscription : 04 avr. 2006 13:48
-
- Membre OOrganisé
- Messages : 93
- Inscription : 03 avr. 2006 15:50
Code : Tout sélectionner
dim maConnexionNewBase as object
dim maConnexionOldBase as object
'
Sub Main
dim maRequete as Object, resuQuery as Object
dim instrSQL as string
'
dim maRequeteNewBase as Object
dim instrSQLNewBase as string
'
dim chp1_OLD as string
dim chp2_OLD as integer
dim chp3_OLD as string
'
dim chp1New as string
dim chp2New as integer
dim chp2New as string
'
ConnecterSourceOldBase
'
instrSQL = "SELECT * FROM " & chr(34) & "tableOLD" & chr(34)
maRequete = maConnexionOldBase.createStatement()
resuQuery = maRequete.executeQuery(instrSQL)
'
Do while resuQuery.next
'
chp1_OLD = resuQuery.Columns.getByName("CHP1").string
chp2_OLD = resuQuery.Columns.getByName("CHP2").getDouble()
chp3_OLD = resuQuery.Columns.getByName("CHP3").string
'j'utilise .string pour récupérer les dates a toi ensuite d'adapter une fonction pour les traiter en fonction de tes besoins
' traitement exemple if (chp1_OLD = "truc" ) then ....
' le traitement permet de copier les valeurs
chp1New = chp1_OLD 'etc etc
ConnecterSourceNewBase
'
instrSQLNewBase = "INSERT INTO " & chr(34) & "T_tableNEW" & chr(34) & "Values (" _
& chr(39) & chp1New & chr(39) & ","_
& chr(39) & chp2New & chr(39) & ","_
& chr(39) & chp3New & chr(39) & ")"
'
maRequeteNewBase = maConnexionNewBase.createStatement()
tmp = maRequeteNewBase.executeQuery(instrSQLNewBase)
DeconnecterSourceNewbase
Loop
'
DeconnecterSourceOldBase
end sub
Sub ConnecterSourceOldBase
Dim NomSource As String, login As String, password As String
Dim maSource As Object, monDbContext As Object
'Création du contexte
'
monDbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource=monDbContext.getByName("BaseAnciennementEnPLace")
'
'Les paramètres de connexion
login = ""
password = ""
maConnexionOldBase = maSource.getConnection(login, password)
if IsNull(maConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if
End Sub
Sub ConnecterSourceNewBase
Dim NomSource As String, login As String, password As String
Dim maSource As Object, monDbContext As Object
'Création du contexte
'
monDbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource=monDbContext.getByName("NouvelleBase")
'
'Les paramètres de connexion
login = ""
password = ""
maConnexionNewBase = maSource.getConnection(login, password)
if IsNull(maConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if
End Sub
Sub DeconnecterSourceOldBase()
maConnexionOldBase.close
maConnexionOldBase.dispose
End Sub
Sub DeconnecterSourceNewBase()
maConnexionNewBase.close
maConnexionNewBase.dispose
End Sub
voila voila
++
OOo 2.0.2 sous windows XP
-
- Membre OOrganisé
- Messages : 94
- Inscription : 04 avr. 2006 13:48