I am running Vista Ultimate 32 (x86) and 64 (x64) bit. The 64 bit version is faster because it allows some programs to run in 64 bit mode and it uses all of my installed memory. Vista 32 is limited to 3GB of memory.
Vista 64 comes with a 32 and 64 bit version of Internet Explorer 8.0. The 64 bit version is very fast but will not work with Adober Flash.
Programs installed on Vista 64 are put into c:\Program Files if they run in x64 mode. The 32 bit applications are put into c:\Program Files (x86). A programmer should check which folder his application is loaded to.
Visual Studio 2008 users who embed Access databases in their application without changing the default compile will get an error message on Vista 64.
There is no 64 bit version of the Jet.OLEDB.4.0 data provider. You need to compile the program in x86 mode as shown below.
Monday, September 7, 2009
First Experiences with Vista 64
Sunday, September 6, 2009
Concurrency problem with Jet Engine and Visual Basic 2008
We ran into a rather disturbing problem with Jet 4.0 engine and Visual Basic 2008.
A simple database with two tables. Company and people. If you add a company and move to the child table, people, you can not save the child entries due to a concurrency error. The error exist even if you save the parent entry manually before entering the child table. We repeated our logic with an identical SQL Express 2008 database and did not have any problem.
Though trial and error we found that you had to save the dataset and then reload it before entering the child table. The following is what we came up with:
Private Sub PeopleDataGridView_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PeopleDataGridView.Enter
Me.Validate()
Me.DateTextBox.Text = CStr(Now)
vAnswer = Me.IDTextBox.Text ' The control property Visable must be True for this to work. If you don't want user to see, hide it behind another control.
Me.Validate()
Me.MasterTableBindingSource.EndEdit()
Me.PeopleBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.BrooksMasterDB_DataDataSet)
Me.MasterTableTableAdapter.FillBy_RecordNumber(Me.BrooksMasterDB_DataDataSet.MasterTable, CInt(vAnswer))
Me.PeopleTableAdapter.Fill(Me.BrooksMasterDB_DataDataSet.People)
' The record number is negative if not saved and reloaded
If CInt(vAnswer) < 0 Then
Me.MasterTableTableAdapter.Fill(Me.BrooksMasterDB_DataDataSet.MasterTable)
Me.PeopleTableAdapter.Fill(Me.BrooksMasterDB_DataDataSet.People)
Me.MasterTableBindingSource.MoveLast()
End If
End Sub
The records should be in the ordered that they where entered.
Contact author at http://www.smallbsystems.com/