Link to home
Start Free TrialLog in
Avatar of nfernand
nfernand

asked on

DataGrid and BeforeUpdate

Hi guys... this is my problem.

In a form I have:
1) One Datagrid, linked to an AdoData control. this works ok.
3) All fields must be filled (IMPORTANT). This is a rule into the table (MDB).
4) A CommandButton.
5) A Sub (CancelAdd) for canceling row adds in the DataGrid.

How this works:
1) When I want to add a registry I press the "Add" CommandButton. This is Ok.
2) To cancel the add before or after filling some or all field I press ESC and the CancelAdd sub is called. This is ok.
3) The CancelAdd Sub do:
DataGrid1.AllowUpdate=False
DataGrid1.AllowAddNew=False
And locate the cursor in another cell. This is Ok too.

But...
4) There is a button to cancel the adding too. When I press it, it calls the same CancelAdd sub, and gives me an error: "Blank fields are not allowed" (because of the table's rules).

The first method (ESC) is called from DataGrid_KeyUp, the second in Command1_Click.

The only one difference I've notice when I click on the button is that the DataGrid1_BeforeUpdate event is activated, but doing it with ESC the BeforeUpdate is not called.

If I Cancel the BeforeUpdate, It wont let me get out of the registry, and the cursor stays in the last row even allowupdate or allowaddnew are disable.

What the hell happens here?
ASKER CERTIFIED SOLUTION
Avatar of jgv
jgv

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of nfernand
nfernand

ASKER

Good man.... I've never had imagined something like that.  Thanks.
No sweat :)

One thing that you have to keep in mind when working with a bound DataGrid is that it is a tool used to display and make limited changes to the contents of an existing recordset. Half the things you can't do with the grid can be done with the recordset, which are then reflected in the grid.

It took me awhile to start 'thinking out of the box' (grid in this case) but it's a trap that's easy to fall into :)