Field 'disappears' from table ...

R

Robin

Hi

I've had this happen a couple of times (and have worked out a workaround)
but was wondering whether anyone can shed any light on it.

I'll edit the design of a table by adding a new field and when I go to enter
data in it ... it's not there... so I attempt to remake the field and (if I
use the same name) I'm told that a field of that name already exists - but I
can't see it.

When this hapens in a table my workaround involves adding yet another field
(called something like 'empty') and the previous one reappears (but the
field called 'empty' is invisible)

Has anyone seen this before? Any explanations?

Thanks

Robin
 
A

Allen Browne

Never seen that. Something is wrong with the database.

You haven't just typed over the top of one of the fields, replacing it with
something else?

Try these basic repair steps.
1. Uncheck the boxes under:
Tools | Options | General | Name AutoCorrect
Explanation of why:
http://allenbrowne.com/bug-03.html

2. Compact the database to get rid of this junk:
Tools | Database Utilities | Compact/Repair

3. Close Access. Make a backup copy of the file. Decompile the database by
entering something like this at the command prompt while Access is not
running. It is all one line, and include the quotes:
"c:\Program Files\Microsoft office\office\msaccess.exe" /decompile
"c:\MyPath\MyDatabase.mdb"

4. Open Access (holding down the Shift key if you have any startup code),
and compact again.
 
R

Robin

Thanks for the quick reply Allen.

Your suggestions don't seem to have made any difference - I think there must
be some more basic corruption creeping in.

The problem has occurred before - I thought I'd better check first around
the Web if it was a well known glitch before I asked on a newsgroup - but
apparently not...

Robin
 
A

Allen Browne

You are saying that you eliminated the amazing Name AutoCorrupt feature as
suggested, performed a compact/repair, checked everything is okay, and then
as soon as you added a new field to your table, you instantly lost one of
your existing ones?

Something is *drastically* wrong here. Under rare circumstances, it is
possible for a field to go bad, but it is not possible for any normal
database to have a repeatable problem like that.
 
L

LauriS

When you say the field is 'invisible' and that you 'can't see it' - where?
Where are you entering data (datasheet view, a form, etc.)?

Lauri
 
R

Robin

That's not exactly what's happening... On odd occasions I make a new field
in design view, save the table and switch to data entry mode - and the *new*
field is nowhere to be seen. So I think, 'duh, forgot to save my changes'
and attempt to remake the field (using the same name) and get the message
that it can't be done as a field with that name already exists... So instead
of calling my new field "NewField", I call it "NewField1" - now when I go to
enter data, "NewField" is visible but "NewField1" is not.

So the last made field is always invisible...

Robin
 
R

Robin

After creatng the field in design mode and saving the table, I then try to
enter data but cant see the field - even in datasheet view. When I return to
the design view it's also missing the field (although the table still
believes it exists - see below.)

It's also not possible to 'see' the field if I refer to it by name in a
form. The form gives me an error as it can't find the field I refer to.

Robin
 
A

Allen Browne

If this happens with one particular table, it might be understandable. If
you can repeat this with any table in any database, I have no idea what's
going on.

A column can disappear from Datasheet view quite easily. A field
disappearing from Table view is rare.

It might help to programmatically loop through the fields in this TableDef,
and see if Access reports any that don't show in table design view. Here's
the code to loop the fields:
http://allenbrowne.com/func-06.html
It could be informative to examine the Attributes of the field as well, to
see if they are hidden or system fields.

I assume this is not a replicated database.
 
R

Robin

Before I do anything else - yes, it is a replicated database but these
disappearances are happening as I'm changing the table design - not after
replication or synchronisation.

I'll try your 'loop'
 
R

Robin

Before I do anything else - yes, it is a replicated database but these
disappearances are happening as I'm changing the table design - not after
replication or synchronisation.

I'll try your 'loop'
 
R

Robin

Interesting...

I've just run the 'Documenter' on the table and in the Object Definition
report the current 'invisible' field is documented...
 
A

Allen Browne

Okay it's there, but it's hidden for some reason, possibly associated with
replication.

What did the code reveal as the Name, Field Type, and Size of the field?

What does Access report as the Attributes of this field?
Open the Immediate Window (Ctrl+G), and enter:
? CurrentDb.TableDefs("Table1").Fields("Field1").Attributes
substituting your table and field names for Table1 and Field1.

The information about the field name, type, size, and attributes may help us
identify what's going on.
 
R

Robin

Allen

I've run your suggestion in the Immediate window and it merely returns the
answer "2". I've run it against other tables and fields at random but all I
get is an integer - is this correct?

Robin
 
A

Allen Browne

The attribute returns 2, which means it is a variable width field
(dbVariableField.) That makes sense for a Text field, but it makes no sense
for an AutoNumber field.

Earlier, I think you ran the code from:
http://allenbrowne.com/func-06.html
which showed the field.
What was the field name, field type, and size?
 
R

Robin

This is the field which was previously 'invisible':

Empty Text
50

AllowZeroLength: True

Attributes: Variable Length

CollatingOrder: General

ColumnHidden: False

ColumnOrder: Default

ColumnWidth: Default

DataUpdatable: False

DisplayControl: Text Box

IMEMode: 0

IMESentenceMode: 3

OrdinalPosition: 14

Required: False

SourceField: Empty

SourceTable: Health&Safety

UnicodeCompression: True



....and was made visible by adding the new invisible field:



Empty2 Text
50

AllowZeroLength: True

Attributes: Variable Length

CollatingOrder: General

ColumnHidden: False

ColumnOrder: Default

ColumnWidth: Default

DataUpdatable: False

DisplayControl: Text Box

IMEMode: 0

IMESentenceMode: 3

OrdinalPosition: 14

Required: False

SourceField: Empty2

SourceTable: Health&Safety

UnicodeCompression: True



I can't see any difference here...



Robin
 
A

Allen Browne

Okay, so it's a 50-char Text field, which makes sense of the previous result
that it is a variable-length field.

Empty is a keyword in VBA, but I don't see that as a reason why Access
should get it wrong as a field name. I just tested a field with that name
and the properties like yours, and it showed up fine.

The field attributes are not hiding it.
Replication is a potential issue.
I wonder if somehow the ordinalPosition has a duplication.
Otherwise it has to be some kind of corruption.

Not sure what else to suggest.
 
D

Duane Hookom

I have been lurking in this thread for a while. Is there an issue with using
an ampersand in the table name? Most of us "old-timers" use naming
conventions that would not allow symbols and spaces in object names so we
would probably not experience issues caused by this.

What happens if you copy your database and then change the name of the table
to something like tblHealthAndSafety? Does it still exhibit the same issues?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top