8000 Read forms and reports of the Access 2000 format by dominion525 · Pull Request #102 · dominion525/jetdb · GitHub
[go: up one dir, main page]

Skip to content

Read forms and reports of the Access 2000 format - #102

Merged
dominion525 merged 4 commits into
mainfrom
feature/form-access2000
Oct 19, 2026
Merged

dominion525 merged 4 commits into
mainfrom
feature/form-access2000

Conversation

@dominion525
Copy link
Copy Markdown
Owner

Summary

  • A form or report saved in the Access 2000 format came out empty: jetdb form props gave only its name. Its Blob, which starts with 0x13 (Version =19 in SaveAsText), keeps the design as a tree rather than property entries: lists of entries (FF and a count, or FE and one entry), each with a type, the acControlType of Access, and properties of an ID byte and a value whose size the ID tells. The new module form2000 reads it and gives the properties of the form or report itself and of its sections and controls, with the names and types of the controls. The 208 forms and reports of the format in the test data read to their last byte.
  • The IDs of the format are numbered in each type, so tables tie them to the IDs of Access 2002 and later (409 pairs), and a tied property holds its value as that ID does: text, a GUID, a Yes/No or a number. Names then come from the existing tables, and a property comes out with the same ID and name in either format. A property without a pair keeps its ID plus 0x8000, such as 0x80DD; most of them are properties a control keeps before its name in later formats, which jetdb does not read yet.
  • The pairs were found with new test databases made in Access for Microsoft 365 by testdata/form-generators/control-property-generator.bas: forms and reports of 16 control types with every property Access takes set to a value of its own, in the 2007 format and saved again in the 2000 format, with a copy of propertyIdTestV2007.accdb in the 2000 format. An ID of each format whose values across the same objects agree, and agree with no other ID, makes a pair; of the pairs whose names are known in both formats, all 307 have the same name. A new test reads both formats of these databases and checks that every tied ID holds the value of the later format.
  • docs/form-design.md / docs/form-design.ja.md describe the format and how the tables were made, and docs/cli.md / docs/cli.ja.md the IDs plus 0x8000.

🤖 Generated with Claude Code

dominion525 and others added 4 commits October 18, 2026 11:51
…ormat

- Add control-property-generator.bas, which makes forms and reports for 16 control types with every property set to a value of its own, and the database it made, with a copy saved in the Access 2000 format
- Add a copy of propertyIdTestV2007.accdb saved in the Access 2000 format
- Describe in SOURCES.md how they were made and which properties were left out after Access stopped on them

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The Access 2000 format (Blob version 0x13) keeps the design as a tree of entries with properties of an ID byte and a value: read it in form2000 and give the properties of the object, its sections and its controls, with the names and types of the controls, which were empty
- Give the IDs as the ID of the format plus 0x8000 (form2000::UNMAPPED), and the values as NotDefault for an ID without one, Short for 1 or 2 bytes, Long for 4 bytes, and bytes for a value of a length
- Name the control types of the format, the acControlType of Access, in control_type_name
- Add tests that the 208 forms and reports of the format in the test data read to the end, and of the types, names and values of their controls

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…cess 2002 and later

- Add tables that tie the IDs of the 2000 format to those of Access 2002 and later, for the form, the report and each entry type (409 pairs): the IDs whose values across the same forms and reports in both formats are the same, and those of no other ID. The 307 pairs whose names are known on both sides have the same names
- Give a tied ID the value as Access 2002 and later gives that ID, such as text, a GUID or a Yes/No, and an ID not in the tables plus 0x8000 as before
- Read 0xBD to 0xBF as values of a length, which were read as 4 bytes and fit only by chance with text of letters and digits
- Add a test that the tied IDs of the two databases of each format hold the values of the later format

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Describe in docs/form-design.md and docs/form-design.ja.md the tree of the Blob of the Access 2000 format, the sizes of its values, the entry types, and how the table to the IDs of Access 2002 and later was made and checked
- Say in docs/cli.md and docs/cli.ja.md that jetdb form props shows a property of the Access 2000 format without a pair as its ID plus 0x8000

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@dominion525
dominion525 merged commit ca2b27c into main Oct 19, 2026
10 checks passed
@dominion525
dominion525 deleted the feature/form-access2000 branch October 19, 2026 02:11
Sign up for free to join this conversation 6162 on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0