Menu

#2 Support writing access 97 file format

Unnassigned
open
nobody
None
9
2020-07-31
2006-07-01
M.J. Soft
No

It would be interesting a backport to manage Jet 3
files.

Discussion

  • F. Gerbig

    F. Gerbig - 2010-04-01

    Hi,

    any news on this?
    I have to deal with many access databases in this format and it would really help me :-)

    Kind regards,
    Frank.

     
  • F. Gerbig

    F. Gerbig - 2010-04-15

    Hi,

    in mdbtools-java I found the following:

    MdbJet3Constants.pg_size = 2048;
    MdbJet3Constants.row_count_offset = 0x08;
    MdbJet3Constants.tab_num_rows_offset = 12;
    MdbJet3Constants.tab_num_cols_offset = 25;
    MdbJet3Constants.tab_num_idxs_offset = 27;
    MdbJet3Constants.tab_num_ridxs_offset = 31;
    MdbJet3Constants.tab_usage_map_offset = 35;
    MdbJet3Constants.tab_first_dpg_offset = 36;
    MdbJet3Constants.tab_cols_start_offset = 43;
    MdbJet3Constants.tab_ridx_entry_size = 8;
    MdbJet3Constants.col_fixed_offset = 13;
    MdbJet3Constants.col_size_offset = 16;
    MdbJet3Constants.col_num_offset = 1;
    MdbJet3Constants.tab_col_entry_size = 18;
    
    MdbJet4Constants.pg_size = 4096;
    MdbJet4Constants.row_count_offset = 0x0c;
    MdbJet4Constants.tab_num_rows_offset = 12;
    MdbJet4Constants.tab_num_cols_offset = 45;
    MdbJet4Constants.tab_num_idxs_offset = 47;
    MdbJet4Constants.tab_num_ridxs_offset = 51;
    MdbJet4Constants.tab_usage_map_offset = 55;
    MdbJet4Constants.tab_first_dpg_offset = 56;
    MdbJet4Constants.tab_cols_start_offset = 63;
    MdbJet4Constants.tab_ridx_entry_size = 12;
    MdbJet4Constants.col_fixed_offset = 15;
    MdbJet4Constants.col_size_offset = 23;
    MdbJet4Constants.col_num_offset = 5;
    MdbJet4Constants.tab_col_entry_size = 25;
    

    Perhaps this helps?

    Kind regards,
    Frank.

     
  • James Ahlborn

    James Ahlborn - 2010-08-02

    as of the 1.2.1 release jackcess supports reading jet3 database files.

     
  • Danny Leshem

    Danny Leshem - 2010-08-03

    Thanks! This is an extremely useful addition.

    I've been trying it on some JET3 mdb files, with varying results. Following are the first 160 bytes (in hex format) of an MDB file that didn't work (threw java.lang.IndexOutOfBoundsException):

    000100005374616E64617264204A65742044420000000000B56E03626009C255E9A96772403F009C7E9F90FF859A31C579BAED30BCDFCC9D63D9E9C79C46116A58F286FBEC375D449CFAC65E28E613B68A6054947B36F57FDFB177F41343CFAFB1333461795B92B57C2A05F17C99011B98FD124F4A946C3E60265F95F8D089248567C61F2744D2EECF65EDFF07C746A178160CEDE92D00000000000000000000

    (sorry, I can't seem to find a way to attach files)

     
  • James Ahlborn

    James Ahlborn - 2011-11-12

    dleshem - sorry, i somehow missed your comment. you can attach a file by scrolling to the bottom of this screen and clicking on the "Attached File" section. or, better yet, you could file a separate bug and attach your problem database there. (note, there have been some fixes, so you should try the latest jackcess version first).

     
  • Anonymous

    Anonymous - 2011-11-12

    jahlborn - thanks! Jackcess 1.2.5 indeed managed to open my files. Good job!

     

    Last edit: Anonymous 2014-07-02
  • James Ahlborn

    James Ahlborn - 2012-10-16
    • summary: Support access 97 file format --> Support writing access 97 file format
    • milestone: --> Next_Release_(example)
     
  • James Ahlborn

    James Ahlborn - 2013-11-15
    • Priority: 1 --> 9
     
  • KillerAll

    KillerAll - 2015-03-02

    Hi,

    How can I help to do this?

    Is there any documentation about Jet 3?

    Thanks

     
    • James Ahlborn

      James Ahlborn - 2015-03-02

      This is the closest thing to documentation of the file format:

      https://github.com/brianb/mdbtools/blob/master/HACKING

       
  • Oleg

    Oleg - 2019-07-29

    Hello. Is there any news about that topic? It's been a while from lst messedge, but maybe anyone has any solution? I desperately need this feature. So desperately that i might be forced to make it on my own. Maybe someone knows why there is no Access97 write support? Is it because noone needs it or there is some technical issues? Would appreciate any help. Thank you.

     

    Last edit: Oleg 2019-07-29
    • James Ahlborn

      James Ahlborn - 2019-07-29

      Very little demand, sorry. I'm not aware of any technical issue other than that the code hasn't been written yet (well, maybe understanding indexes). as i mentioned above, the jet3 format is documented and fairly well understood (as jackcess can read jet3 databases), but not completely (jackcess cannot read jet3 indexes). in terms of implementing it within jackcess, the writing code may make more assumptions about the file format (i.e. not always use the relevant JetFormat parameters) than it should. You can see the scope of the initial changes to support reading 97 databases here: https://sourceforge.net/p/jackcess/code/475/ .

       
      • Oleg

        Oleg - 2019-07-30

        "Very little demand..." - knew that) Thank you for your response and help. I'm trying to guees how much time will it take to implement this feature in code. Do you have a guess?

         
        • James Ahlborn

          James Ahlborn - 2019-07-31

          ha, that's a very hard thing to guess. i'm obviously very familiar with the code base. i have a vague idea of some of the differences (creating/initializing new database pages with different parameters) which probably aren't rocket science to sort out. I would imaging that would take me a day or two to sort out. there's a different format for some values (for which jackcess already has the reading code) that would need to be implemented on the writing side, probably another half day. then there's the whole index thing which doesn't work right now on the reading side, so you'd either need to figure out how indexes work or settle for writing tables w/out indexes (although adding a new table involves updating the system table which has an index, so that might be problematic). no idea the time frame for solving that. this, of course, is estimated based on my familiarity w/ the code. it will be very different for someone relatively new to the code base.

           

          Last edit: James Ahlborn 2019-07-31
          • James Ahlborn

            James Ahlborn - 2019-08-19

            @Oleg did you ever decide whether it was worth it or not? I'll throw out one modification to my previous comment. your updates to this thread got me thinking about access 97 indexes. i had a little free time recently, and i was able to work out how access 97 text indexes work, so that particular issue can be removed from the list.

             
            • James Ahlborn

              James Ahlborn - 2020-07-31

              Access 97 indexes are supported as of the 3.5.0 release.

               
  • Oleg

    Oleg - 2019-08-19

    @jahlborn
    Hello, James. First of all thank you for your help in this topic and in almost every one that i found at Stackoverflow when "google" my problem)
    About your question:
    It's more my boss decision than mine. And he didn't decide yet, he wants to get rid of "legacy" software that uses 97 format or to make me solve that issue at all costs.
    What about me: it's deprecated format and as you said - "there is no demand for that". So one part of me whants to say it's not worth it, but my other part wants to try implement that, especially if i will have to) If that feature will help someone besides me than maybe it's worth, otherwise it's not.

     

    Last edit: Oleg 2019-08-19
    • Dean Mercer

      Dean Mercer - 2019-09-20

      Hi @Oleg,
      The feature would certainly help me.

       
  • Luis Esparza

    Luis Esparza - 2019-11-26

    Hi,
    I would also love to have that feature, it is a critical feature for my current job, not really familiar with Jet but let me know If I could help with anything

     

Log in to post a comment.

MongoDB Logo MongoDB