don't save empty row in table

S

Smoki

Hy,
I have a question. When I open my form, but I decide not to save that
record, I delete everything from fields in form, but when I close my form,
and open the table, I see that I have 1 empty row in my table.
Does anyone have idea how to aviod this empty row?
 
B

BruceM

As I understand it, pressing Esc once will clear the current control;
pressing Esc twice is the same as Undo in VBA -- it clears all fields in the
unsaved record).
A command button with Me.Undo as its click event is another way to clear the
current record. However, it is not clear whether you have entered any data
before you decide not to create a record. Does the empty row have an
asterisk at the left side? If so, that row represents the new record, and
will be there when you open the table in datasheet view. However, if there
is a blank row other than that one you are saving the record.
 
N

NetworkTrade

consider adding a conditional me.dirty=true to the close event

something along the line

If IsNull(me.AVeryKeyField) then
me.dirty=true
End If
 
S

Smoki

I know that empty row with asterisk represents new record. But my empty row
is not with asterisk, the only field in this row which is not empty is ID
field (AutoNumber), but other columns (which are connected with fields on my
form) are empty.
So, I have that empty row, and my next row has asterisk (this row is for new
record). Than I have manually to delete this row from my table, and ID
already take next value.
 
B

BruceM

Do you have code that saves the record as soon as it is created, or anything
like that? You say you "delete everything from fields in the form". How
did the data get into those fields so that it was necessary to delete it?
Does pressing Esc twice eliminate the problem? If so, Undo can be placed
into the code somewhere. For instance, in the form's Before Update event
you could have something like:

If IsNull(Me.SomeField) Then
If MsgBox ("Cancel the record?",vbYesNo) = vbYes Then
Me.Undo
End If
End If
 
S

Smoki

All my fields are bound fields, so every data which I enter in this fields
have been saved in my table. But, if I enter something in my form, and then
decide not to save this data, I manually delete data from fields, and when I
close my form, and check the table I see that I have 1 empty row in my table.
I tried somthing with this IsNull function, but my form doesn't work than,
maybe it is because my fields are bound?
 
S

Smoki

It looks ok, but what do you mean by this (me.AVeryKeyField) ???
Do I have to put instead of me.AVeryKeyField all my fields???
 
S

Smoki

It looks ok, but what do you mean by this (me.AVeryKeyField) ???
Do I have to put instead of me.AVeryKeyField all my fields???
 
B

BruceM

My SomeField is the same idea, I think, as AVeryKeyField in the other part
of this thread. Test the value of a field that must be filled in. If it is
blank, don't save the record (or at least give the user the option, as I
suggested). Regarding bound fields, the information entered into them is
saved as soon as the record is updated. The record is updated when you move
to another record, close the form, close the database, or explicitly save
the record (there are a few other ways this can happen, I think). Until the
record is saved, pressing Esc twice will undo the record, or you can use the
Undo code. You say you tried "something" with Undo, but what exactly is
that?
Assume when somebody is trying to help that there is a reason for questions
they ask. If you need further help, please respond to the questions I asked
in the previous posting.
 
S

Smoki

As I told you, all my fields are bound fields and I have code in form
properties:

OnOpen [Event Procedure]:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Solution with Esc is ok for me, but this form will use and other people, and
I can't tell them to do Esc, if they don't want to save that record.
I wrote some code by macro with IsNull option, something like: if all fields
are empty, don't save that record. But, it wasn't work.

That 's it. And thanks anyway.

Smoki
 
B

BruceM

Since you aren't willing to try my Undo suggestion there is nothing more I
could have done anyhow. Good luck.

Smoki said:
As I told you, all my fields are bound fields and I have code in form
properties:

OnOpen [Event Procedure]:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Solution with Esc is ok for me, but this form will use and other people,
and
I can't tell them to do Esc, if they don't want to save that record.
I wrote some code by macro with IsNull option, something like: if all
fields
are empty, don't save that record. But, it wasn't work.

That 's it. And thanks anyway.

Smoki

BruceM said:
My SomeField is the same idea, I think, as AVeryKeyField in the other
part
of this thread. Test the value of a field that must be filled in. If it
is
blank, don't save the record (or at least give the user the option, as I
suggested). Regarding bound fields, the information entered into them is
saved as soon as the record is updated. The record is updated when you
move
to another record, close the form, close the database, or explicitly save
the record (there are a few other ways this can happen, I think). Until
the
record is saved, pressing Esc twice will undo the record, or you can use
the
Undo code. You say you tried "something" with Undo, but what exactly is
that?
Assume when somebody is trying to help that there is a reason for
questions
they ask. If you need further help, please respond to the questions I
asked
in the previous posting.
 
S

Smoki

I tried it, but it said Compile error in this row:

(Me.SomeField)

I have some problems with this. Do I have instead of SomeField to put the
name of my field, for example (Me.Location). I suppose this is the stupide
question, but I don't know what to do!

BruceM said:
Since you aren't willing to try my Undo suggestion there is nothing more I
could have done anyhow. Good luck.

Smoki said:
As I told you, all my fields are bound fields and I have code in form
properties:

OnOpen [Event Procedure]:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Solution with Esc is ok for me, but this form will use and other people,
and
I can't tell them to do Esc, if they don't want to save that record.
I wrote some code by macro with IsNull option, something like: if all
fields
are empty, don't save that record. But, it wasn't work.

That 's it. And thanks anyway.

Smoki

BruceM said:
My SomeField is the same idea, I think, as AVeryKeyField in the other
part
of this thread. Test the value of a field that must be filled in. If it
is
blank, don't save the record (or at least give the user the option, as I
suggested). Regarding bound fields, the information entered into them is
saved as soon as the record is updated. The record is updated when you
move
to another record, close the form, close the database, or explicitly save
the record (there are a few other ways this can happen, I think). Until
the
record is saved, pressing Esc twice will undo the record, or you can use
the
Undo code. You say you tried "something" with Undo, but what exactly is
that?
Assume when somebody is trying to help that there is a reason for
questions
they ask. If you need further help, please respond to the questions I
asked
in the previous posting.

All my fields are bound fields, so every data which I enter in this
fields
have been saved in my table. But, if I enter something in my form, and
then
decide not to save this data, I manually delete data from fields, and
when
I
close my form, and check the table I see that I have 1 empty row in my
table.
I tried somthing with this IsNull function, but my form doesn't work
than,
maybe it is because my fields are bound?

:

Do you have code that saves the record as soon as it is created, or
anything
like that? You say you "delete everything from fields in the form".
How
did the data get into those fields so that it was necessary to delete
it?
Does pressing Esc twice eliminate the problem? If so, Undo can be
placed
into the code somewhere. For instance, in the form's Before Update
event
you could have something like:

If IsNull(Me.SomeField) Then
If MsgBox ("Cancel the record?",vbYesNo) = vbYes Then
Me.Undo
End If
End If

I know that empty row with asterisk represents new record. But my
empty
row
is not with asterisk, the only field in this row which is not empty
is
ID
field (AutoNumber), but other columns (which are connected with
fields
on
my
form) are empty.
So, I have that empty row, and my next row has asterisk (this row is
for
new
record). Than I have manually to delete this row from my table, and
ID
already take next value.

:

As I understand it, pressing Esc once will clear the current
control;
pressing Esc twice is the same as Undo in VBA -- it clears all
fields
in
the
unsaved record).
A command button with Me.Undo as its click event is another way to
clear
the
current record. However, it is not clear whether you have entered
any
data
before you decide not to create a record. Does the empty row have
an
asterisk at the left side? If so, that row represents the new
record,
and
will be there when you open the table in datasheet view. However,
if
there
is a blank row other than that one you are saving the record.

Hy,
I have a question. When I open my form, but I decide not to save
that
record, I delete everything from fields in form, but when I close
my
form,
and open the table, I see that I have 1 empty row in my table.
Does anyone have idea how to aviod this empty row?
 
B

BruceM

There are some conventions in common use in these groups, such as referring
to something such as SomeField and expecting people to know they should
substitute an actual field name, but it is easy to forget that some of this
stuff is by no means intuitive. Yes, you need the name of an actual field
from the form's record source. The idea is that it is a field that *must*
be filled in. For instance, in a Contacts table the LastName field would be
required. Without it there probably isn't much point to creating a record,
so that is a field you could check.
The code would go into the form's Before Update event. Let me know if you
need guidance to put it in place.

Smoki said:
I tried it, but it said Compile error in this row:

(Me.SomeField)

I have some problems with this. Do I have instead of SomeField to put the
name of my field, for example (Me.Location). I suppose this is the stupide
question, but I don't know what to do!

BruceM said:
Since you aren't willing to try my Undo suggestion there is nothing more
I
could have done anyhow. Good luck.

Smoki said:
As I told you, all my fields are bound fields and I have code in form
properties:

OnOpen [Event Procedure]:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Solution with Esc is ok for me, but this form will use and other
people,
and
I can't tell them to do Esc, if they don't want to save that record.
I wrote some code by macro with IsNull option, something like: if all
fields
are empty, don't save that record. But, it wasn't work.

That 's it. And thanks anyway.

Smoki

:

My SomeField is the same idea, I think, as AVeryKeyField in the other
part
of this thread. Test the value of a field that must be filled in. If
it
is
blank, don't save the record (or at least give the user the option, as
I
suggested). Regarding bound fields, the information entered into them
is
saved as soon as the record is updated. The record is updated when
you
move
to another record, close the form, close the database, or explicitly
save
the record (there are a few other ways this can happen, I think).
Until
the
record is saved, pressing Esc twice will undo the record, or you can
use
the
Undo code. You say you tried "something" with Undo, but what exactly
is
that?
Assume when somebody is trying to help that there is a reason for
questions
they ask. If you need further help, please respond to the questions I
asked
in the previous posting.

All my fields are bound fields, so every data which I enter in this
fields
have been saved in my table. But, if I enter something in my form,
and
then
decide not to save this data, I manually delete data from fields,
and
when
I
close my form, and check the table I see that I have 1 empty row in
my
table.
I tried somthing with this IsNull function, but my form doesn't work
than,
maybe it is because my fields are bound?

:

Do you have code that saves the record as soon as it is created, or
anything
like that? You say you "delete everything from fields in the
form".
How
did the data get into those fields so that it was necessary to
delete
it?
Does pressing Esc twice eliminate the problem? If so, Undo can be
placed
into the code somewhere. For instance, in the form's Before Update
event
you could have something like:

If IsNull(Me.SomeField) Then
If MsgBox ("Cancel the record?",vbYesNo) = vbYes Then
Me.Undo
End If
End If

I know that empty row with asterisk represents new record. But my
empty
row
is not with asterisk, the only field in this row which is not
empty
is
ID
field (AutoNumber), but other columns (which are connected with
fields
on
my
form) are empty.
So, I have that empty row, and my next row has asterisk (this row
is
for
new
record). Than I have manually to delete this row from my table,
and
ID
already take next value.

:

As I understand it, pressing Esc once will clear the current
control;
pressing Esc twice is the same as Undo in VBA -- it clears all
fields
in
the
unsaved record).
A command button with Me.Undo as its click event is another way
to
clear
the
current record. However, it is not clear whether you have
entered
any
data
before you decide not to create a record. Does the empty row
have
an
asterisk at the left side? If so, that row represents the new
record,
and
will be there when you open the table in datasheet view.
However,
if
there
is a blank row other than that one you are saving the record.

Hy,
I have a question. When I open my form, but I decide not to
save
that
record, I delete everything from fields in form, but when I
close
my
form,
and open the table, I see that I have 1 empty row in my table.
Does anyone have idea how to aviod this empty row?
 
S

Smoki

You 're right!!!
Thank you so much, it 's finnaly works!

BruceM said:
There are some conventions in common use in these groups, such as referring
to something such as SomeField and expecting people to know they should
substitute an actual field name, but it is easy to forget that some of this
stuff is by no means intuitive. Yes, you need the name of an actual field
from the form's record source. The idea is that it is a field that *must*
be filled in. For instance, in a Contacts table the LastName field would be
required. Without it there probably isn't much point to creating a record,
so that is a field you could check.
The code would go into the form's Before Update event. Let me know if you
need guidance to put it in place.

Smoki said:
I tried it, but it said Compile error in this row:

(Me.SomeField)

I have some problems with this. Do I have instead of SomeField to put the
name of my field, for example (Me.Location). I suppose this is the stupide
question, but I don't know what to do!

BruceM said:
Since you aren't willing to try my Undo suggestion there is nothing more
I
could have done anyhow. Good luck.

As I told you, all my fields are bound fields and I have code in form
properties:

OnOpen [Event Procedure]:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Solution with Esc is ok for me, but this form will use and other
people,
and
I can't tell them to do Esc, if they don't want to save that record.
I wrote some code by macro with IsNull option, something like: if all
fields
are empty, don't save that record. But, it wasn't work.

That 's it. And thanks anyway.

Smoki

:

My SomeField is the same idea, I think, as AVeryKeyField in the other
part
of this thread. Test the value of a field that must be filled in. If
it
is
blank, don't save the record (or at least give the user the option, as
I
suggested). Regarding bound fields, the information entered into them
is
saved as soon as the record is updated. The record is updated when
you
move
to another record, close the form, close the database, or explicitly
save
the record (there are a few other ways this can happen, I think).
Until
the
record is saved, pressing Esc twice will undo the record, or you can
use
the
Undo code. You say you tried "something" with Undo, but what exactly
is
that?
Assume when somebody is trying to help that there is a reason for
questions
they ask. If you need further help, please respond to the questions I
asked
in the previous posting.

All my fields are bound fields, so every data which I enter in this
fields
have been saved in my table. But, if I enter something in my form,
and
then
decide not to save this data, I manually delete data from fields,
and
when
I
close my form, and check the table I see that I have 1 empty row in
my
table.
I tried somthing with this IsNull function, but my form doesn't work
than,
maybe it is because my fields are bound?

:

Do you have code that saves the record as soon as it is created, or
anything
like that? You say you "delete everything from fields in the
form".
How
did the data get into those fields so that it was necessary to
delete
it?
Does pressing Esc twice eliminate the problem? If so, Undo can be
placed
into the code somewhere. For instance, in the form's Before Update
event
you could have something like:

If IsNull(Me.SomeField) Then
If MsgBox ("Cancel the record?",vbYesNo) = vbYes Then
Me.Undo
End If
End If

I know that empty row with asterisk represents new record. But my
empty
row
is not with asterisk, the only field in this row which is not
empty
is
ID
field (AutoNumber), but other columns (which are connected with
fields
on
my
form) are empty.
So, I have that empty row, and my next row has asterisk (this row
is
for
new
record). Than I have manually to delete this row from my table,
and
ID
already take next value.

:

As I understand it, pressing Esc once will clear the current
control;
pressing Esc twice is the same as Undo in VBA -- it clears all
fields
in
the
unsaved record).
A command button with Me.Undo as its click event is another way
to
clear
the
current record. However, it is not clear whether you have
entered
any
data
before you decide not to create a record. Does the empty row
have
an
asterisk at the left side? If so, that row represents the new
record,
and
will be there when you open the table in datasheet view.
However,
if
there
is a blank row other than that one you are saving the record.

Hy,
I have a question. When I open my form, but I decide not to
save
that
record, I delete everything from fields in form, but when I
close
my
form,
and open the table, I see that I have 1 empty row in my table.
Does anyone have idea how to aviod this empty row?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top