Bonsoir,
Oui, la démarche peut paraître complexe mais elle me semble plus claire à présent : le but était d'interfacer Access et Java, l'interface étant constitué d'une base SQLite... Après réflexion je pense que c'est faisable. Un moment j'ai pensé utiliser une base de données sous forme de fichiers textes (csv) mais cette solution est trop statique. Je donne donc une piste pour SQLite :
1) depuis Java c'est "simple" d'utiliser un pilote pour SQLite. Je propose SQLiteJDBC (http://zentus.com/sqlitejdbc/ ) mais je ne le connais pas et il peut y avoir d'autres produits. Donc, lors de la création de l'instance d'une liste, on prépare une table d'une base SQLite. Puis lors des méthodes ADD, on recopie les données dans la table. Ainsi, pour les instructions
commandes = new ArrayList<Commande>();
on devrait avoir un id correspondant à l'objet "commandes" d'initialisé.
Ensuite, pour une instruction
commandes.ADD(new Commande("produit 1", 100, 101));
on crée une ligne du genre
insert into mesTraces values ("commandes","produit 1",100,101)
La structure de la table mesTraces pouvant également contenir un timestamp de création automatique, un autre de mise à jour ... bref une collection d'éléments permettant de suivre l'information.
Jusque là, tout est réalisable. On peut faire quelques tâtonnements ou une implémentation partielle de l'idée afin de ne pas perdre son temps sur une solution inutilisable. Je ne peux guère donner plus d'information, je ne travaille pas avec Java et je n'ai pas le temps de créer un environnement d'essai pour valider le concept... désolé. Mais je vais me rattraper avec VBA (Access).
2) On teste le résultat. En effet, on peut très bien se connecter sous DOS, Windows ou Linux à cette base, en lire le contenu, en faire une copie... bref des tests qui ne coûtent rien.
3) Si l'alimentation semble possible et que la lecture l'est également, on attaque le côté Access. On installe un pilote ODBC sur le poste Windows ( http://www.ch-werner.de/sqliteodbc/ ). Je n'ai pas Access, mais j'ai installé Outlook 2003 pour tester le principe en VBA. Je crée une base d'essais :
1 2 3 4 5 6 7 8
|
C:\>sqlite3 mabase.db
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table mesTraces ( objname text, produit text, quantite number, prix number);
sqlite> INSERT INTO mesTraces VALUES ("commandes","produit 1",100,101);
sqlite> .exit |
Depuis le panneau de configuration, je trouve les outils d'administration et je sélectionne "Sources de données (ODBC)". Dans "Sources de données système", je modifie la source "SQLite3 Datasource" qui s'est créée en installant le pilote ODBC de Werner. Je fais donc pointer cette source sur mon fichier "C:\mabase.db". Hop, je valide, c'est prêt.
Depuis Outlook, j'ouvre un nouveau module dans les macros (VBA). Dans "Outils / Références", je sélectionne "Microsoft DAO 3.6 Object Library" : ce composant me permet de lire et d'écrire dans une base Access sans posséder le logiciel, mais également de tester une connexion ODBC !
Dernier petit code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Option Explicit
Public Sub essai()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strConnect As String
strConnect = "ODBC;DSN=SQLite3 Datasource;"
Set db = OpenDatabase("SQLite3 Datasource", False, False, strConnect)
' Information sur la connexion :
Debug.Print db.Connect
Set rs = db.OpenRecordset("select produit from mesTraces", dbOpenDynaset, dbReadOnly)
Do While Not rs.EOF
Debug.Print rs.Fields(0).Value
rs.MoveNext
Loop
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub |
Et voilà le travail, on arrive à lire la table "mesTraces" depuis Outlook 2003, et on peut le faire de la même façon depuis un quelconque produit Office 97 à 2003. Pour les versions supérieures, désolé... j'ai laissé tombé MsOffice pour OpenOffice. Mais ce devrait être pareil.
Courage,
a+
Partager