Comment puis-je corriger ce bogue Access 2003? Entrée de données générant automatiquement une valeur

Je suis confronté à un problème de saisie de données dans MS Access et j'espère que quelqu'un pourra vous aider à comprendre pourquoi cela se produit et comment le résoudre.

J'ai une table de données qui est définie dans notre database SQL Server. La définition est ci-dessous, avec seulement les noms de champs modifiés.

CREATE TABLE [dbo].[MyTable]( [ID] [int] IDENTITY(1,1) NOT NULL, [TextField1] [nvarchar](10) NOT NULL, [TextField2] [nvarchar](50) NOT NULL, [Integer1] [int] NOT NULL CONSTRAINT [DF_MyTable_Integer1] DEFAULT (0), [Integer2] [int] NOT NULL, [LargerTextField] [nvarchar](300) NULL ) ON [PRIMARY] 

Comme vous pouvez le voir d'après la définition de ce tableau, il n'y a rien de spécial à ce sujet. Le problème que j'ai est avec une table de données liée dans une database MS Access 2003 qui lie via ODBC à cette table.

Après avoir défini et créé la table de données dans SQL Server, j'ai ouvert ma database Access active et je l'ai liée à la nouvelle table. Je dois créer manuellement les loggings qui appartiennent à cette table. Cependant, lorsque j'ai commencé à append les lignes de données, j'ai remarqué que lorsque je LargerTextField du LargerTextField à une nouvelle ligne, le LargerTextField était LargerTextField défaut sur ' 2 ', même si je n'avais rien entré ni défini une valeur par défaut champ?!

Initialement, j'ai besoin que ce champ soit Null . Je reviendrai plus tard et avec une routine de mise à jour peupler datatables. Mais pourquoi MS Access par défaut une valeur dans mon domaine, même si le schéma de la table ne définit clairement pas un? Quelqu'un at-il vu ceci ou a-t-il la moindre idée de la raison pour laquelle cela peut arriver?

MODIFIER

Une correction rapide, dès que je tabulation dans le LargerTextField , la valeur par défaut est ' 2 ', pas quand je tabulation. Petite différence subtile, mais peut-être importante.

En tant que test, j'ai également créé une nouvelle database MS nouvelle et reliée à la table. J'ai le même problème. Je suppose que cela pourrait être un problème avec MS SQL Server ou, éventuellement, ODBC.

Wow, problème résolu. Ce n'est pas un bug mais ce n'était certainement pas un comportement que je désire ou que je m'attendais.

Ce problème se produit en raison des données que Integer1 manuellement dans les champs Integer1 et Integer2 . Je Integer1 manuellement un 0 comme valeur de Integer1 et un 1 dans Integer2 . Je n'ai jamais vu Access assumer automatiquement mes inputs de données, mais il semble qu'il reconnaît datatables inputs séquentiellement.

En tant que test, j'ai entré un logging avec Integer1 mis à 1 et Integer2 à 2 . Effectivement, quand j'ai tabulé dans LargerTextField , la valeur de 3 été automatiquement remplie.

Je déteste que c'était un problème à cause de l'ignorance des users, mais, je vais être honnête, au cours de mes 10 dernières années d'utilisation de MS Access, je ne me souviens même pas avoir vu ce comportement. Je préférerais presque supprimer cette question pour sauver la face mais comme cela m'a pris au dépourvu et que je suis un user expérimenté, je pourrais aussi bien le laisser dans les archives de StackExchange pour d'autres qui pourraient avoir la même expérience. : /

À titre expérimental, lancez une toute nouvelle database Access et connectez-vous à cette table pour voir si vous obtenez le même comportement. Je soupçonne que cette database Access a été connectée à une table comme celle-ci dans le passé et avait cet set par défaut. L'access a du mal à oublier parfois 🙂