Alpha Video Training
Results 1 to 6 of 6

Thread: Memo field and Global Update

  1. #1
    Member
    Real Name
    Alex Wieder
    Join Date
    Jan 2004
    Posts
    25

    Default Memo field and Global Update

    Hi,

    We just found out that there's corruption affecting the memo field of one of our tables. The memos are out of sync with the dbf.

    For example, if you look at record #1500, the memo shows what belongs really to record #1502. Just so you know, not all the memo's are off by a few records, so it varies.

    I found an old backup that has memos that appear to be correct.

    I tried creating a set with both tables and update the new table's Memo field with the contents of the old table's memo field, but I get the following message when I hit <F10> to continue on the global update:

    "Equation type must be same as field type"

    Am I hitting another limitation in Alpha4 or is there a way to update the new table's memo field with the contents of the old table's memo field?

    Please help!!!!

    Thanks!

    Alex

  2. #2
    Volunteer Moderator
    Real Name
    Alan Buchholz
    Join Date
    Oct 2000
    Location
    Delavan, Wisconsin
    Posts
    9,628

    Default Re: Memo field and Global Update

    Alex

    Memo corruption is solved by a few methods. Most are not easy..

    1. Go to a backup prior to the corruption.
    2. Get a tool to fix it. One that I've used is Dsalvage.
    3. Delete the memo field, add the memo field back in and rekey all the data...

    Hope That Helps
    Al Buchholz
    Bookwood Systems, LTD
    Weekly QReportBuilder Webinars Thursday 1 pm CST

    Occam's Razor - KISS
    Normalize till it hurts - De-normalize till it works.
    Advice offered and questions asked in the spirit of learning how to fish is better than someone giving you a fish.
    When we triage a problem it is much easier to read sample systems than to read a mind.

  3. #3
    Member
    Real Name
    Moy Wong
    Join Date
    Feb 2008
    Posts
    9

    Default Re: Memo field and Global Update

    Hello,

    If you're desperate and are willing to do some hacking and you know that the memo fields are NOT being updated often, you might experiment with the following. Of course, use all proper precautions not to lose live data. Results of this technique will vary greatly depending on the manner in which the memos have been updated since the last backup--but you may get lucky.

    Copy only the afflicted database's .DBF file to a temporary folder, then copy a *backup* copy of the database's .DBT to the same folder.

    Open the database. Do not index.

    Examine the records to see if they make sense.

    If the results are satisfactory, use A4 to copy all records to a new database in the temporary folder.

    The new database .DBF/.DBF pair may then work if used to replace the afflicted database pair. You may have to reindex after such a replacement.

    Hope this helps.

    -moy

  4. #4
    Member
    Real Name
    Alex Wieder
    Join Date
    Jan 2004
    Posts
    25

    Default Re: Memo field and Global Update

    Hi Al,

    Not a lot of fun to rekey data for up to 600,000 records, so this isn't really a feasible solution. Thanks for suggesting dSalvage, though.

    Alex

  5. #5
    Member
    Real Name
    Alex Wieder
    Join Date
    Jan 2004
    Posts
    25

    Default Re: Memo field and Global Update

    Hi Moy,

    The memo fields are updated constantly (this is a very active database).

    Your idea seems sound except that if they packed the database between the time the backup was created and today (very very very likely) the memo fields will be out of sync when I open the new dbf with the old dbt.

    I have come up with another alternative that might work.

    Since I can't update the memo fields in the damaged database with those in the backup, I've decided to try to work WITH alpha4 and bend to its will.

    I will create a set relating the backup to the current table and update the backup with all the fields EXCEPT the backup (which Alpha4 doesn't allow), and then append the new records, thus creating a new table where the memo fields are all in sync.

    As soon as I get my client's blessing I'll get to it.

    Thanks!

    Alex


    Quote Originally Posted by moy View Post
    Hello,

    If you're desperate and are willing to do some hacking and you know that the memo fields are NOT being updated often, you might experiment with the following. Of course, use all proper precautions not to lose live data. Results of this technique will vary greatly depending on the manner in which the memos have been updated since the last backup--but you may get lucky.

    Copy only the afflicted database's .DBF file to a temporary folder, then copy a *backup* copy of the database's .DBT to the same folder.

    Open the database. Do not index.

    Examine the records to see if they make sense.

    If the results are satisfactory, use A4 to copy all records to a new database in the temporary folder.

    The new database .DBF/.DBF pair may then work if used to replace the afflicted database pair. You may have to reindex after such a replacement.

    Hope this helps.

    -moy

  6. #6
    Member
    Real Name
    Moy Wong
    Join Date
    Feb 2008
    Posts
    9

    Default Re: Memo field and Global Update

    Hello Alex,

    Yes, a database that is "packed" often may goof up your data recovery efforts.

    However, if I recall correctly, "pack" simply removes records from the .DBF that are marked as "deleted," then updates the attached indexes. I can't remember WHAT, if anything, "pack" does to the .DBT portion of the .DBF/.DBT pair. Since a memo "field" is simply a pointer into the .DBT, there *still* might be the possibility that the memos themselves are largely intact.

    The challenge is then to populate the .DBF with the correct pointers into the .DBT, whether you go with the current .DBT or a .DBT restored from a backup.

    To avoid exactly this kind of corruption, I don't often use memo fields in my databases, except as a sort of dumping ground for *very* non-mission-critical text. Instead of a memo field, I tend to use (1) one really long character field, (2) a record id key to link to a second database that has several Really Long Character Fields, or (3) a script to shell to DOS and spawn a text editor that edits a text file with the record key's name.

    I had even toyed with the idea of having a script automatically insert the record key somewhere into the memo (for recovery purposes), but this just seemed too flaky and easy to break.

    On a related note, I once devised a technique for reading ALL the memo field data from a .DBT (including edited or deleted ones). Perhaps a variation of this method might prove useful for reconnecting the .DBF records to the "lost" .DBT memo data. The concept went something like this (pardon my rusty memory):

    Use A4 to create a dummy database with two, 10-character fields

    populate database with lots of records

    the first record should contain "1" in both fields, the second record contains two "2" etc.

    Close A4

    in DOS, copy .DBT file to same folder as the dummy database you just created

    rename .DBT file name to match .DBF file name

    use a hex editor to change the flag byte in the .DBF header that indicates a .DBT is attached (I can look up this info later). Edit the second character field's type to indicate memo.

    Launch A4 and open database again--you may need to reformat the browse or form to display the memo properly. You should be able to view memos in the order in which they were saved.

    Whew! That was a mouthful and I am sure I have missed something, but what I do remember is that I was able to successfully prove this concept with test databases. So something like this can be used to convert the problem to one of re-keying *pointers* instead of re-keying *memos," however impractical either method is.

    Good luck with all your efforts!

    -moy

Similar Threads

  1. Cannot Update Memo Field
    By Rich Hartnett in forum Application Server Version 8
    Replies: 0
    Last Post: 10-09-2007, 04:16 PM
  2. Global UPdate
    By Howard R. Elkes in forum Alpha Five Version 8
    Replies: 2
    Last Post: 03-23-2007, 05:18 PM
  3. Memo field in Grid with update function
    By dchiass in forum Web Application Server v7
    Replies: 11
    Last Post: 02-03-2007, 01:14 PM
  4. global update
    By Cheryl Lemire in forum Alpha Four Versions 7 and 8
    Replies: 3
    Last Post: 05-19-2004, 05:44 AM
  5. how to do global update
    By Steve Pick in forum Alpha Five Version 4
    Replies: 2
    Last Post: 03-29-2002, 06:09 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •