473,396 Members | 1,767 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Temporarily remove referential integrity checks through VBA?

Hi

I'm creating a series of forms, each with with around 15-20 text boxes.
The text boxes will show data from tables, but are unbound to make them
more flexible.

I want the form to be used for both adding new data and modifying
existing data. I have created a save button on the form.

When the user clicks the save button, the code checks to see if there
is a value in the ID text box. If not, it assumes that the record is
new and uses an "Insert into..." SQL statement as the ADODB command
text. This works fine.

However, if there is already an ID value present, the logic is that the
record already exists, and therefore we are doing an update. Creating a
SQL statement along the lines of "UPDATE tblCustomers SET strFirstName
= " & txtFirstName.text & ", strLastName=" & txtLastName.text
...... and so on seems to be a lot of coding to update perhaps 14 fields
which haven't changed in addition to the one that may have.

Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)

Assuming not, my other thought was that it would be much simpler to
simply execute 2 commands -
"Delete from tblCustomers where ID=" & txtID.text
and then run the insert statement as before. However, this will of
course be prevented by the referential integrity constraints on the
table, thus my question - is there a way through the code to turn off
checks, run the delete and insert statements, then turn them on again?

Apologies for being long-winded! Any help gratefully received!

Regards
Andrew Richards

Jun 15 '06 #1
80 7780

"Andrew R" <an*************@cashette.com> schreef in bericht news:11**********************@p79g2000cwp.googlegr oups.com...
Hi

I'm creating a series of forms, each with with around 15-20 text boxes.
The text boxes will show data from tables, but are unbound to make them
more flexible.

I want the form to be used for both adding new data and modifying
existing data. I have created a save button on the form.

When the user clicks the save button, the code checks to see if there
is a value in the ID text box. If not, it assumes that the record is
new and uses an "Insert into..." SQL statement as the ADODB command
text. This works fine.

However, if there is already an ID value present, the logic is that the
record already exists, and therefore we are doing an update. Creating a
SQL statement along the lines of "UPDATE tblCustomers SET strFirstName
= " & txtFirstName.text & ", strLastName=" & txtLastName.text
..... and so on seems to be a lot of coding to update perhaps 14 fields
which haven't changed in addition to the one that may have.

Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)

Assuming not, my other thought was that it would be much simpler to
simply execute 2 commands -
"Delete from tblCustomers where ID=" & txtID.text
and then run the insert statement as before. However, this will of
course be prevented by the referential integrity constraints on the
table, thus my question - is there a way through the code to turn off
checks, run the delete and insert statements, then turn them on again?

Apologies for being long-winded! Any help gratefully received!

Regards
Andrew Richards


Removing RI is *not* the way to go
Deleting the tblCustomers-record is *not* the way to go

These are both very bad and dangerous idea's IMO

What is wrong with bound textboxes??
You could edit, add, delete, cancel changes and so on.
You could save yourself a lot of coding indeed! and... you would not have these problems.

Arno R
Jun 15 '06 #2
You either use a bound form and save yourself a bunch of coding but you are
tied to the bound way of doing things

or

You use unbound and have to do a bunch of coding but you have the
flexibility to do exactly what you want.

You've chosen unbound and now you have to bite the bullet and write the
code.

Try thinking about writing a SQL builder function which you can use from any
of your forms. You pass the tablename and the values from your fields and
let the SQL builder function build the SQL for the update. Do it once, get
it right and then just use it.

--

Terry Kreft
"Andrew R" <an*************@cashette.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Hi

I'm creating a series of forms, each with with around 15-20 text boxes.
The text boxes will show data from tables, but are unbound to make them
more flexible.

I want the form to be used for both adding new data and modifying
existing data. I have created a save button on the form.

When the user clicks the save button, the code checks to see if there
is a value in the ID text box. If not, it assumes that the record is
new and uses an "Insert into..." SQL statement as the ADODB command
text. This works fine.

However, if there is already an ID value present, the logic is that the
record already exists, and therefore we are doing an update. Creating a
SQL statement along the lines of "UPDATE tblCustomers SET strFirstName
= " & txtFirstName.text & ", strLastName=" & txtLastName.text
..... and so on seems to be a lot of coding to update perhaps 14 fields
which haven't changed in addition to the one that may have.

Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)

Assuming not, my other thought was that it would be much simpler to
simply execute 2 commands -
"Delete from tblCustomers where ID=" & txtID.text
and then run the insert statement as before. However, this will of
course be prevented by the referential integrity constraints on the
table, thus my question - is there a way through the code to turn off
checks, run the delete and insert statements, then turn them on again?

Apologies for being long-winded! Any help gratefully received!

Regards
Andrew Richards

Jun 15 '06 #3
Hi, Andrew.
The text boxes will show data from tables, but are unbound to make them
more flexible.
That extra flexibility comes at the risk of compromising data integrity and
at a cost of extra work on the database developer's part. Are you sure that
you can't do what you need to do with bound forms?
Is there an easy way to detect which
field has been changed (without writing code behind each text box,
Yes. You can do a visual inpection of the records first. But SQL (or even
VBA code) to update these records would be far more efficient if you ask me.
It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)
Uh, . . . isn't that what you're getting paid for? To do hours and hours of
work? Every day you come to work? ;-)
is there a way through the code to turn off
checks, run the delete and insert statements, then turn them on again?
Jet doesn't have deferred constraints like client/server databases do, so
you'll have to drop the constraints, not just "turn them off." Honestly, an
update query is the best way to handle this, but if you want to do it the
hard way, you can delete, then insert the appropriate records, but you'll
have to take special precautions.

First, back up the database in case something goes wrong. Next, create a
table level write lock on these related tables, because you don't want other
users to be changing data while referential integrity isn't being enforced.
(Alternatively, you can open the database in exclusive mode if the users
won't tar and feather you for blocking them from doing their work.) Drop
the foreign key constraints between these tables. Delete the record and
insert a new one with the same ID for the primary key. Repeat for as many
records as needed, then recreate the foreign key constraints again.

HTH.
Gunny

See http://www.QBuilt.com for all your database needs.
See http://www.Access.QBuilt.com for Microsoft Access tips and tutorials.
http://www.Access.QBuilt.com/html/ex...ributors2.html for contact
info.
"Andrew R" <an*************@cashette.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com... Hi

I'm creating a series of forms, each with with around 15-20 text boxes.
The text boxes will show data from tables, but are unbound to make them
more flexible.

I want the form to be used for both adding new data and modifying
existing data. I have created a save button on the form.

When the user clicks the save button, the code checks to see if there
is a value in the ID text box. If not, it assumes that the record is
new and uses an "Insert into..." SQL statement as the ADODB command
text. This works fine.

However, if there is already an ID value present, the logic is that the
record already exists, and therefore we are doing an update. Creating a
SQL statement along the lines of "UPDATE tblCustomers SET strFirstName
= " & txtFirstName.text & ", strLastName=" & txtLastName.text
..... and so on seems to be a lot of coding to update perhaps 14 fields
which haven't changed in addition to the one that may have.

Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)

Assuming not, my other thought was that it would be much simpler to
simply execute 2 commands -
"Delete from tblCustomers where ID=" & txtID.text
and then run the insert statement as before. However, this will of
course be prevented by the referential integrity constraints on the
table, thus my question - is there a way through the code to turn off
checks, run the delete and insert statements, then turn them on again?

Apologies for being long-winded! Any help gratefully received!

Regards
Andrew Richards

Jun 15 '06 #4
"Andrew R" <an*************@cashette.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...

Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)


I wrote a function to do this with any form for an audit trail, you just
pass the form to the function along with the record's unique ID. Here's an
extract from the code, you may be able to adapt it and probably make it more
elegant in the process:

Calling code:
Call libHistory(Me, Me.txtID)

Public Function libHistory(frmForm As Form, lngID As Long)

Dim ctl As Control

For Each ctl In frmForm
'Ignore controls such as labels
If ctl.Name Like "txt*" Or ctl.Name Like "cbo*" Or ctl.Name Like
"ogr*" Or ctl.Name Like "chk*" Then
'Record null to value, value to null, and value changes
If ((IsNull(ctl.OldValue) And Not IsNull(ctl.Value)) Or
(IsNull(ctl.Value) And Not IsNull(ctl.OldValue)) _
Or ctl.OldValue <> ctl.Value) Then
'DO STUFF
End If
End If
Next

End Function

Regards,
Keith.
www.keithwilby.com
Jun 15 '06 #5

Andrew R wrote:
Creating a
SQL statement along the lines of "UPDATE tblCustomers SET strFirstName
= " & txtFirstName.text & ", strLastName=" & txtLastName.text
..... and so on seems to be a lot of coding to update perhaps 14 fields
which haven't changed in addition to the one that may have.


Under the covers, in the engine will perform an update by first
deleting the old row then inserting a new row with the new values (it
does it in a more controlled way than you could 'by hand'). Trying to
detect which column values have changed or otherwise is most likely a
waste of your time and effort. The engine won't care so why should you?
Just send all the values across in one hit.

I can appreciate why you don't like creating a dynamic UPDATE
statement. As you are using ADO, you could create a PROCEDURE with
(optional) parameters, using default parameter values to detect values
'missing' from the call. Post back if you'd like to see an example.

There are circumstances where you need to disable DRI, CHECK
constraints, etc temporarily while you complete a set of operations.
You obviously need to do this in a transaction in case the new data
prevents you switching them back (i.e. constraints have been violated)
so you can rollback the changes. However, yours does not sound like one
of those circumstances.

Jamie.

--

Jun 15 '06 #6
"'69 Camaro" <Fo**************************@Spameater.orgZERO_SP AM>
wrote in news:OY*************@TK2MSFTNGP05.phx.gbl:
Jet doesn't have deferred constraints like client/server databases
do, so you'll have to drop the constraints, not just "turn them
off."


I can't imagine a situation in which this would be advisable. What
happens if someone else adds non-conformant data to the database
during the time when the constraints have been turned off?

Changes to the schema should *never* happen incidentally as a part
of daily operation of an application. If the application depends on
that, then there's a horrendously bad design in place and that
should be fixed.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 15 '06 #7
"Jamie Collins" <ja**********@xsmail.com> wrote in
news:11*********************@u72g2000cwu.googlegro ups.com:
There are circumstances where you need to disable DRI, CHECK
constraints, etc temporarily while you complete a set of
operations.


I don't agree with this. I don't see any situations where RI should
be disabled.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 15 '06 #8

David W. Fenton wrote:
There are circumstances where you need to disable DRI, CHECK
constraints, etc temporarily while you complete a set of
operations.


I don't agree with this. I don't see any situations where RI should
be disabled.


Perhaps 'need' was the wrong word; substitute 'may find it conducive'.

What about the situation where you need to alter a key's value and
can't use ON UPDATE CASADE on all you tables because there are
potential cycles or multiple update paths that the engine isn't smart
enough to resolve?

Jamie.

--

Jun 15 '06 #9
"Jamie Collins" <ja**********@xsmail.com> wrote in
news:11**********************@p79g2000cwp.googlegr oups.com:

David W. Fenton wrote:
> There are circumstances where you need to disable DRI, CHECK
> constraints, etc temporarily while you complete a set of
> operations.


I don't agree with this. I don't see any situations where RI
should be disabled.


Perhaps 'need' was the wrong word; substitute 'may find it
conducive'.

What about the situation where you need to alter a key's value and
can't use ON UPDATE CASADE on all you tables because there are
potential cycles or multiple update paths that the engine isn't
smart enough to resolve?


Then your schema is wrong.

Fix that and the problem goes away.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 15 '06 #10
Bri

Keith Wilby wrote:
"Andrew R" <an*************@cashette.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Therefore, my question is this: Is there an easy way to detect which
field has been changed (without writing code behind each text box,
given that Access doesn't allow control arrays... It probably seems
like I'm being lazy, but with probably 8 or so forms, each with 15-20
text boxes, that would be a lot of work!)

I wrote a function to do this with any form for an audit trail, you just
pass the form to the function along with the record's unique ID. Here's an
extract from the code, you may be able to adapt it and probably make it more
elegant in the process:

Calling code:
Call libHistory(Me, Me.txtID)

Public Function libHistory(frmForm As Form, lngID As Long)

Dim ctl As Control

For Each ctl In frmForm
'Ignore controls such as labels
If ctl.Name Like "txt*" Or ctl.Name Like "cbo*" Or ctl.Name Like
"ogr*" Or ctl.Name Like "chk*" Then
'Record null to value, value to null, and value changes
If ((IsNull(ctl.OldValue) And Not IsNull(ctl.Value)) Or
(IsNull(ctl.Value) And Not IsNull(ctl.OldValue)) _
Or ctl.OldValue <> ctl.Value) Then
'DO STUFF
End If
End If
Next

End Function

Regards,
Keith.
www.keithwilby.com


Great idea, exept that OldValue only works with Bound controls which
implies Bound Form and this is an Unbound Form. I use something very
similar myself in my Audit routine.

--
Bri

Jun 15 '06 #11
Bri


Jamie Collins wrote:
David W. Fenton wrote:
There are circumstances where you need to disable DRI, CHECK
constraints, etc temporarily while you complete a set of
operations.


I don't agree with this. I don't see any situations where RI should
be disabled.

Perhaps 'need' was the wrong word; substitute 'may find it conducive'.

What about the situation where you need to alter a key's value and
can't use ON UPDATE CASADE on all you tables because there are
potential cycles or multiple update paths that the engine isn't smart
enough to resolve?

Jamie.


I assuming (hoping) that you are referring to a one time maintenance
issue vs a regular process. In this case you would have kicked everyone
out of the db, so as long as everything is back in place before you let
them back in then, yes, you might want to do this.

I agree with David that you do NOT want to have constraints modified in
an ongoing process. Its better to define constrains that suit your needs
and then leave them alone. The OP has been shown several alternatives
(Terry's function idea is the one I would use), so he shouldn't need to
consider the constraint option further.

--
Bri

Jun 15 '06 #12
Hi, David.
I can't imagine a situation in which this would be advisable.
For data migrations, legacy data often doesn't conform to the structure of
the new tables. Client/server databases offer the ability to enable and
disable constraints, create deferrable constraints, defer constraints
initially, and validate/not validate existing data when the constraints are
enabled. In general, it's more efficient to use deferred/non-validated
constraints to allow non-conforming data to be imported into tables, because
fixing the data before importing into the tables is often more cumbersome
and time-consuming without the database engine to manipulate large data
sets.
What
happens if someone else adds non-conformant data to the database
during the time when the constraints have been turned off?
As I mentioned in my previous post, special precautions need to be taken:
"create a table level write lock on these related tables, because you don't
want other users to be changing data while referential integrity isn't being
enforced." With a write lock, the users can't alter the data in these
locked tables. They can only read the data. And if Andrew forgets to lock
the tables before beginning these operations, he may find that he can't add
the constraints to the tables again when he's done because the users have
added data that doesn't comply with the constraints. Andrew won't forget
the table locks more than once if he takes this approach.
Changes to the schema should *never* happen incidentally as a part
of daily operation of an application.
Agreed. This is a DBA function for database maintenance, not something
that's executed as part of the normal business logic of the application.
If the application depends on
that, then there's a horrendously bad design in place and that
should be fixed.
Of course it's a bad design for a normal user application. However, if it's
a DBA tool for migrating data where no users are in the database yet, then
it's not half as bad as it sounds, because it's a one-time (or occasional)
utility function. But I think it's much more likely that Andrew's approach
is intended for the actual day-to-day operations, not a one-time data
migration.

As for why I gave the instructions I did, Andrew asked whether or not it
could be done, so I provided a response in that context. I can give my
advice that this approach is ill-advised along with instructions on how to
do it, because I know that:

1. Some people will consider the steps outlined and, based upon their
experience, see that this approach is not in their best interest for daily
operations and therefore consider the other, more viable, options.

2. Some people will ignore the advice that this is ill-advised since
they're focused on the ultimate outcome, not the wisest path to reach that
outcome. Those are the ones that will implement the instructions and get to
see the consequences first hand. Depending upon how much experience they
have with relational database applications and how much traffic the database
gets, the consequences might not be evident to them immediately, but they'll
eventually see that this approach is not in their best interest.

And while I'd rather people not make mistakes when it comes to working with
data, I believe that we need to allow people to make small mistakes so that
they can learn from them, which will later help them to figure out how to
avoid many of the collosal mistakes. I know that when I was new to
relational databases, the experts who trained me let me make mistakes,
because they were confident that they could fix anything that I screwed up,
and I'd learn valuable troubleshooting skills along the way. Like most
people, I made many mistakes, but seeing the results of "this is why we
_never_ do such-and-such" hammered home the lessons I learned. I got to
learn how to fix those mistakes myself, so I never need to rely on others to
notice -- and fix -- my mistakes for me. I don't want to prevent others
from gaining this valuable experience.

HTH.
Gunny

See http://www.QBuilt.com for all your database needs.
See http://www.Access.QBuilt.com for Microsoft Access tips and tutorials.
http://www.Access.QBuilt.com/html/ex...ributors2.html for contact
info.
"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn**********************************@127.0.0. 1... "'69 Camaro" <Fo**************************@Spameater.orgZERO_SP AM>
wrote in news:OY*************@TK2MSFTNGP05.phx.gbl:
Jet doesn't have deferred constraints like client/server databases
do, so you'll have to drop the constraints, not just "turn them
off."


I can't imagine a situation in which this would be advisable. What
happens if someone else adds non-conformant data to the database
during the time when the constraints have been turned off?

Changes to the schema should *never* happen incidentally as a part
of daily operation of an application. If the application depends on
that, then there's a horrendously bad design in place and that
should be fixed.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/

Jun 15 '06 #13
"'69 Camaro" <Fo**************************@Spameater.orgZERO_SP AM>
wrote in news:#u**************@TK2MSFTNGP04.phx.gbl:
I can't imagine a situation in which this would be advisable.
For data migrations, . . .


That's a one-time operation. The question was about having it be a
regular thing to turn it off and turn it on in order to input
certain kinds of data. That was also what someone else suggested.

There is simply on situation that I can think of where turning off
RI and then turning it back on should be a regular part of the
process.

If you need to regularly import data that needs to be massaged to
remove violations of your RI, then you need temp tables to operate
on it before it actually gets imported into the live database.
. . . legacy data often doesn't conform to the structure of
the new tables. Client/server databases offer the ability to
enable and disable constraints, create deferrable constraints,
defer constraints initially, and validate/not validate existing
data when the constraints are enabled. In general, it's more
efficient to use deferred/non-validated constraints to allow
non-conforming data to be imported into tables, because fixing the
data before importing into the tables is often more cumbersome and
time-consuming without the database engine to manipulate large
data sets.
I don't see it. Import buffer tables are the way to go, seems to me.

In any event, I can certainly see doing it once during a massive
import process. I can't see doing it ever for a live database.
What
happens if someone else adds non-conformant data to the database
during the time when the constraints have been turned off?


As I mentioned in my previous post, special precautions need to be
taken: "create a table level write lock on these related tables,
because you don't want other users to be changing data while
referential integrity isn't being enforced." With a write lock,
the users can't alter the data in these locked tables. They can
only read the data. And if Andrew forgets to lock the tables
before beginning these operations, he may find that he can't add
the constraints to the tables again when he's done because the
users have added data that doesn't comply with the constraints.
Andrew won't forget the table locks more than once if he takes
this approach.


This all sounds completely insane to me. I would never pay a
developer who produced such a monstrosity.
Changes to the schema should *never* happen incidentally as a
part of daily operation of an application.


Agreed. This is a DBA function for database maintenance, not
something that's executed as part of the normal business logic of
the application.


That's not what the original question was about, though.
If the application depends on
that, then there's a horrendously bad design in place and that
should be fixed.


Of course it's a bad design for a normal user application.
However, if it's a DBA tool for migrating data where no users are
in the database yet, then it's not half as bad as it sounds,
because it's a one-time (or occasional) utility function. But I
think it's much more likely that Andrew's approach is intended for
the actual day-to-day operations, not a one-time data migration.


I was responding to the question asked, which was about a regularly
used procedure, not a one-time import. I don't consider a one-time
removal of RI to import certain data to be part of the regular
operation of a database. It's an operation done before the schems is
finished and initialized with data.
As for why I gave the instructions I did, Andrew asked whether or
not it could be done, so I provided a response in that context. I
can give my advice that this approach is ill-advised along with
instructions on how to do it, because I know that:

1. Some people will consider the steps outlined and, based upon
their experience, see that this approach is not in their best
interest for daily operations and therefore consider the other,
more viable, options.

2. Some people will ignore the advice that this is ill-advised
since they're focused on the ultimate outcome, not the wisest path
to reach that outcome. Those are the ones that will implement the
instructions and get to see the consequences first hand.
Depending upon how much experience they have with relational
database applications and how much traffic the database gets, the
consequences might not be evident to them immediately, but they'll
eventually see that this approach is not in their best interest.
I don't see why you'd give the advice, given that you knew the
contemplated scenario was one that you'd never recommend.
And while I'd rather people not make mistakes when it comes to
working with data, I believe that we need to allow people to make
small mistakes so that they can learn from them, . . .
This is no small mistake, in my opinion. It's a fundamental error in
the understanding of how the schema should be established and how
data should be entered into that schema.
. . . which will later help them to figure out how to
avoid many of the collosal mistakes. I know that when I was new
to relational databases, the experts who trained me let me make
mistakes, because they were confident that they could fix anything
that I screwed up, and I'd learn valuable troubleshooting skills
along the way. Like most people, I made many mistakes, but seeing
the results of "this is why we _never_ do such-and-such" hammered
home the lessons I learned. I got to learn how to fix those
mistakes myself, so I never need to rely on others to notice --
and fix -- my mistakes for me. I don't want to prevent others
from gaining this valuable experience.


I don't see why one would answer a question as though a different
question had been asked, which is what it seems to me that you did.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 15 '06 #14
"Bri" <no*@here.com> wrote in message news:rzhkg.32696$iF6.28271@pd7tw2no...


Great idea, exept that OldValue only works with Bound controls which
implies Bound Form and this is an Unbound Form.


Hence the phrase "you may be able to adapt it".

Keith.
Jun 16 '06 #15

David W. Fenton wrote:
I don't see any situations where RI
should be disabled.


What about the situation where you need to alter a key's value and
can't use ON UPDATE CASADE on all you tables because there are
potential cycles or multiple update paths that the engine isn't
smart enough to resolve?


Then your schema is wrong.


What about where the schema is 'right', in that logically all the
cascade paths can be resolved, but the engine isn't smart enough to
work this out. There's a live in another of the Access newsgroups:

http://groups.google.com/group/micro...6c09e1a9cc11e/

You earlier comment was probably more correct in that you are not
seeing the situation (how can you tell me my schema is wong when I
haven't posted one <g>?!)

Jamie.

--

Jun 16 '06 #16
In reply to all those of you who replied - thank you. I didn't realise
that it would stir quite such a vigorous debate! :-)

It's given me some things to think about, and to those who offered more
advice, I may get in touch again in the next few days.

Incidentally, a note to Gunny - no, that's not what I'm paid for! I'm
developing this db for my own needs and to further my knowledge of and
interest in Access. I'm actually an IT trainer, rather than a database
developer....

Thanks again for all your thoughts and contributions....

Regards

Andrew

Jun 16 '06 #17
Oh, and incidentally, the database is only for my own use in managing
clients and projects, so although it is fairly complex, the issues
which arise in a multi-user environment are not so relevant to this
particular case (although obviously they *do* impinge on the quality of
the design as a whole).

Thanks

Andrew

Andrew R wrote:
In reply to all those of you who replied - thank you. I didn't realise
that it would stir quite such a vigorous debate! :-)

It's given me some things to think about, and to those who offered more
advice, I may get in touch again in the next few days.

Incidentally, a note to Gunny - no, that's not what I'm paid for! I'm
developing this db for my own needs and to further my knowledge of and
interest in Access. I'm actually an IT trainer, rather than a database
developer....

Thanks again for all your thoughts and contributions....

Regards

Andrew


Jun 16 '06 #18
"Jamie Collins" <ja**********@xsmail.com> wrote in
news:11*********************@r2g2000cwb.googlegrou ps.com:
David W. Fenton wrote:
>> I don't see any situations where RI
>> should be disabled.
>
> What about the situation where you need to alter a key's value
> and can't use ON UPDATE CASADE on all you tables because there
> are potential cycles or multiple update paths that the engine
> isn't smart enough to resolve?
Then your schema is wrong.


What about where the schema is 'right', in that logically all the
cascade paths can be resolved, but the engine isn't smart enough
to work this out. There's a live in another of the Access
newsgroups:

http://groups.google.com/group/micro...s.tablesdbdesi
gn/browse_frm/thread/b806c09e1a9cc11e/


Sounds like an adjustment to the schema is needed. I've had circular
relationships in Jet databases (even replicated) and have never had
a problem. Perhaps one solution is changing the FK to allow Null and
not be required is all that's needed, since I've never had a
circular relationship with a required FK value in the chain.

Of course, I also don't believe in cascading updates, since I am
philosophically completely opposed to using PKs that are ever
updated (I'm against natural keys in all but the most trivial cases,
such as lookup tables).

Either of those alterations to the schema should make it work.
You earlier comment was probably more correct in that you are not
seeing the situation (how can you tell me my schema is wong when I
haven't posted one <g>?!)


If the schema necessitates regularly turning off RI, then it's
wrong. I don't need to know anything else about it.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 16 '06 #19
David W. Fenton wrote:
If the schema necessitates regularly turning off RI, then it's
wrong. I don't need to know anything else about it.
We're fortunate in Access/Jet that the engine is quite good at
resolving cascade paths. Much better, for example, than SQL Sever: as
soon as it encounters two paths it chokes i.e. the classic adjacency
list, a popular common/popular design choice for trees in SQL, cannot
support cascading updates in SQL Server.

It would be a complex design in Access/Jet that would cause the engine
to choke and therefore there would be a lot of scope for alternative
design choices. The more complex the design the more difficult it is to
say for sure that the design is 'wrong' because of the many design
choices and compromises between logical model and physical
implementation which inevitably have been made along the way.

Temporarily suspending DRI in Access/Jet is not desirable (e.g. can I
create a serialized transaction that would prevent others making schema
changes and allow me to rollback mine? I really don't know) and I've
never had to do it myself but I stop short of saying that doing so is
always wrong.
I also don't believe in cascading updates, since I am
philosophically completely opposed to using PKs that are ever
updated (I'm against natural keys in all but the most trivial cases,
such as lookup tables).
Some people choose to use natural keys in DRI. Are you saying they are
'wrong'?
Sounds like an adjustment to the schema is needed. I've had circular
relationships in Jet databases (even replicated) and have never had
a problem. Perhaps one solution is changing the FK to allow Null and
not be required is all that's needed, since I've never had a
circular relationship with a required FK value in the chain.


I've having trouble envisaging what you mean. Could you post your
schema and some test data, please.

I posted mine (or rather, that OP's) in the other thread. Perhaps you
could also post a 'fix' to that schema too?

TIA,
Jamie.

--

Jun 16 '06 #20
Bri

Keith Wilby wrote:
"Bri" <no*@here.com> wrote in message news:rzhkg.32696$iF6.28271@pd7tw2no...

Great idea, exept that OldValue only works with Bound controls which
implies Bound Form and this is an Unbound Form.

Hence the phrase "you may be able to adapt it".

Keith.


Well, you gave the function in response to the issue of dealing with
controls that had changed their value and your function uses OldValue to
do that... so, what is left to adapt?

--
Bri

Jun 16 '06 #21
"Jamie Collins" <ja**********@xsmail.com> wrote in
news:11*********************@h76g2000cwa.googlegro ups.com:
David W. Fenton wrote:
If the schema necessitates regularly turning off RI, then it's
wrong. I don't need to know anything else about it.
We're fortunate in Access/Jet that the engine is quite good at
resolving cascade paths. Much better, for example, than SQL Sever:
as soon as it encounters two paths it chokes i.e. the classic
adjacency list, a popular common/popular design choice for trees
in SQL, cannot support cascading updates in SQL Server.


Well, I think cascading updates are a bad thing, as an updatable PK
is a bad thing.

Secondly, every N:1 relationship can be replaced by an intermediate
join table. It's not quite as intuitive as your usual N:N join table
(it's a degenerate case of the N:N), but it works just the same.

The point is that there are ways to avoid the circular relationship
problem by redesigning your schema. It will still reflect the
entities being modelled. It just do it in a different fashion.
It would be a complex design in Access/Jet that would cause the
engine to choke and therefore there would be a lot of scope for
alternative design choices. The more complex the design the more
difficult it is to say for sure that the design is 'wrong' because
of the many design choices and compromises between logical model
and physical implementation which inevitably have been made along
the way.
Cascading updates indicates to me that somebody has gone badly wrong
in the first place.
Temporarily suspending DRI in Access/Jet is not desirable (e.g.
can I create a serialized transaction that would prevent others
making schema changes and allow me to rollback mine? I really
don't know) and I've never had to do it myself but I stop short of
saying that doing so is always wrong.


It's bloody stupid to have RI in place that has to be suspended in
order to insert data.
I also don't believe in cascading updates, since I am
philosophically completely opposed to using PKs that are ever
updated (I'm against natural keys in all but the most trivial
cases, such as lookup tables).


Some people choose to use natural keys in DRI. Are you saying they
are 'wrong'?


Yep. Any data that can be edited shouldn't be used as a PK, because
the function of the PK is to relate data, not to store information
about the entities represented in the table.

That doesn't mean that unique indexes shouldn't be maintained on the
natural key (which may be composite), but natural keys lead to just
this kind of problem.

The only exception I would make is for one-column lookup tables,
where there is no dependent data (i.e., the PK is the entire data
for the entity).
Sounds like an adjustment to the schema is needed. I've had
circular relationships in Jet databases (even replicated) and
have never had a problem. Perhaps one solution is changing the FK
to allow Null and not be required is all that's needed, since
I've never had a circular relationship with a required FK value
in the chain.


I've having trouble envisaging what you mean. Could you post your
schema and some test data, please.

I posted mine (or rather, that OP's) in the other thread. Perhaps
you could also post a 'fix' to that schema too?


I've explained at least three different ways to avoid circular
schema problems. None of them is complicated enough to need me to
draw you a picture.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 17 '06 #22
Bri wrote:

Well, you gave the function in response to the issue of dealing with
controls that had changed their value and your function uses OldValue to
do that... so, what is left to adapt?


You know, there will always be smart-arsed know-it-alls on these groups
who use their no doubt superior knowledge on a subject to try to
humiliate and score cheap points from other contributors. You fall into
this category. I always try to help other Access users where I can but
my contributions can sometimes be a bit off the mark and I'm happy and
grateful to accept corrections where necessary from those with better
knowledge, this is how I learn from my mistakes, but when those
corrections are offered in a holier-than-thou manner it really pisses me
off.

I am not so geek-like that I know about every method, every function,
every facet of Access. I am also sometimes guilty of reading posts too
quickly. In this instance, although I read the "unbound" part I failed
to digest it fully which is why I offered the code for adaptation and
not as a belt and braces solution. So I made a mistake, so what? I'm
sure the OP realised that without your cheap shots.

I read your exchange with David Fenton in the "Created on Access 2003,
but......................." thread with interest. David is extremely
knowledgeable in Access but, IMO, his bedside manner can sometimes leave
a little to be desired, but it pales into insignificance compared to
yours. This is not something I would be proud of if I were you, which
thankfully I am not.

<PLONK>
Jun 17 '06 #23
Bri


Keith wrote:
Bri wrote:

Well, you gave the function in response to the issue of dealing with
controls that had changed their value and your function uses OldValue
to do that... so, what is left to adapt?

You know, there will always be smart-arsed know-it-alls on these groups
who use their no doubt superior knowledge on a subject to try to
humiliate and score cheap points from other contributors. You fall into
this category. I always try to help other Access users where I can but
my contributions can sometimes be a bit off the mark and I'm happy and
grateful to accept corrections where necessary from those with better
knowledge, this is how I learn from my mistakes, but when those
corrections are offered in a holier-than-thou manner it really pisses me
off.

I am not so geek-like that I know about every method, every function,
every facet of Access. I am also sometimes guilty of reading posts too
quickly. In this instance, although I read the "unbound" part I failed
to digest it fully which is why I offered the code for adaptation and
not as a belt and braces solution. So I made a mistake, so what? I'm
sure the OP realised that without your cheap shots.

I read your exchange with David Fenton in the "Created on Access 2003,
but......................." thread with interest. David is extremely
knowledgeable in Access but, IMO, his bedside manner can sometimes leave
a little to be desired, but it pales into insignificance compared to
yours. This is not something I would be proud of if I were you, which
thankfully I am not.

<PLONK>


Whoa, now!! Back up the truck. I'm sorry if you feel that my reply was
an attempt to be a smart ass and to score cheap points at your expense.
I can assure you that that was not my intent. I really was trying to
point out that your solution wouldn't work and why it wouldn't for the
benefit of the OP primarily and for you as well. You then replied that
the OP was to adapt your code for his needs. I then responded that after
you remove the OldValue part of the function that there was nothing left
that could be used to solve his problem as the OldValue was the key part
of that function. I was wondering if, after the OldValue part of the
function was dismissed, what you thought was still there to adapt? It
was a question, in case I had missed something else in there. I'm sorry
you took offense to that. Perhaps I could have written it differently.

I'm not sure what there is about my responses that 'pales into
insignificance'. Perhaps, you would explain to me the error of my ways?
I certainly don't think of myself as hard to get along with, but perhaps
there is something in the way I write that comes off that way. I was
unaware of it. What could/should I have done differently?

In the exchange with David you refer to, he refused to acknowledge that
what I said I had done was true, he said I was a lier, and even when
faced with several sources of reference to back my story up, he still
refused to believe it. I can't see how you would place me as the
aggressor in that thread.

--
Bri

Jun 17 '06 #24

David W. Fenton wrote:
Some people choose to use natural keys in DRI. Are you saying they
are 'wrong'?


Yep.


OK, so you think ON UPDATE CASCADE is wrong, should never have been
invented and anyone who uses it is wrong. No offence intended but I
don't think you think you can ever be open minded to the legitimacy of
suspending DRI to manually perform a cascade which the engine is not
smart to figure out itself if you don't think the values should *ever*
be changed.

I am sure you are aware that many SQL gurus use natural keys for their
PKs so I won't try to convert you <g>.

Jamie.

--

Jun 18 '06 #25
Bri wrote:

Whoa, now!! Back up the truck. I'm sorry if you feel that my reply was
an attempt to be a smart ass and to score cheap points at your expense.
I can assure you that that was not my intent.
Fair enough. It did seem a tad aggressive to me, perhaps yesterday was
a "bad Day".
I really was trying to
point out that your solution wouldn't work and why it wouldn't for the
benefit of the OP primarily and for you as well. You then replied that
the OP was to adapt your code for his needs. I then responded that after
you remove the OldValue part of the function that there was nothing left
that could be used to solve his problem as the OldValue was the key part
of that function. I was wondering if, after the OldValue part of the
function was dismissed, what you thought was still there to adapt? It
was a question, in case I had missed something else in there. I'm sorry
you took offense to that. Perhaps I could have written it differently.
I think you could, I read that as being confrontational. As I said
before I read the OP very quickly and hadn't realised the significance
of the form being unbound and offered the code, warts and all, in case
the OP could have made use of it in one way or another. I just thought
that 'Great idea, except that ...' came across as sarcasm.

I'm not sure what there is about my responses that 'pales into
insignificance'. Perhaps, you would explain to me the error of my ways?
I certainly don't think of myself as hard to get along with, but perhaps
there is something in the way I write that comes off that way. I was
unaware of it. What could/should I have done differently?
I'm not going to attempt to preach to you how you should and should not
post on a public forum, I am in no position to do that. Having said that
I think that this is the first time I have ranted on here like I did
yesterday, perhaps I saw a red rag that wasn't really there. The
'pales' jibe was just my temper talking, please disregard it and accept
my apologies.

In the exchange with David you refer to, he refused to acknowledge that
what I said I had done was true, he said I was a lier, and even when
faced with several sources of reference to back my story up, he still
refused to believe it. I can't see how you would place me as the
aggressor in that thread.


It came across as two stags locking horns and I guess I thought you were
attempting a similar tack with me. You have stated that that was not
your intention and I believe you, I would not call you a liar or a lier
(yes I did spot that typo first time around). :-)

Have a good day, I'm hoping to have a better one than I did yesterday.

Regards,
Keith.
Jun 18 '06 #26
"Jamie Collins" <ja**********@xsmail.com> wrote in
news:11*********************@h76g2000cwa.googlegro ups.com:
I am sure you are aware that many SQL gurus use natural keys for
their PKs so I won't try to convert you <g>.


I think many SQL gurus are more concerned with theory than with ease
of use and maintenance.

One particular SQL guru strikes as a complete blowhard asshole.

As to natural PKs, well, they cause problems, and that's one of the
reasons why surrogate keys are better, because you avoid precisely
the kinds of problems encountered with the circular relationships.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Jun 18 '06 #27
Bri
Keith wrote:
Bri wrote:

Whoa, now!! Back up the truck. I'm sorry if you feel that my reply was
an attempt to be a smart ass and to score cheap points at your
expense. I can assure you that that was not my intent.
Fair enough. It did seem a tad aggressive to me, perhaps yesterday was
a "bad Day".


It happens, hope you're having a better day today.
I think you could, I read that as being confrontational. As I said
before I read the OP very quickly and hadn't realized the significance
of the form being unbound and offered the code, warts and all, in case
the OP could have made use of it in one way or another. I just thought
that 'Great idea, except that ...' came across as sarcasm.
Actually, it was sincere. I thought it was great code for an audit
trail. In fact, I mentioned that I used something similar myself.
I'm not going to attempt to preach to you how you should and should not
post on a public forum, I am in no position to do that. Having said that
I think that this is the first time I have ranted on here like I did
yesterday, perhaps I saw a red rag that wasn't really there. The
'pales' jibe was just my temper talking, please disregard it and accept
my apologies.
Apology accepted.

By pointing out where you saw sarcasm, you did what I was asking. Now I
have a reference for where something I wrote was taken differently than
intended, I can watch for it in the future.
It came across as two stags locking horns and I guess I thought you were
attempting a similar tack with me. You have stated that that was not
your intention and I believe you, I would not call you a liar or a lier
(yes I did spot that typo first time around). :-)
Well, I'm not going to let someone call me a liar (not a typo, spelling
is not my strongest suit and the spell checker didn't catch it) and not
try to defend myself. If you followed the whole thread, you would have
seen that the force of my writing escalated with each reply where he
refused to even check the references I supplied. I didn't start out
writing to him that way (or at least I didn't intend to).
Have a good day, I'm hoping to have a better one than I did yesterday.

Regards,
Keith.


Having a great day, thanks. And to you.

--
Bri

Jun 19 '06 #28

David W. Fenton wrote:
I think many SQL gurus are more concerned with theory than with ease
of use and maintenance.

One particular SQL guru strikes as a complete blowhard asshole.


Can you imagine Fabian posting to this thread, 'I don't see any
situations where DRI should be disabled,' and only after interrogation
qualified with, 'because I consider SQL to be a bad thing'?

Does this sound like a certain someone's involvement in this thread,
David <g>?

Jamie.

--

Jun 19 '06 #29
rkc
Jamie Collins wrote:
David W. Fenton wrote:
I think many SQL gurus are more concerned with theory than with ease
of use and maintenance.

One particular SQL guru strikes as a complete blowhard asshole.

Can you imagine Fabian posting to this thread, 'I don't see any
situations where DRI should be disabled,' and only after interrogation
qualified with, 'because I consider SQL to be a bad thing'?

Does this sound like a certain someone's involvement in this thread,
David <g>?


What does SQL have to do with referential integrity?
Jun 19 '06 #30

rkc wrote:
What does SQL have to do with referential integrity?


http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.

Jamie.

--

Jun 19 '06 #31

keith

i applaud david fentons work

keith this isn't gradeschool... what are you going to do 'tell on us'
for talking like we would in the real world?

go back to 2nd grade keith and learn how to deal with people

or is keithie scared of a couple of big words??


Keith wrote:
Bri wrote:

Well, you gave the function in response to the issue of dealing with
controls that had changed their value and your function uses OldValue to
do that... so, what is left to adapt?


You know, there will always be smart-arsed know-it-alls on these groups
who use their no doubt superior knowledge on a subject to try to
humiliate and score cheap points from other contributors. You fall into
this category. I always try to help other Access users where I can but
my contributions can sometimes be a bit off the mark and I'm happy and
grateful to accept corrections where necessary from those with better
knowledge, this is how I learn from my mistakes, but when those
corrections are offered in a holier-than-thou manner it really pisses me
off.

I am not so geek-like that I know about every method, every function,
every facet of Access. I am also sometimes guilty of reading posts too
quickly. In this instance, although I read the "unbound" part I failed
to digest it fully which is why I offered the code for adaptation and
not as a belt and braces solution. So I made a mistake, so what? I'm
sure the OP realised that without your cheap shots.

I read your exchange with David Fenton in the "Created on Access 2003,
but......................." thread with interest. David is extremely
knowledgeable in Access but, IMO, his bedside manner can sometimes leave
a little to be desired, but it pales into insignificance compared to
yours. This is not something I would be proud of if I were you, which
thankfully I am not.

<PLONK>


Jun 19 '06 #32
"aa*********@gmail.com" <aa*********@gmail.com> wrote:
or is keithie scared of a couple of big words??


Aaron.

Your postings are inappropriate for these newsgroups. Please leave.

Tony
--
Tony Toews, Microsoft Access MVP
Please respond only in the newsgroups so that others can
read the entire thread of messages.
Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
Jun 19 '06 #33
Tony

Your obsolete MDB bullshit doesn't belong on MY FORUM.

Grow up and learn a real database engine kid.

I'm personally sick and tired of compact and repair.
tired of corruption; re-linking.. and all that crap.

I have a superior solution.

I can create RI through scripts whenver i want.

I find it funny the 'groupthink' on this newsgroup
people slam people for willing to think outside the box.

I find it laughable that Keith was freaking out over nothing.
This isn't Sunday school.

This is WHERE LIKE-MINDED PEOPLE COME TO DISCUSS AND ARGUE.

Maybe if you kids don't like people talking in uppercase letters? Then
maybe you kids should have stopped using an obsolete database 5 years
ago.

Goddamn kids learn a real RDBMS

Access Data Projects are superior to MDB in every imaginable way.

-Aaron
Tony Toews wrote:
"aa*********@gmail.com" <aa*********@gmail.com> wrote:
or is keithie scared of a couple of big words??


Aaron.

Your postings are inappropriate for these newsgroups. Please leave.

Tony
--
Tony Toews, Microsoft Access MVP
Please respond only in the newsgroups so that others can
read the entire thread of messages.
Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm


Jun 19 '06 #34
rkc
Jamie Collins wrote:
rkc wrote:
What does SQL have to do with referential integrity?

http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.


I didn't see any mention of SQL in the Referential Integrity
entry under that topic.
Jun 19 '06 #35
fucking retards

SQL Server is more powerful
anyone that uses MDB in the year 2006?

you should spit on them.
out of the blue; just walk up to them and spit.

you can have constraints-- you can have triggers-- you can have custom
dataTypes


rkc wrote:
Jamie Collins wrote:
rkc wrote:
What does SQL have to do with referential integrity?

http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.


I didn't see any mention of SQL in the Referential Integrity
entry under that topic.


Jun 20 '06 #36
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
fucking retards

SQL Server is more powerful
anyone that uses MDB in the year 2006?

you should spit on them.
out of the blue; just walk up to them and spit.

you can have constraints-- you can have triggers-- you can have custom
dataTypes


rkc wrote:
Jamie Collins wrote:
rkc wrote:

>What does SQL have to do with referential integrity?
http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.


I didn't see any mention of SQL in the Referential Integrity
entry under that topic.

Jun 20 '06 #37

rkc wrote:
http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.


I didn't see any mention of SQL in the Referential Integrity
entry under that topic.


The entry for 'SQL' references the entry for 'Referential Integrity'
but not the other way around. What's your point?

Jamie.

--

Jun 20 '06 #38
<aa*********@gmail.com> wrote in message
news:11**********************@f6g2000cwb.googlegro ups.com...


That's my insomnia cured. Thanks.
Jun 20 '06 #39
rkc
Jamie Collins wrote:
rkc wrote:
http://en.wikipedia.org/wiki/SQL

See the 'Concepts' section.


I didn't see any mention of SQL in the Referential Integrity
entry under that topic.

The entry for 'SQL' references the entry for 'Referential Integrity'
but not the other way around. What's your point?


Referential integrity is not an SQL concept.
It's a relational database design concept.
Jun 20 '06 #40
rkc wrote:
Referential integrity is not an SQL concept.
It's a relational database design concept.


You got it in the end!

To relate back your original enquiry, 'What does SQL have to do with
referential integrity?' If you want declarative referential integrity,
SQL's got it (Jet SQL's got it so I guess you can say Access's got it
too).

HTH,
Jamie.

--

Jun 20 '06 #41
good stuff
IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END


Terry Kreft wrote:
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
fucking retards

SQL Server is more powerful
anyone that uses MDB in the year 2006?

you should spit on them.
out of the blue; just walk up to them and spit.

you can have constraints-- you can have triggers-- you can have custom
dataTypes


rkc wrote:
Jamie Collins wrote:
> rkc wrote:
>
>>What does SQL have to do with referential integrity?
>
>
> http://en.wikipedia.org/wiki/SQL
>
> See the 'Concepts' section.

I didn't see any mention of SQL in the Referential Integrity
entry under that topic.


Jun 20 '06 #42
Don't trolls get bored of themselves ??
Not even sometimes ??

You are a horsecrap baby indeed ...

Arno R
<aa*********@gmail.com> schreef in bericht news:11**********************@p79g2000cwp.googlegr oups.com...
good stuff


IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END






Terry Kreft wrote:
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
> fucking retards
>
> SQL Server is more powerful
> anyone that uses MDB in the year 2006?
>
> you should spit on them.
> out of the blue; just walk up to them and spit.
>
> you can have constraints-- you can have triggers-- you can have custom
> dataTypes
>
>
>
>
> rkc wrote:
> > Jamie Collins wrote:
> > > rkc wrote:
> > >
> > >>What does SQL have to do with referential integrity?
> > >
> > >
> > > http://en.wikipedia.org/wiki/SQL
> > >
> > > See the 'Concepts' section.
> >
> > I didn't see any mention of SQL in the Referential Integrity
> > entry under that topic.
>

Jun 20 '06 #43
no i dont get tired.

you pansies just look funny dancing around with your pink mdb files

oh; look at the little babies playing with MDB.. how CUTE!!!

-Aaron
Arno R wrote:
Don't trolls get bored of themselves ??
Not even sometimes ??

You are a horsecrap baby indeed ...

Arno R
<aa*********@gmail.com> schreef in bericht news:11**********************@p79g2000cwp.googlegr oups.com...
good stuff
IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END


Terry Kreft wrote:
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
> fucking retards
>
> SQL Server is more powerful
> anyone that uses MDB in the year 2006?
>
> you should spit on them.
> out of the blue; just walk up to them and spit.
>
> you can have constraints-- you can have triggers-- you can have custom
> dataTypes
>
>
>
>
> rkc wrote:
> > Jamie Collins wrote:
> > > rkc wrote:
> > >
> > >>What does SQL have to do with referential integrity?
> > >
> > >
> > > http://en.wikipedia.org/wiki/SQL
> > >
> > > See the 'Concepts' section.
> >
> > I didn't see any mention of SQL in the Referential Integrity
> > entry under that topic.
>


Jun 20 '06 #44
I love the way that you have no compunction about showing how ignorant you
are of both transact SQL and Access SQL and the way that you're not afraid
of displaying your stupidity in public is really marvelous.
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
good stuff
IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END


Terry Kreft wrote:
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
fucking retards

SQL Server is more powerful
anyone that uses MDB in the year 2006?

you should spit on them.
out of the blue; just walk up to them and spit.

you can have constraints-- you can have triggers-- you can have custom
dataTypes


rkc wrote:
> Jamie Collins wrote:
> > rkc wrote:
> >
> >>What does SQL have to do with referential integrity?
> >
> >
> > http://en.wikipedia.org/wiki/SQL
> >
> > See the 'Concepts' section.
>
> I didn't see any mention of SQL in the Referential Integrity
> entry under that topic.

Jun 20 '06 #45
Terry;

screw yourself; I am much better at Access AND Sql than anyone i've
ever seen on this newsgroup.

And most importantly; I dont just blindly use the first tool the comes
across my desk.

I use the best tool for whatever I am doing.

Most of your idiots are unnecessarily biased agasint Access Data
Projects.
I find that laughable.
-Aaron
Terry Kreft wrote:
I love the way that you have no compunction about showing how ignorant you
are of both transact SQL and Access SQL and the way that you're not afraid
of displaying your stupidity in public is really marvelous.
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
good stuff
IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END


Terry Kreft wrote:
IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
BEGIN
DELETE FROM newsgroup WHERE user_name = 'aaron'
RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
END
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11*********************@u72g2000cwu.googlegro ups.com...
> fucking retards
>
> SQL Server is more powerful
> anyone that uses MDB in the year 2006?
>
> you should spit on them.
> out of the blue; just walk up to them and spit.
>
> you can have constraints-- you can have triggers-- you can have custom
> dataTypes
>
>
>
>
> rkc wrote:
> > Jamie Collins wrote:
> > > rkc wrote:
> > >
> > >>What does SQL have to do with referential integrity?
> > >
> > >
> > > http://en.wikipedia.org/wiki/SQL
> > >
> > > See the 'Concepts' section.
> >
> > I didn't see any mention of SQL in the Referential Integrity
> > entry under that topic.
>


Jun 20 '06 #46
db*******@hotmail.com wrote:
I am much better at Access AND Sql than anyone i've
ever seen on this newsgroup.


We're all grateful that you have shared your expertise here in CDMA.
But some of us may have missed one or two of your better contributions.
Would you list the links to a few, say ten, of your creative and
original posts so that we can reference them as a small library of
excellence?

In addition, this may help us to remember to maintain the appropriate
level of deferential integrity in our discussions with you.

Jun 20 '06 #47
Ha, ha, ha, it's just marvellous how you have not the slightest piece of
self-respect.

Please continue to show us how wonderful you are<g>; I've quite given up
reading Dilbert as your contributions are so much more originally funny.

You might not know much about programming (except in your world of course)
but you certainly know how to amuse!

I've only seen one piece of code from you and it was so laughably wrong but
far too subtle I thought, most people probably thought you meant it to be
like that.
--

Terry Kreft
<db*******@hotmail.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
Terry;

screw yourself; I am much better at Access AND Sql than anyone i've
ever seen on this newsgroup.

And most importantly; I dont just blindly use the first tool the comes
across my desk.

I use the best tool for whatever I am doing.

Most of your idiots are unnecessarily biased agasint Access Data
Projects.
I find that laughable.
-Aaron
Terry Kreft wrote:
I love the way that you have no compunction about showing how ignorant you are of both transact SQL and Access SQL and the way that you're not afraid of displaying your stupidity in public is really marvelous.
--

Terry Kreft
<aa*********@gmail.com> wrote in message
news:11**********************@p79g2000cwp.googlegr oups.com...
good stuff
IF EXISTS (SELECT TOP 1 'X' FROM newsgroup WHERE tool_of_choice =
'MDB')
BEGIN
RAISERROR ('oh wait a second mdb can't handle real tsql
statements; it is for babies', 16, 127, 'horsecrap')
END


Terry Kreft wrote:
> IF EXISTS (SELECT * FROM newsgroup WHERE user_name = 'aaron')
> BEGIN
> DELETE FROM newsgroup WHERE user_name = 'aaron'
> RAISERROR ('Troll alert - %d talking garbage', 16, 127, 'aaron')
> END
>
>
> --
>
> Terry Kreft
>
>
> <aa*********@gmail.com> wrote in message
> news:11*********************@u72g2000cwu.googlegro ups.com...
> > fucking retards
> >
> > SQL Server is more powerful
> > anyone that uses MDB in the year 2006?
> >
> > you should spit on them.
> > out of the blue; just walk up to them and spit.
> >
> > you can have constraints-- you can have triggers-- you can have custom > > dataTypes
> >
> >
> >
> >
> > rkc wrote:
> > > Jamie Collins wrote:
> > > > rkc wrote:
> > > >
> > > >>What does SQL have to do with referential integrity?
> > > >
> > > >
> > > > http://en.wikipedia.org/wiki/SQL
> > > >
> > > > See the 'Concepts' section.
> > >
> > > I didn't see any mention of SQL in the Referential Integrity
> > > entry under that topic.
> >

Jun 21 '06 #48
<aa*********@gmail.com> wrote in message
news:11**********************@h76g2000cwa.googlegr oups.com...
no i dont get tired.


I'm sure that one day we'll read a news item about you that concludes "...
before turning the gun on himself."
Jun 21 '06 #49
How a simple question has exploded!

Information AND entertainment - don't you just love newsgroups?!

:-)
Andrew

Keith Wilby wrote:
<aa*********@gmail.com> wrote in message
news:11**********************@h76g2000cwa.googlegr oups.com...
no i dont get tired.


I'm sure that one day we'll read a news item about you that concludes "...
before turning the gun on himself."


Jun 21 '06 #50

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Grant McLean | last post by:
Hi First a simple question ... I have a table "access_log" that has foreign keys "app_id" and "app_user_id" that reference the "application_type" and "app_user" tables. When I insert into...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.