Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Temporarily remove referential integrity checks through VBA?

39 views
Skip to first unread message

Andrew R

unread,
Jun 15, 2006, 2:59:04 AM6/15/06
to
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

Arno R

unread,
Jun 15, 2006, 3:45:24 AM6/15/06
to

"Andrew R" <andrew....@cashette.com> schreef in bericht news:1150354744.6...@p79g2000cwp.googlegroups.com...

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

Terry Kreft

unread,
Jun 15, 2006, 4:28:23 AM6/15/06
to
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" <andrew....@cashette.com> wrote in message
news:1150354744.6...@p79g2000cwp.googlegroups.com...

'69 Camaro

unread,
Jun 15, 2006, 4:32:23 AM6/15/06
to
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/expert_contributors2.html for contact
info.


"Andrew R" <andrew....@cashette.com> wrote in message
news:1150354744.6...@p79g2000cwp.googlegroups.com...

Keith Wilby

unread,
Jun 15, 2006, 4:38:16 AM6/15/06
to
"Andrew R" <andrew....@cashette.com> wrote in message
news:1150354744.6...@p79g2000cwp.googlegroups.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


Jamie Collins

unread,
Jun 15, 2006, 4:41:45 AM6/15/06
to

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.

--

David W. Fenton

unread,
Jun 15, 2006, 9:01:36 AM6/15/06
to
"'69 Camaro" <ForwardZERO_SP...@Spameater.orgZERO_SPAM>
wrote in news:OYrv#WFkGH...@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/

David W. Fenton

unread,
Jun 15, 2006, 9:02:16 AM6/15/06
to
"Jamie Collins" <jamiec...@xsmail.com> wrote in
news:1150360905....@u72g2000cwu.googlegroups.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.

Jamie Collins

unread,
Jun 15, 2006, 10:32:29 AM6/15/06
to

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.

--

David W. Fenton

unread,
Jun 15, 2006, 2:12:11 PM6/15/06
to
"Jamie Collins" <jamiec...@xsmail.com> wrote in
news:1150381949.7...@p79g2000cwp.googlegroups.com:

Then your schema is wrong.

Fix that and the problem goes away.

Bri

unread,
Jun 15, 2006, 2:22:15 PM6/15/06
to

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

'69 Camaro

unread,
Jun 15, 2006, 4:01:37 PM6/15/06
to
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/expert_contributors2.html for contact
info.


"David W. Fenton" <XXXu...@dfenton.com.invalid> wrote in message
news:Xns97E35BD32907Df9...@127.0.0.1...

David W. Fenton

unread,
Jun 15, 2006, 6:49:20 PM6/15/06
to
"'69 Camaro" <ForwardZERO_SP...@Spameater.orgZERO_SPAM>
wrote in news:#uJgGYLk...@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.

Keith Wilby

unread,
Jun 16, 2006, 3:17:33 AM6/16/06
to
"Bri" <n...@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.


Jamie Collins

unread,
Jun 16, 2006, 4:41:23 AM6/16/06
to

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/microsoft.public.access.tablesdbdesign/browse_frm/thread/b806c09e1a9cc11e/

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.

--

Andrew R

unread,
Jun 16, 2006, 5:03:40 AM6/16/06
to
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

Andrew R

unread,
Jun 16, 2006, 5:07:59 AM6/16/06
to
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

David W. Fenton

unread,
Jun 16, 2006, 9:38:07 AM6/16/06
to
"Jamie Collins" <jamiec...@xsmail.com> wrote in
news:1150447283....@r2g2000cwb.googlegroups.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/microsoft.public.access.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.

Jamie Collins

unread,
Jun 16, 2006, 11:23:23 AM6/16/06
to
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.

--

Bri

unread,
Jun 16, 2006, 12:09:20 PM6/16/06
to

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

David W. Fenton

unread,
Jun 16, 2006, 9:44:55 PM6/16/06
to
"Jamie Collins" <jamiec...@xsmail.com> wrote in
news:1150471402....@h76g2000cwa.googlegroups.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.

Keith

unread,
Jun 17, 2006, 4:57:08 AM6/17/06
to
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>

Bri

unread,
Jun 17, 2006, 4:27:16 PM6/17/06
to

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

Jamie Collins

unread,
Jun 18, 2006, 3:30:25 AM6/18/06
to

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.

--

Keith

unread,
Jun 18, 2006, 7:41:38 AM6/18/06
to
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.

David W. Fenton

unread,
Jun 18, 2006, 5:10:54 PM6/18/06
to
"Jamie Collins" <jamiec...@xsmail.com> wrote in
news:1150615825....@h76g2000cwa.googlegroups.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.

Bri

unread,
Jun 18, 2006, 9:14:25 PM6/18/06
to
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

Jamie Collins

unread,
Jun 19, 2006, 4:02:28 AM6/19/06
to

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.

--

rkc

unread,
Jun 19, 2006, 6:54:13 AM6/19/06
to

What does SQL have to do with referential integrity?

Jamie Collins

unread,
Jun 19, 2006, 7:37:01 AM6/19/06
to

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

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

See the 'Concepts' section.

Jamie.

--

aaron...@gmail.com

unread,
Jun 19, 2006, 9:36:28 AM6/19/06
to

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??

Tony Toews

unread,
Jun 19, 2006, 12:40:34 PM6/19/06
to
"aaron...@gmail.com" <aaron...@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

aaron...@gmail.com

unread,
Jun 19, 2006, 3:01:08 PM6/19/06
to
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

rkc

unread,
Jun 19, 2006, 5:36:12 PM6/19/06
to

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

aaron...@gmail.com

unread,
Jun 20, 2006, 12:47:34 AM6/20/06
to
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

Terry Kreft

unread,
Jun 20, 2006, 2:35:33 AM6/20/06
to
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


<aaron...@gmail.com> wrote in message
news:1150778854....@u72g2000cwu.googlegroups.com...

Jamie Collins

unread,
Jun 20, 2006, 3:04:21 AM6/20/06
to

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.

--

Keith Wilby

unread,
Jun 20, 2006, 3:40:21 AM6/20/06
to
<aaron...@gmail.com> wrote in message
news:1150724188.2...@f6g2000cwb.googlegroups.com...
>

That's my insomnia cured. Thanks.


rkc

unread,
Jun 20, 2006, 6:14:07 AM6/20/06
to

Referential integrity is not an SQL concept.
It's a relational database design concept.

Jamie Collins

unread,
Jun 20, 2006, 7:18:14 AM6/20/06
to
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.

--

aaron...@gmail.com

unread,
Jun 20, 2006, 11:24:24 AM6/20/06
to
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

Arno R

unread,
Jun 20, 2006, 12:43:12 PM6/20/06
to
Don't trolls get bored of themselves ??
Not even sometimes ??

You are a horsecrap baby indeed ...

Arno R


<aaron...@gmail.com> schreef in bericht news:1150817064.2...@p79g2000cwp.googlegroups.com...

aaron...@gmail.com

unread,
Jun 20, 2006, 2:46:24 PM6/20/06
to
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

Terry Kreft

unread,
Jun 20, 2006, 6:01:22 PM6/20/06
to
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


<aaron...@gmail.com> wrote in message
news:1150817064.2...@p79g2000cwp.googlegroups.com...

dbah...@hotmail.com

unread,
Jun 20, 2006, 6:40:17 PM6/20/06
to
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

Lyle Fairfield

unread,
Jun 20, 2006, 7:24:30 PM6/20/06
to
dbah...@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.

Terry Kreft

unread,
Jun 21, 2006, 3:11:20 AM6/21/06
to
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


<dbah...@hotmail.com> wrote in message
news:1150843217.0...@p79g2000cwp.googlegroups.com...

Keith Wilby

unread,
Jun 21, 2006, 3:15:22 AM6/21/06
to
<aaron...@gmail.com> wrote in message
news:1150829184.5...@h76g2000cwa.googlegroups.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."


Andrew R

unread,
Jun 21, 2006, 4:12:36 AM6/21/06
to
How a simple question has exploded!

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

:-)
Andrew

Lyle Fairfield

unread,
Jun 21, 2006, 9:21:40 AM6/21/06
to

Better yet why not create a compendium of these wonderful ideas in an
SQL-Server Table with code and descriptions in Text fields? You could
then create and make freely available an ADP which would allow us all
to access your wonderful ideas. I'm sure, that you, as El Supremo
ADP/SQL can craft your application in such a way that there will be no
security breaches or concerns.
In that way you can not only show, but also demonstrate the magnificent
qualities of the ADP. What an opportunity!

dbah...@hotmail.com

unread,
Jun 21, 2006, 9:37:45 AM6/21/06
to
Terry

fuck yourself

dbah...@hotmail.com

unread,
Jun 21, 2006, 9:42:27 AM6/21/06
to

for the record

sql server security is a LOT better than your silly MDB bullshit.

can you kids even prevent me from updating a single table?

I'm sorry that you idiots try to TALK_SHIT about people just because
they're willing to think OUTSIDE THE BOX.

Just because I dont have to compact and repair my database every 3
days?? that makes me less of a man?

Because I dont spend half my time re-syncing Tables and Queries.. is
that why you call me a wimp?

I use a platform that runs circles around you kids.

Billions of records with sub-second response times.
Don't sit around and talk shit just because your obsolete MDB bullshit
can't scale to a million records.

Keith Wilby

unread,
Jun 21, 2006, 9:43:59 AM6/21/06
to
"Andrew R" <andrew....@cashette.com> wrote in message
news:1150877555.9...@p79g2000cwp.googlegroups.com...

> How a simple question has exploded!
>
> Information AND entertainment - don't you just love newsgroups?!
>
> :-)
> Andrew
>

You should be around when "PC Datasheet" is here. Actually, both
trouble-making parties should really be ignored but sometimes some of us
give in to temptation too easily ;-)

Keith.


dbah...@hotmail.com

unread,
Jun 21, 2006, 9:44:10 AM6/21/06
to
no self respect?

at least I dont use a PUSSY database engine

uh compact and repair?
in the year 2006?

GAG

grow some balls kids and stop fighting for the pink team

Terry Kreft

unread,
Jun 21, 2006, 10:07:28 AM6/21/06
to
LOL, your wit almost exceeds your demonstrated technical ability.

With considered demonstrable arguments such as this I don't see how anyone
could possibly disagree.

--

Terry Kreft


<dbah...@hotmail.com> wrote in message
news:1150897065.6...@u72g2000cwu.googlegroups.com...

Lyle Fairfield

unread,
Jun 21, 2006, 10:12:17 AM6/21/06
to
dbah...@hotmail.com wrote:
> for the record
>
> sql server security is a LOT better than your silly MDB bullshit.
>
> can you kids even prevent me from updating a single table?
>
> I'm sorry that you idiots try to TALK_SHIT about people just because
> they're willing to think OUTSIDE THE BOX.
>
> Just because I dont have to compact and repair my database every 3
> days?? that makes me less of a man?
>
> Because I dont spend half my time re-syncing Tables and Queries.. is
> that why you call me a wimp?
>
> I use a platform that runs circles around you kids.
>
> Billions of records with sub-second response times.
> Don't sit around and talk shit just because your obsolete MDB bullshit
> can't scale to a million records.

Is that a No? You mean you won't share your expertise? What a shame!

Terry Kreft

unread,
Jun 21, 2006, 10:14:59 AM6/21/06
to

I think you've got a spurious ? in there on the first line, wasn't that
meant to be a statement?

To be honest I'm not sure which database engine you do use as you've done
such a good job of obfuscating your technical ability, I know which one you
claim, but then we can all claim anything we want, can't we.

--

Terry Kreft


<dbah...@hotmail.com> wrote in message
news:1150897450.8...@y41g2000cwy.googlegroups.com...

Terry Kreft

unread,
Jun 21, 2006, 10:17:24 AM6/21/06
to
Keith,
Didn't your mother ever warn you not to invoke Trolls by name ?

<g>

--

Terry Kreft


"Keith Wilby" <he...@there.com> wrote in message
news:44994a6f$1...@glkas0286.greenlnk.net...


> "Andrew R" <andrew....@cashette.com> wrote in message
> news:1150877555.9...@p79g2000cwp.googlegroups.com...
> > How a simple question has exploded!
> >
> > Information AND entertainment - don't you just love newsgroups?!
> >
> > :-)
> > Andrew
> >
>

> You should be around when "XX XATASHEET" is here. Actually, both

Keith Wilby

unread,
Jun 21, 2006, 10:49:41 AM6/21/06
to
"Terry Kreft" <terry...@mps.co.uk> wrote in message
news:eMuWs1Tl...@TK2MSFTNGP02.phx.gbl...

> Keith,
> Didn't your mother ever warn you not to invoke Trolls by name ?
>
> <g>
>

My mistake m'lud. :-) It has been awfully quiet on that front and I quite
like it.


Terry Kreft

unread,
Jun 21, 2006, 12:20:29 PM6/21/06
to
It's funny though, isn't it, how some trolls are amusing, especially when
they're trying to be obnoxious and others are just plain obnoxious?

--

Terry Kreft


"Keith Wilby" <he...@there.com> wrote in message

news:449959d5$1...@glkas0286.greenlnk.net...

Lyle Fairfield

unread,
Jun 21, 2006, 12:27:46 PM6/21/06
to
Terry Kreft wrote:
> It's funny though, isn't it, how some trolls are amusing, especially when
> they're trying to be obnoxious and others are just plain obnoxious?

IIRC Aaron has made some helpful and informative posts in ADP groups. A
year or so ago he seemed more temperate, reasoned and capable, ...
even. But, he's not contributing much any more; he hasn't even
introduced me to any new "words". Life goes on.

aaron...@gmail.com

unread,
Jun 21, 2006, 3:59:37 PM6/21/06
to
SQL RI works across the 2gb limit and the 2gb limit in Access??

I can sneeze and make 2gb of data out of it.

I've seen spreadsheets that hit the 2gb limit. i mean for christ sakes.

you can't rely on RI in an MDB.. not for only 2 tables with 2 records
each and only 2 users.

in practical implementations; it is impossible to do.

-Aaron

David W. Fenton

unread,
Jun 21, 2006, 7:53:21 PM6/21/06
to
"Terry Kreft" <terry...@mps.co.uk> wrote in
news:45CdnTmBufd...@karoo.co.uk:

> It's funny though, isn't it, how some trolls are amusing,
> especially when they're trying to be obnoxious and others are just
> plain obnoxious?

Amusement is in the eye of the beholder.

This beholder's eyes are complete devoid of any amusement.

If you give a rat's ass.

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

Terry Kreft

unread,
Jun 22, 2006, 2:56:20 AM6/22/06
to
In the eye of the beholder is Amusement.

Devoid of any amusement this beholder's eyes are complete.

If you give a rat's ass.


--

Terry Kreft


"David W. Fenton" <XXXu...@dfenton.com.invalid> wrote in message
news:Xns97E9CA529E953f9...@127.0.0.1...

Jamie Collins

unread,
Jun 22, 2006, 3:33:38 AM6/22/06
to

aaron...@gmail.com wrote:
> SQL [Server] RI works across the 2gb limit

File size (and other limits) aside, DRI is better implemented in Jet
4.0 than in SQL Server 2005 e.g. try this simple example:

CREATE TABLE OrgChart (
employee_number INTEGER NOT NULL PRIMARY KEY,
boss INTEGER
REFERENCES OrgChart (employee_number)
ON DELETE CASCADE
ON UPDATE CASCADE
);

SQL Server 2005 worries that this 'may cause cycles or multiple cascade
paths' when even a moron (e.g. Jet 4.0) can figure it out.

Do I choose Jet over SQL Server because its implementation is better in
some areas e.g. DRI, CHECK constraints, etc? Of course not.

The fact remains that I sometimes design DRI/CHECKs in Jet 4.0 before
having to 'dumb down' for SQL Server 2005 e.g. a trigger with the
comment 'Replace this trigger with proper functionality when the SQL
Server team stop obsessing over CLR and get round finishing the
implementation of the SQL-92 standard, or at least get as smarts as
Access was FIVE years ago.'

Jamie.

--

Arno R

unread,
Jun 21, 2006, 9:06:08 PM6/21/06
to

<aaron...@gmail.com> schreef in bericht news:1150919977.5...@u72g2000cwu.googlegroups.com...

> SQL RI works across the 2gb limit and the 2gb limit in Access??
>
> I can sneeze and make 2gb of data out of it.
>
> I've seen spreadsheets that hit the 2gb limit. i mean for christ sakes.
>
> you can't rely on RI in an MDB.. not for only 2 tables with 2 records
> each and only 2 users.
>
> in practical implementations; it is impossible to do.
>
> -Aaron
>

Can't you just get lost with your horsecrap ??

BTW: Horsecrap *is* your language isn't it ??

Arno R

aaron...@gmail.com

unread,
Jun 22, 2006, 1:32:28 PM6/22/06
to
Terry;

it is so hilarious that you guys sit around and defend an obsolete
database format.. that is TEN YEARS out of date.

Grow some balls and lose the training wheels; kids.

Access Data Projects _SLAUGHTERS_ MDB format. It slaughters ACCDB
format also.

-Aaron

Terry Kreft

unread,
Jun 23, 2006, 3:18:26 AM6/23/06
to
Oh, are you back?

I thought that you had possibly gone off to learn a new tune, or at least
add anoher string to your bow.

It's obvious that you haven't been for an eye-test, as every problem is
still looking like a nail to you.

--

Terry Kreft


<aaron...@gmail.com> wrote in message
news:1150997548.9...@c74g2000cwc.googlegroups.com...

Keith Wilby

unread,
Jun 23, 2006, 3:40:04 AM6/23/06
to
<aaron...@gmail.com> wrote in message
news:1150997548.9...@c74g2000cwc.googlegroups.com...
>
> Grow some balls

I shounds like you lost yoursh in a terrible shmelting accident.


dbah...@hotmail.com

unread,
Jun 23, 2006, 9:09:44 AM6/23/06
to
you guys are a bunch of assholes and dipshits

just because I speak the truth-- that MDB is obsolete-- it doesn't mean
that I'm a troll.

you guys need to get a life; grow some balls and use a real database
engine

Craig Alexander Morrison

unread,
Jun 23, 2006, 10:45:46 AM6/23/06
to
I use Access and DB2 -- ADPs are obsolete.

However I am glad you like them, I used to but as I could not use them to
access DB2 what was the point of them, they tied you to SQL Server, which is
not the brightest kid in the class even weaker in some respects than Jet 4.

BTW DB2 Express-C is free and is very very good, I remember you were abusive
to me about that a few months back and I forgot to mention it did not cost
thousands of dollars as you alleged. Free to develop, deploy and distribute.

Your abusive posts are no doubt the result of frustration about the demise
of ADPs, but you do not see me and others being abusive about people who use
SQL Server 2005.

Craig Alexander Morrison
Crawbridge Data (Scotland) Limited

<dbah...@hotmail.com> wrote in message
news:1151068184.5...@p79g2000cwp.googlegroups.com...
> you guys are a bunch of ...

aaron...@gmail.com

unread,
Jun 23, 2006, 12:42:06 PM6/23/06
to
Craig;

you're a fucking idiot and a liar.

SQL Server runs the worlds' largest databases.

When was the last time that DB2 won a price/performance on tpc.org??

SQL Server rocks dude; you're so full of crap.

I do not have abusive posts.
I just deal with a bunch of close-minded people that won't give ADP a
chance.

ADP are the best platform anywhere.

Running them against SQL 2005 is the most pleasant experience I've ever
had.

You don't have enough balls to talk shit about SQL 2005 because you're
fighting for the wrong team.

IBM is a bunch of dinosaurs; I mean seriously here-- Oracle has at
least a little bit of punch.

And for the record; you CAN use DB2 inside of ADP.
It's DEAD simple kid.

MUCH MUCH MUCH better platform than MDB.

-Aaron

Terry Kreft

unread,
Jun 23, 2006, 12:45:17 PM6/23/06
to
Ha, ha, ha the old ones are always the best.

You're not a Troll, snigger!

Seriously though, you shouldn't deny your nature, that way lies deep
unhappiness. Next you'll be railing against lifes little problems and
blowing them up out of all proportion, even worse you might start thinking
strange things like, your truth is the only truth and that anyone who
doesn't agrre with you is stupid and things.

Anyway you take care until we talk again.

--

Terry Kreft


<dbah...@hotmail.com> wrote in message
news:1151068184.5...@p79g2000cwp.googlegroups.com...

Craig Alexander Morrison

unread,
Jun 23, 2006, 12:59:30 PM6/23/06
to
> you're a fucking idiot and a liar.
> I do not have abusive posts.

I am not so sure if both these statements are complimentary (complementary)

Craig Alexander Morrison

<aaron...@gmail.com> wrote in message
news:1151080926.8...@u72g2000cwu.googlegroups.com...
> Craig;


aaron...@gmail.com

unread,
Jun 23, 2006, 1:40:48 PM6/23/06
to
I'm not ABUSING you.

I am merely stating fact.

You can take your BILLION DOLLAR mainframes and shove them up your
butt.
What are you going to use for Data Entry.. RPG? rofl

JAVA? rofl


We've got a much much much better stack here.
And I dont have to deal with any of your BS 'linked tables' or 'refresh
links' or 'setup odbc connections' or performance issues

i dont need to shuffle around queries-- or tables at all for that
matter.

I keep them all on a single server; or i can link to additonal servers
using openQuery, openRowset; etc.

Linked Servers.

If you've got a choice between troubleshooting linked tables in a
hundred different places-- or maintaining linked tables in a single
place?

I mean seriously here.

If you can keep your SQL Server on a gigabit switch and then you only
return the results you want?

there's no way in hell it isn't faster in SQL Server than on MDB.

MDB are for babies.

Rusty, Old, Moldy Babies.

-Aaron

0 new messages