Lire fichier access....sans acess

Lire fichier access....sans acess - SQL/NoSQL - Programmation

Marsh Posté le 17-12-2004 à 13:42:07    

J'ai un fichier fic.mdb créer sous access, mais je ne possède pas access, comment puis-je l'ouvrir?
Est - il possible de l'importer ds Excel ou Mysql?
En outre je ne connais pas la structure ( nbre et type des colonnes )de ce fichier.

Reply

Marsh Posté le 17-12-2004 à 13:42:07   

Reply

Marsh Posté le 19-12-2004 à 20:31:19    

tiens je te recup ça des aide qu'il y a sur mon hebergeur:

Code :
  1. Comment convertir une base de données Access à MySQL
  2.     * Télécharger et installer le connecteur MySQL ODBC
  3.     * Télécharger et installer le logiciel Access 2 MySQL
  4.     * Vous devez changer la sécurité de votre base de données pour permettre à n'importe quel ordinateur qui est authentifié avec votre nom d'utilisateur et votre mot de passe d'y accéder.
  5.       Note : Si vous changez la sécurité, nous vous suggérons fortement de remettre votre base de données en mode privé.
  6.     * Démarrez le logiciel Access 2 MySQL et entrez les informations demandées


 
Sinon, vu voir sur le site de Microsoft, j'ai entendu dire il y a quelque jour, qu'il y a une visionneuse pour tout chaque fichier micrsoft, pour pouvoir les lires de partout. Et que les lires.

Reply

Marsh Posté le 19-12-2004 à 22:22:49    

[:drapal] Il se trouve que des bases Access trainent malheureusement encore dans ma boîte... :(

Reply

Marsh Posté le 21-12-2004 à 13:35:21    

Oui, c'est possible.
 
Bouge pas, je fais un test avec Excel ;)

Reply

Marsh Posté le 21-12-2004 à 13:48:23    

Procédure faite avec Windows 2000 FR tournant avec MDAC 2.8 US et Office 2003. Les libellés et les écrans peuvent varier d'une version à l'autre, mais cette procédure reste valide, et pas besoin de posséder Access.
 
Installe MDAC 2.8 ni pas déjà installé.
 
Sous 2000, va dans le panneau de config, puis "outils d'aministration" et enfin "sources de données (ODBC)"
 
Clique sur l'onglet "System DSN" et fait "Add..."
 
Choisis "Microsoft Access Driver (*.mdb)" (fait gaffe, c'est pas "Driver do Microsoft Access (*.mdb)" ni "Microsoft Access-Trieber (*.mdb)" !
 
Nom : bidule
Description : machin qui contient des trucs bizarres
 
Ensuite, fait "selectionner" et choisi ton fichier Access.
OK.
 
Maintenant, t'as un DSN ODBC "bidule".
 
Ouvre Excel.
 
Va dans "Data" et fait "Import External Data > Import Data..."
 
Choisi "New Source..."
"ODBC DSN"
Choisi dans la liste "bidule"
Et hop, t'as plus qu'à choisir la table que tu veux importer (à refaire pour chaque table)
 
Après, tu ouvres cette nouvelle connection dans l'écran qui suit.
 
PS: Avec Excel 2003, j'ai l'impression que c'est un peu différent des anciennes version, donc là fin dépends peut-être un peu. En tout cas, sûr et certain, c'est faisable.
 
Dans le pire des cas, tu peux toujours créer un fichier VBS qui va aller piocher dans la base, et extraire les données dans des fichiers CSV.

Reply

Marsh Posté le 21-12-2004 à 13:53:36    

Dans Excel 2003, chez moi faut faire comme ça :
 
Tu lances Excel, puis tu fait Fichier\Ouvrir. Dans la liste de s fichiers, tu prend "Bases de données Access", puis tu ouvre ton .mdb.
 
Une boite de dialogue s'ouvre, et tu rentre compte et mot de passe s'il le faut. Si t'as pas de mot de passe, fait juste Ok. Ensuite il te propose de choisir la table à importer.
 
C'est tout :)

Reply

Marsh Posté le 21-12-2004 à 14:16:02    

Truc un peu plus automatisé :
 

Code :
  1. Const DSN = "DSN=bidule;UID=root;pwd="
  2. Const adSchemaTables = 20
  3. Dim tablesCpt
  4. Dim linesCpt
  5. Dim cnx
  6. Dim rs
  7. Dim schema
  8. Dim fic
  9. Dim el
  10. Dim str
  11. Dim fso
  12. tablesCpt = 0
  13. linesCpt = 0
  14. Set cnx = CreateObject("ADODB.Connection" )
  15. cnx.Open DSN
  16. Set rs = CreateObject("ADODB.RecordSet" )
  17. Set rs.ActiveConnection = cnx
  18. Set schema = cnx.OpenSchema(adSchemaTables)
  19. Set fso = CreateObject("Scripting.FileSystemObject" )
  20. Do While Not schema.EOF
  21.    If schema("TABLE_TYPE" ) = "TABLE" Then
  22.       tablesCpt = tablesCpt + 1
  23.       Set fic = fso.CreateTextFile(schema("TABLE_NAME" ) & ".csv", true)
  24.       rs.Open "select * from " & schema("TABLE_NAME" )
  25.       str = ""
  26.       For Each el in rs.Fields
  27.          str = str & Replace(el.Name, ";", "," ) & ";"
  28.       Next
  29.       fic.WriteLine(left(str, len(str) - 1))
  30.       Do While Not rs.EOF
  31.          linesCpt = linesCpt + 1
  32.          str = ""
  33.          For Each el in rs.Fields
  34.             On Error Resume Next
  35.             str = str & Replace(Replace(Replace(Replace(CStr("" & el.Value), ";", "," ), vbCr, "\n" ), vbLf, "" ), vbTab, "\t" ) & ";"
  36.             If Err <> 0 Then
  37.               str = str & "#ERROR#;"
  38.               Err.Clear
  39.             End If
  40.             On Error Goto 0
  41.          Next
  42.          if len(str) > 1 then
  43.             fic.WriteLine(left(str, len(str) - 1))
  44.          else
  45.             fic.WriteLine("" )
  46.          end if
  47.          rs.MoveNext
  48.       Loop
  49.       rs.Close
  50.       fic.Close
  51.       Set fic = Nothing
  52.   End If
  53.    schema.MoveNext
  54. Loop
  55. schema.Close
  56. cnx.Close
  57. Set fso = Nothing
  58. Set rs = Nothing
  59. Set schema = Nothing
  60. Set cnx = Nothing
  61. MsgBox("Ce script grandiose vous a été offert par MagicBuzz." & vbCrLf & linesCpt & " lignes réparties dans " & tablesCpt & " ont été correctement exportées." )


 
Tu fais le truc précédent jusqu'à ce que le DSN "bidule" soit créé.
 
Puis copie-colle ce script dans un fichier "toto.vbs" que tu vas enregistrer dans un répertoire.
 
Double-click sur le script.
 
Et zou ! T'as toutes les tables qui sont extraites sous forme de CSV dans le répertoire.
 
PS: Ca devrait marcher avec n'importe quel pont ODBC (Une base Access tout comme une base SQL Server, MySQL, Oracle pour tarte-aux-pruneaux)
 
Chercher l'intrus :D


Message édité par Arjuna le 21-12-2004 à 16:35:10
Reply

Marsh Posté le 21-12-2004 à 14:17:17    

FlorentG a écrit :

Dans Excel 2003, chez moi faut faire comme ça :
 
Tu lances Excel, puis tu fait Fichier\Ouvrir. Dans la liste de s fichiers, tu prend "Bases de données Access", puis tu ouvre ton .mdb.
 
Une boite de dialogue s'ouvre, et tu rentre compte et mot de passe s'il le faut. Si t'as pas de mot de passe, fait juste Ok. Ensuite il te propose de choisir la table à importer.
 
C'est tout :)


 
 
Ouais, mais je donnais la solution générique, parceque y'a que 2003 qui sait ouvrir directement une base Access.

Reply

Marsh Posté le 21-12-2004 à 14:17:57    

Arjuna a écrit :

Ouais, mais je donnais la solution générique, parceque y'a que 2003 qui sait ouvrir directement une base Access.


 
Ah ok...  :D

Reply

Marsh Posté le 21-12-2004 à 14:32:45    

J'ai corrigé le script, parceque sinon il ne fitrait pas correctement les tables système sur les bases autres qu'Access.


Message édité par Arjuna le 21-12-2004 à 14:32:58
Reply

Marsh Posté le 21-12-2004 à 14:32:45   

Reply

Marsh Posté le 21-12-2004 à 16:05:31    

Bravo Arjuna ;)
Ca pourra sans doute me servir

Reply

Marsh Posté le 21-12-2004 à 16:35:35    

Correction finale.
 
En effet, ça patatouillait avec MySQL :)

Reply

Marsh Posté le 22-12-2004 à 18:04:20    

OK merci à tous.
En effet ma version d'Excel ne permet pas la manip proposée pour ouvrir directement le .mdb.
J'étais sur la piste des sources ODBC, ss doute une erreur de procédure, je reprends avec ton descriptif Arjuna.
Pour le script je m'y penche plus tard, mais je sens le truc bien utile, donc bien joué et merci encore.

Reply

Marsh Posté le 22-12-2004 à 21:40:33    

Si tu as des problèmes avec mon script (pas pu tester dans de super bonnes conditions ;)), voici un lien qui je pense te sera très utile.
 
En tout cas, moi il m'a bien servi pour écrire le script ;)
 
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0

Reply

Marsh Posté le 22-12-2004 à 22:34:14    

Voilà de quoi approfondir la question. C'est noté :)!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed