A bug affecting Microsoft's Access database also affects a widely used database engine known as Jet, the company confirmed today, dramatically expanding the potential scope of the problem.
Today, a Microsoft executive acknowledged that under the right conditions, the bug can also affect Jet, which is the default database used with the company's popular Visual Basic development tool. Jet can also be used with other Microsoft development tools, such as Visual C++.
Jet is deployed in thousands of programs built using Visual Basic and other Microsoft tools. Visual Basic is among the most popular Windows development tools.
As first reported by CNET News.com, the bug affects the way Access handles changes to database records. The bug causes edits made on one Access database record to be saved to another record. In other words, in a typical business application, the bug could cause information associated with a particular customer or medical patient to be attached to the wrong account.
Microsoft yesterday confirmed that the bug extends to versions 2.0, 95, and 97 of Access.
John Duncan, a Microsoft Office product manager, confirmed that the bug does extend to Jet. But he added that for the bug to have any affect on Jet-based applications, developers would have to ignore the "standard industry accepted relational database design stated on [Microsoft's developer Web site] and in Microsoft documentation."
Duncan said that if programmers code an application, based on Jet, using the "return value of absolute position as a form of a bookmark, then you can potentially encounter this problem."
What that means in English is that if programmers make a reference to a particular row in a database table--if they "hardcode" the reference into their program--and then an earlier database record is deleted, then the database "pointer" would be looking for the wrong record. That would lead to data being recorded to the wrong place in the database.
Duncan said Microsoft has posted warnings on its Microsoft Developer Network site, and in documentation warned that programmers should not use this procedure, and that if they do they could run into the data loss problem.
According to Duncan, programmers would most likely not use the incorrect procedure in their applications because of the stated warnings, and because the hardcoded reference would degrade application performance.
"If they do this anyway, in a very complicated scenario, [developers] could potentially encounter this problem."
Duncan also said Microsoft is working on a patch for its Office application suite to fix the bug. He said "service release 2" is now in development, but he declined to give a date for its release. The patch will fix both the Access and Jet problems, he said.
The company has also posted a bulletin to its Web site that documents the bug's behavior, and suggests a method for resolving the problem.
Oracle, Microsoft's chief competitor in the database market, is wasting no time attempting to cash in on the software giant's misfortune.
Today, Oracle announced Oracle Migration Assistant, a tool to let Access users migrate their databases to the Oracle8 workgroup database. The company is also offering developer's licenses for its Oracle Lite database. The migration software is posted for free download to Oracle's Web site.
The bug was discovered by an Access developer last week and has since been reproduced by many users. Access developers, particularly independent consultants, fear that the bug could require reprogramming to applications already in use, and that existing user databases could be corrupted. Worse, the problem could result in improper billing, diagnoses, or other potentially disastrous legal issues, according to developers.
The problem is also particularly thorny because it can corrupt database records without users realizing that anything wrong has happened.
Access is used as the underlying database in many business applications, and is particularly popular with consultants and systems integrators building applications for small businesses, such as doctors' offices and insurance agencies.