How to normalize contacts in Access

:oops:

Don't know how feasible, but I would advise you change your bank!

Wow!

Over here (UK), our banks go to great lengths to tell us that they will never ask for our card PIN's; so if you're being asked for it, it is most likely a scam/fraud.
No, they don't ask for the PIN over the phone. They ask for it In lieu of a password! On their web page. The account manager seemed very uncertain when I said this is a horrible security practice, like there was no other option than a PIN.

1659237311628.png
 
No, they don't ask for the PIN over the phone.
I got that, but the fact they want you to use it as a p/w is exactly as you describe: "a horrible security practice"

Makes you wonder about their attitude to the rest of their security!
 
Yep, it's a problem in MS dbs, because MS has never gotten their hands dirty and figured out how to properly distribute a db remotely. That doesn't mean that others haven't done it successfully.
Not quite sure what you mean by ‘properly distribute a db remotely’ can you clarify what this actually means.

Would be interested in some examples where others have achieved this
 
hi @twgonder

I have 2 contact management systems with source code in Access that you may want to look at to get ideas.

http://msaccessgurus.com/tools.htm#Contacts

The Contact Management Template is older and more robust (and also has many extra tables so just import what you need). MyContacts is newer and has better naming but isn't split into FE/BE and is easier to learn.

ps, Welcome to AWF!
Hi Crystal.
I tried several times but MyContacts would not unzip
 

Attachments

  • Capture.PNG
    Capture.PNG
    8.5 KB · Views: 218
Yep, it's a problem in MS dbs, because MS has never gotten their hands dirty and figured out how to properly distribute a db remotely. That doesn't mean that others haven't done it successfully
It's a problem with ALL database engines. You cannot enforce Referential Integrity between tables in two different databases. Period. It has NOTHING to do with properly distributing a db remotely. It has to do with the architecture of a database.

Of course, if you know of a case where "others have done it successfully" I am always open to learning. Links please, if they exist.
 
directing back to the topic of this thread .... contacts

side topics are great .... always learn something new ~

I posted a link to 2 examples to help with the question about structuring contacts. @twgonder liked but @HealthyB1 had trouble downloading ... and I want to know if that was caused by mark of the web as I can download and unzip ok
 
you may need to remove Mark of the Web from the zip file. Here's a link with steps to do that:

https://msaccessgurus.com/MOTW_Unblock.htm

Does that do it @HealthyB1?
Hi Crystal,
I tried what you suggested and checked the unblocked, applied same and then rechecked properties again and unblocked message had gone. However I still get the same error message as before.
I then decided to download the next file from you site, being the contacts management template "Contacts_32_64_160430.zip" and it also came down as blocked. I set it to unblock and the file unzipped as expected. So it seems to be only the first zip file for "Contacts" that is causing me trouble..
Cheers
 
Last edited:
I was able to download and open Contacts, the MyContacts keeps coming up as invalid when trying to open it.
Have tried twice now, downloading each time.
 
It's a problem with ALL database engines. You cannot enforce Referential Integrity between tables in two different databases. Period. It has NOTHING to do with properly distributing a db remotely. It has to do with the architecture of a database.

Of course, if you know of a case where "others have done it successfully" I am always open to learning. Links please, if they exist.
Hi George, the problem is, everyone thinks that databases started with SQL or Access. Forty years ago we had to write our own from scratch, with the idea of distribution in mind. My business partner Ted took about a month to write the code. It worked great. I can't provide a link, as this was well before the Internet and it was proprietary code which I no longer have anyways.

Besides just handling integrity, Ted handled synchronization on the record and field level with a pretty sophisticated transaction logging routine(s). We first had to do this as four of us were writing code and creating tables with what little time we could "borrow" from client's mini computers (we couldn't afford our own back then at a cost of over $50,000 for the cheapest model--not to mention the space and air-conditioning to run it). Once a week we all brought our 1/2" tapes to the vendor's sales office, which let us use their computer after hours on Friday nights, and synched up all the programs and data. It was rare there was a conflict, as Ted had each transaction log down to the millisecond of a given day, even though the time might be off a few minutes between all the computers we had used. Then we rolled out all the changes back to our client's computers the next week as we visited them (the long-forgotten sneaker-net). Now, if Ted could do that in a month, I wonder why Microsoft has had so much trouble over thirty years? Which all goes to show, one motivated to find-a-new-career-truck-driver can often do a better job that a "Seattle campus" filled with certified geniuses.

Sorry that I keep adding little edits, but (there's the big but), the main driver program for my "forms" program took 45 minutes to compile. Two years ago, when I had it running again, it compiled in less than a second. So, in my mind, there's no reason with the power available today, that MS can't do things we did forty years ago on a Friday evening (with beer and pizza).

Anyways, I think we come up out of one rabbit hole and gone down another from the original post. I've lost track of where that happened.
 
Last edited:
Yes/No Yes and No values and fields that contain only one of two values (Yes/No, True / False, or On/Off). 1 bit.
Then how is it possible that true = -1? I'm pretty sure my old MS manual is confusing field type of yes/no with the VBA "compatible Access Basic data type" in the explanation. They don't show the actual size used in Access. And my F1 on the topic in Access goes off into Wonderland. Whatever happened to the local helps that didn't need Internet access (which I often don't have)?
 
Then how is it possible that true = -1? I'm pretty sure my old MS manual is confusing field type of yes/no with the VBA "compatible Access Basic data type" in the explanation. They don't show the actual size used in Access. And my F1 on the topic in Access goes off into Wonderland. Whatever happened to the local helps that didn't need Internet access (which I often don't have)?
If the data is in Access, True is -1. However if data is in SQL Server, then True is 1. False is always 0. Therefore, to test for true, I like to test for <>False or <>0

EDIT:
Yes/No's bit is stored in a byte unlike the byte data type whose range is 0 to 255
I often store Yes/No as an integer to avoid the byte data type and let the value be null (unlike the integer type in VBA, which can't be null).

Hi Crystal,
It works perfectly now. Many thanks.
you're welcome and thank you
 
Last edited:
Hi George, the problem is, everyone thinks that databases started with SQL or Access. Forty years ago we had to write our own from scratch, with the idea of distribution in mind. My business partner Ted took about a month to write the code. It worked great. I can't provide a link, as this was well before the Internet and it was proprietary code which I no longer have anyways.

Besides just handling integrity, Ted handled synchronization on the record and field level with a pretty sophisticated transaction logging routine(s). We first had to do this as four of us were writing code and creating tables with what little time we could "borrow" from client's mini computers (we couldn't afford our own back then at a cost of over $50,000 for the cheapest model--not to mention the space and air-conditioning to run it). Once a week we all brought our 1/2" tapes to the vendor's sales office, which let us use their computer after hours on Friday nights, and synched up all the programs and data. It was rare there was a conflict, as Ted had each transaction log down to the millisecond of a given day, even though the time might be off a few minutes between all the computers we had used. Then we rolled out all the changes back to our client's computers the next week as we visited them (the long-forgotten sneaker-net). Now, if Ted could do that in a month, I wonder why Microsoft has had so much trouble over thirty years? Which all goes to show, one motivated to find-a-new-career-truck-driver can often do a better job that a "Seattle campus" filled with certified geniuses.

Sorry that I keep adding little edits, but (there's the big but), the main driver program for my "forms" program took 45 minutes to compile. Two years ago, when I had it running again, it compiled in less than a second. So, in my mind, there's no reason with the power available today, that MS can't do things we did forty years ago on a Friday evening (with beer and pizza).

Anyways, I think we come up out of one rabbit hole and gone down another from the original post. I've lost track of where that happened.
I am not at all sure where in that gray wall of text you think you addressed the critical point about two distinct databases and the lack of Referential Integrity across them. However, it's clear that this is indeed a dank rabbit hole. I'm going to move on to other things. Best of luck with your original project.
 
I am not at all sure where in that gray wall of text you think you addressed the critical point about two distinct databases and the lack of Referential Integrity across them. However, it's clear that this is indeed a dank rabbit hole. I'm going to move on to other things. Best of luck with your original project.
I may be confusing this thread with one where I asked about running a split be at remote locations. Please forgive.
 
Out of curiosity, why do you need more than one BE?
Now there's a question I can answer with fact despite George's objections. Back in the 70s and 80s when mainframes and super minis roamed the dp departments (or rather the departments roamed around these pizza ovens), there was a thing called shared computing. This means companies often joined hands to share the cost of these beasts that had 64k of core memory and 30 users.

For twenty years I ran a service bureau that served large corporations with a specific computing and data entry need of claims processing. This was after I did my time at McDonnell Douglas as tech support for the super-mini that they manufactured and sold with the PICK OS/database. Some of my clients were McDonalds, the city of Los Angeles, many car and truck dealerships all having remote computing. I tend to group referential integrity and synchronization together when I talk about these environments, because we had to write the code to do both underneath our applications. I wasn't the only one doing this as McDonalds and Carter Haley Hale had massive distributed systems that all worked together doing the same thing over periodic modem dial-ups to a "main" db and they too wrote their own flavor of referential integrity and synchronization between split back ends. But this very real history is a gray wall to George.

Let's talk about one simple example that was employed in my business. We had about forty clients that contracted with us. The average for each was about a half-billion dollars in processing that balanced to the penny each month; kind of like a bank. For each of them we had a separate account (now called a db file) on our system. In that account was their data, not specifically shared with any other client, (however we did link the accounts together sometimes to pull off some massive cumulative comparisons when the FTC challenged one of our clients with anti-competitive practices). All the clients did share two different databases though. One was for common data like country, state, city, Arbitron/marketing data, etc. and one massive media file that kept track of every radio, TV station, newspaper, magazine, penny saver like publication in the USA and Canada. All those files weren't specific to any one client, It was as we said, universal. We also had another account, very well protected, where all the software was. Lots of time-share, accounting and payroll companies used the same model. Only later did the idiots at Microsoft think it was a good idea to mix data with programming in one place. If I start a payroll or claims processing service here in Colombia in the future, I'll be following that model again as much as possible for fiducial responsibility reasons. For one RFP of the government here, I'm looking at distributed sites that will process the data of 45 million people needing government health care. That's not all going to fit on one ACE or SQL database. However, I do like the idea of using Access as a front end, so that slightly sophisticated users can pound sand all day making queries with the data they are responsible for in a geographic area without bothering me too much.

Not in this thread, but another, did I pointedly ask about distributed processing between different back end dbs in the Access environment. I'm surprised that I've gotten little positive input, given that Access has been around about twenty years longer than our old-clumsy mini/mainframes were at the time.
 
Last edited:
Now there's a question I can answer with fact despite George's objections. Back in the 70s and 80s when mainframes and super minis roamed the dp departments (or rather the departments roamed around these pizza ovens), there was a thing called shared computing. This means companies often joined hands to share the cost of these beasts that had 64k of core memory and 30 users.

For twenty years I ran a service bureau that served large corporations with a specific computing and data entry need of claims processing. This was after I did my time at McDonnell Douglas as tech support for the super-mini that they manufactured and sold with the PICK OS/database. Some of my clients were McDonalds, the city of Los Angeles, many car and truck dealerships all having remote computing. I tend to group referential integrity and synchronization together when I talk about these environments, because we had to write the code to do both underneath our applications. I wasn't the only one doing this as McDonalds and Carter Haley Hale had massive distributed systems that all worked together doing the same thing over periodic modem dial-ups to a "main" db and they too wrote their own flavor of referential integrity and synchronization between split back ends. But this very real history is a gray wall to George.

Let's talk about one simple example that was employed in my business. We had about forty clients that contracted with us. The average for each was about a half-billion dollars in processing that balanced to the penny each month; kind of like a bank. For each of them we had a separate account (now called a db file) on our system. In that account was their data, not specifically shared with any other client, (however we did link the accounts together sometimes to pull off some massive cumulative comparisons when the FTC challenged one of our clients with anti-competitive practices). All the clients did share two different databases though. One was for common data like country, state, city, Arbitron/marketing data, etc. and one massive media file that kept track of every radio, TV station, newspaper, magazine, penny saver like publication in the USA and Canada. All those files weren't specific to any one client, It was as we said, universal. We also had another account, very well protected, where all the software was. Lots of time-share, accounting and payroll companies used the same model. Only later did the idiots at Microsoft think it was a good idea to mix data with programming in one place. If I start a payroll or claims processing service here in Colombia in the future, I'll be following that model again as much as possible for fiducial responsibility reasons. For one RFP of the government here, I'm looking at distributed sites that will process the data of 45 million people needing government health care. That's not all going to fit on one ACE or SQL database. However, I do like the idea of using Access as a front end, so that slightly sophisticated users can pound sand all day making queries with the data they are responsible for in a geographic area without bothering me too much.

Not in this thread, but another, did I pointedly ask about distributed processing between different back end dbs in the Access environment. I'm surprised that I've gotten little positive input, given that Access has been around about twenty years longer than our old-clumsy mini/mainframes were at the time.
"...I tend to group referential integrity and synchronization together when I talk about these environments,..."

And that, sir, is the heart of your problem. You fail to grasp the difference, or don't consider it important, or something, because you did all those major projects that way. In writing on and on about the many projects you've been involved in, however, you finally did get around to acknowledging this fundamental concept here in this sentence. Synchronization occurs between two or more different data sources. Referential Integrity is only possible within a single data base.

Synchronization comes into the picture because you are not able to enforce referential integrity when the data comes from different sources. My original point was that. But, now, apparently you have figured it out too.
 
"...I tend to group referential integrity and synchronization together when I talk about these environments,..."

And that, sir, is the heart of your problem. You fail to grasp the difference, ...

Synchronization comes into the picture because you are not able to enforce referential integrity when the data comes from different sources. My original point was that. But, now, apparently you have figured it out too.
Did you miss the part where I said we had to do both, in at least two different posts? Both means both, as in two. Or do you like to use partial snips of a conversation to try and prove your correctness? George I've understood the difference for over forty years now. However, I do not understand your haranguing attitude. {deleted] I'm just trying to get help from those who've gone before me in trying to do some advanced things with Access.

I'm not sure what you meant by the last statement. Did you mean in the past or present with Access? I have figured out, with the help of others, that Access, despite all the pretty colors and unimaginable lists of properties, doesn't come close to operating well in the distributed environment we had 40 years ago. Hell, there isn't even a command in VBA to pause for a given number of seconds! And all this with powerful desktops, an almost always present Internet (which some people presume will always be available, like when it goes down in my pueblo I can't even get helps for Access), and almost thirty years to fix basic problems with queries on null joined yes/no fields that every first-year college computer student learns about (http://allenbrowne.com/NoYesNo.html). In the last month that I've started again with Access I've read so many articles that say something like, "I can't use this feature in Access because it doesn't work in real-world situations."

The Access Web - Bugs: Index of Articles (mvps.org)
 
Last edited:

Users who are viewing this thread

Back
Top Bottom