{
  "id": "1997-july-the-data-they-are-a-changin",
  "slug": "1997-july-the-data-they-are-a-changin",
  "url": "https://dwillis.github.io/uplink/article/1997-july-the-data-they-are-a-changin.html",
  "year": 1997,
  "month": "July",
  "monthNum": 7,
  "headline": "The data, they are a changin'",
  "kicker": "Tech Tip",
  "author_name": "Richard Mullins",
  "author_title": "",
  "affiliation": "NICAR",
  "summary": "This article explains how to perform basic data manipulation tasks like updating and deleting records in both Access and FoxPro databases, comparing the syntax and safety features of each system.",
  "keywords": [
    "database",
    "SQL",
    "FoxPro"
  ],
  "topics": [
    "Data & Databases",
    "Technology"
  ],
  "technologies": [
    "FoxPro",
    "Access",
    "SQL"
  ],
  "full_text": "Sometimes you need to make changes in your data - cleanup, standardization, etc. A question often heard in NICAR bootcamps is something like \"I know how to do this in FoxPro, but I don't know how to do it in Access.\" Since the reverse of this question also comes up, I'll cover the basics of both.\n\nUpdating data\n\nHere is the query in Access:\n\nUPDATE Contribs SET NewOccupation = \"Homemaker\" WHERE Occupation = \"Housewife\"\n\nThis is how to do the same thing in FoxPro: there are two commands typed in the command window.\n\nUSE Contribs REPLACE ALL ; NewOccupation WITH \"Homemaker\" ; FOR Occupation = \"Housewife\"\n\nIn FoxPro, the table you are working on is defined first, in a separate command (\"use,\" which is the same as going through the File/Open dialog box.) In Access, the table to work on is specified after the word UPDATE. The words are different, but they have in common a way to define the column to work on, the text to put in it and which rows to perform the change.\n\nDeleting data\n\nAccess:\nMaybe you won't use this as often, and never on the only copy of original data. Uplink readers would never commit a blunder like that.\n\nAnyway, in creating a subset of a larger data set, sometimes you make the first cut by creating a new table based on rows meeting a certain criteria.\n\nYou could do subsequent delete commands to further whittle down that table. This SQL command in Access will delete all rows where the occupation field contains \"ATTORNEY\" DELETE FROM Contribs WHERE Occupation = \"ATTORNEY\"\n\nAccess tells you how many records will be deleted before it actually deletes the records. If you click cancel on the message box, nothing happens and the records remain. If you click OK, Access deletes the records and you can't retrieve them.\n\nFoxPro\n\nUSE Contribs DELETE FOR Occupation = \"ATTORNEY\"\n\nAgain, FoxPro takes two commands to do what is specified in one command in SQL and Access. After FoxPro command, the records fitting the specified condition are only marked for deletion; they still remain in the table. You can still RECALL the records. This next command does the deletion and is not reversible.\n\nPACK\n\nFoxPro will not give you a prompt before this command is carried out. If you say \"oops,\" the next thing you say as the smart Uplink TechTip reader that you are: \"I'm glad I have a backup.\"\n\nRichard Mullins can be reached at (573) 882-2127, or send e-mail to richard@nicar.org",
  "provenance": {
    "extracted_by": "anthropic/claude-sonnet-4-6",
    "extracted_at": "2026-07-05",
    "verified": true
  },
  "similar": [
    {
      "slug": "1996-august-switching-from-foxpro-to-access",
      "score": 0.403
    },
    {
      "slug": "1997-may-cheating-at-foxpro",
      "score": 0.295
    },
    {
      "slug": "1998-april-foxpro-to-access-and-back-again",
      "score": 0.288
    },
    {
      "slug": "1992-october-foxpro-adds-a-new-dimension-to-sql",
      "score": 0.283
    },
    {
      "slug": "2004-november-automate-common-tasks-with-foxpro-programs",
      "score": 0.258
    }
  ],
  "html_url": "https://dwillis.github.io/uplink/article/1997-july-the-data-they-are-a-changin.html",
  "json_url": "https://dwillis.github.io/uplink/article/1997-july-the-data-they-are-a-changin.json"
}