2010-09-20 7 views
-1

J'ai une base de données Access 2007 avec une fonction de pièces jointes. Actuellement, le client peut télécharger des fichiers localement mais les fichiers ne sont pas accessibles ailleurs. J'ai été capable d'effectuer une opération similaire lors du développement sur un système basé sur le Web mais je ne peux pas sembler le faire sur une base de données Access 2007 et je ne sais pas si c'est même possible. Fondamentalement, le système doit se connecter au serveur SQL en ligne et télécharger le fichier même si la base de données n'est pas en ligne elle-même. Je serais reconnaissant pour les pointeurs!Accès 2007 au téléchargement de fichiers du serveur SQL?

+0

Votre terminologie est très, très confuse. Il n'est pas clair si vous avez un ACCDB Access non fendu avec des tables et des formulaires et tel dans un fichier, ou si vous avez un frontal ACCDB à une base de données SQL Server. –

+0

Il s'agit d'un Access ACCDB, en disant «le système doit se connecter au serveur sql en ligne». Je pensais qu'il serait clair qu'il n'est actuellement pas connecté au serveur sql. Merci pour la réponse. –

+0

Votre question est tout aussi troublante car votre dernière phrase ne corrige pas l'ambiguïté de ce à quoi le mot "base de données" se réfère - voulez-vous dire le SQL Server ou le fichier ACCDB? –

Répondre

0

J'ai fait face à cette situation. Voici vos choix:

  1. champ Utiliser de fixation dans un accès partagé ACCDB - ne fonctionnera pas très bien « en ligne », mais vous pouvez garer la ACCDB sur votre réseau local et en faire une ACCDB séparée back-end partagé par tous. Votre message ne dit pas si vos utilisateurs sont locaux ou "en ligne" - et si "en ligne" signifie web.

  2. Utilisez les champs VarChar (Max) (ou BLOB) dans SQL-Server pour stocker les pièces jointes. Mais, vous ne pouvez pas les remplir facilement à partir d'Access. En supposant que vous contrôlez le serveur sur lequel SQL Server est en cours d'exécution, vous pouvez utiliser ADO dans Access pour télécharger un VarChar (Max) à l'aide de la commande bulkinsert T-SQL. Cela fonctionne plutôt bien et c'est facile.

  3. Créer une page Web de téléchargement. Utilisez l'automatisation iExplorer (par exemple, créez un objet iExplorer) dans VBA pour accéder à cette page, remplissez-la et appuyez sur le bouton de téléchargement. Pour des raisons de sécurité, vous ne pouvez pas utiliser l'automatisation pour remplir un contrôle de téléchargement de fichier, mais vous pouvez utiliser sendkeys. Cela ne fonctionne pas parfaitement - parfois vous devez répéter le processus une ou deux fois, mais cela fonctionne plutôt bien s'il est invoqué par un utilisateur qui peut valider son fonctionnement. C'est ce que j'ai fait - la solution la plus simple.

  4. La meilleure solution est probablement de créer un service Web en utilisant WCF pour gérer le téléchargement. Il y a beaucoup de messages sur comment encoder et décoder des tableaux d'octets pour stocker des fichiers comme VarChar (Max). Cela fonctionne extrêmement bien. Malheureusement, Access ne peut pas consommer directement les services Web autant que j'ai pu le dire, donc vous devrez écrire un petit programme vb.net pour le faire et l'appeler depuis Access.

  5. Vous pouvez stocker les fichiers/pièces jointes en dehors de SQL/Server - uniquement sur le serveur et ne stocker que les liens/URL de ces fichiers dans Access. Vous pourriez rendre chacun lavable. C'est facile mais plus difficile à contrôler la sécurité.

  6. Vous pouvez utiliser Sharepoint pour stocker/partager les pièces jointes. Cela peut fonctionner assez bien en fonction de la taille des pièces jointes et de votre connectivité. C'est construit pour supporter ça.

L'accès autorise plusieurs pièces jointes dans un enregistrement. SQL/Server ne supporte pas cela. Donc, si vous pouvez diviser votre ACCDB en un frontal pour les programmes seulement et l'ACCDB back-end qui est partageable par vos utilisateurs pour contenir les données/pièces jointes, c'est de loin la réponse la plus facile.

Questions connexes