2014-04-29 5 views
1

J'ai une base de données d'accès que nous utilisons pour les solutions de reporting simples, cela tire des données à partir d'une base de données à distance via un lien ODBC. Le fournisseur d'entrepôt de données a récemment ajouté un nouveau champ de données à toutes ses tables qui est formaté comme 'BIGINT'MS - Accès BigInt SQL SERVER Problèmes

L'accès affiche maintenant tous les enregistrements comme étant supprimés car il ne peut pas traiter la table liée BIGINT.

Comme l'entrepôt de données ne changera pas leurs tables, est-ce que je peux obtenir l'affichage MS-Access correctement et ignorer le champ 'BIGINT' dans la liaison de table?

J'ai à travailler autour de ce à ce moment dans le temps en copiant l'ensemble de l'entrepôt de données moins cette colonne à un jour MYSQL DB qui est loin d'être idéal ...

Je ne peux pas pour la vie de moi travail cette sortie.

Répondre

1

Ce lien suggère de charger les données dans une table locale avec un type de chaîne de données:

http://social.msdn.microsoft.com/Forums/office/en-US/fb6f99ec-2ed7-487b-ba39-0777a0b44d5f/the-bigint-problem?forum=accessdev

considèrent peut-être que l'utilité de MS Access est limité ici et il peut payer pour utiliser SQL Server à l'avenir comme vous allez continuer à rencontrer ce genre de problèmes. Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser directement le datawarehouse? Vous pouvez également envisager d'utiliser un .ADP (un type de fichier de MS Access) qui a une connexion OLE DB native à la base de données SQL Server (pas de flimflammery ODBC) mais également tous les formulaires et rapports habituels.

Les ADP sont obsolètes mais j'ai eu beaucoup de succès avec eux.

+0

Merci pour votre réponse, SQL Server est je suis d'accord le meilleur port d'escale que le datawarehouse que nous utilisons a presque tout ce que nous faisons verrouillé et les rapports que nous pouvons exécuter directement sont limités.Il entre en jeu car l'accès est l'interface la plus simple pour relier la multitude de systèmes sur lesquels nous nous appuyons. Le serveur SQL n'autorise pas la flexibilité de l'accès. –

+0

Je vais regarder le .ADP et si cela ne fonctionne pas, je m'attends à avoir à retravailler toutes nos solutions et à construire une toute nouvelle solution qui, bien que ce fût le but ultime, n'est pas ce que je voudrais entreprendre en ce moment ... –

+0

Comme ADP s'exécute sur OLE DB pas Jet, ce serait surtout une réécriture sur cette plate-forme, mais jetez un oeil. –

0

Il s'agit d'un ancien thread, mais vous pouvez créer une vue et convertir le bigint en entier, puis Access y créera un lien.

Greg

0

Ceci est un vieux fil, mais:

votre casting bigint en tant int que quelqu'un a suggéré ne va pas fonctionner si l'une de vos valeurs dans votre colonne bigint sont plus grands que le maximum valeur pour un int (et si aucun d'eux n'est plus grand que la valeur maximale pour un int, on se demande pourquoi un bigint est utilisé en premier lieu).

MS Access (à partir d'Access 2000 et versions ultérieures) a un type de données decimal, ce qui est bon pour les nombres allant jusqu'à la taille maximale d'un serveur SQL Server bigint et plus. Donc, si vous rendez votre champ MS Access de type decimal, il peut gérer tout ce qu'un serveur SQL Server bigint peut y lancer. Dans votre processus de prise des données de la base de données SQL Server dans votre base de données MS Access, vous devez faire quelque chose de manière programmée pour slurp vos valeurs bigint à partir de SQL Server et les injecter dans MS Access comme decimal

2

Au lieu d'utiliser un table liée, écrivez simplement une requête passthru dans Access. Eventuellement CONVERT votre BigInt dans une chaîne ou un entier, selon le contenu.

+0

Une vue peut fonctionner, selon l'importance de la colonne. Il peut également être important d'ajouter un index. – Fionnuala

Questions connexes