From gustav at cactus.dk Wed Sep 2 10:50:14 2020 From: gustav at cactus.dk (Gustav Brock) Date: Wed, 2 Sep 2020 15:50:14 +0000 Subject: [AccessD] Classes and events stuff pushed to Github Message-ID: Hi John You could extend the publishing of your stuff at GitHub Pages. That service is also free for public stuff: https://pages.github.com/ You could even expose it as a subdomain of your domain, for example: http://code.colbyconsulting.com/ /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af John Colby Sendt: 27. august 2020 00:11 Til: Access Developers discussion and problem solving Emne: [AccessD] Classes and events stuff pushed to Github https://github.com/jwcolby54/VBA-Classes I have pushed a ton of stuff to github for archival purposes. Anyone interested is welcome to dig through it. -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 11:42:48 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 12:42:48 -0400 Subject: [AccessD] uSecond timing Message-ID: I got a class implemented to do uSecond timing as opposed to the normal mSecond timing. Based on; https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-vba/ I am preparing to do my very first YouTube video ever. I'm doing a crash course on OBS Studio now. Once I get the first video figured out, then I hope to do one weekly or so. About (what else) how to do OOP in access. And the first lesson will use a timer class to demonstrate why you would use a class and how to do so. Ease us all into the subject. ? -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 11:44:18 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 12:44:18 -0400 Subject: [AccessD] Classes and events stuff pushed to Github In-Reply-To: References: Message-ID: This looks very interesting. Thanks for the heads up! On Wed, Sep 2, 2020 at 11:50 AM Gustav Brock via AccessD < accessd at databaseadvisors.com> wrote: > Hi John > > You could extend the publishing of your stuff at GitHub Pages. That > service is also free for public stuff: > > https://pages.github.com/ > > You could even expose it as a subdomain of your domain, for example: > > http://code.colbyconsulting.com/ > > /gustav > > -----Oprindelig meddelelse----- > Fra: AccessD P? vegne af John Colby > Sendt: 27. august 2020 00:11 > Til: Access Developers discussion and problem solving < > accessd at databaseadvisors.com> > Emne: [AccessD] Classes and events stuff pushed to Github > > https://github.com/jwcolby54/VBA-Classes > > I have pushed a ton of stuff to github for archival purposes. Anyone > interested is welcome to dig through it. > > > -- > John W. Colby > Colby Consulting > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From fuller.artful at gmail.com Wed Sep 2 11:52:19 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Wed, 2 Sep 2020 12:52:19 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: John, Access is nof OOP. It is close but fails on a few significant aspects. I cannot create a class and then inherit from it. I cannot do polymorphism without a bunch of VBA code that points to the pseudo-class I created. More to the point, OOP is pretty much a dying creed of code. Originally it sounded like a great idea, then turned out to be a rhinocus with only two feet -- in other words, a very awkward beast. Initally I was seduced by the claims of Bertrand Meyer et. al., but that is no longer the case. I still think in OOP, but Access is simply not an OOP language. I would call it Not Oop, but kist an Object-Based Language. I suppose this is merely a matter of terminology, but since you know more than a little about VC and C++, you surely must understand the difference. On Mon, Aug 31, 2020 at 7:53 AM John Colby wrote: > It is 2020. OOP has been around for a long time and Access is, top to > bottom oop. So... > > If you were to interview with the mythical organization C2Db for an Access > position, I would ask you: > 1) Do you understand OOP? > Yes. The only acceptable answer in 2020. > 2) What is a class? A code construct that allows you to model a real world > object, storing code and variables (and events) for that object. > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From jwcolby at gmail.com Wed Sep 2 12:05:53 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 13:05:53 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: The second word in OOP is ORIENTED. On Wed, Sep 2, 2020 at 12:53 PM Arthur Fuller wrote: > John, > > Access is nof OOP. It is close but fails on a few significant aspects. I > cannot create a class and then inherit from it. I cannot do polymorphism > without a bunch of VBA code that points to the pseudo-class I created. > More to the point, OOP is pretty much a dying creed of code. Originally it > sounded like a great idea, then turned out to be a rhinocus with only two > feet -- in other words, a very awkward beast. > Initally I was seduced by the claims of Bertrand Meyer et. al., but that is > no longer the case. I still think in OOP, but Access is simply not an OOP > language. I would call it Not Oop, but kist an Object-Based Language. I > suppose this is merely a matter of terminology, but since you know more > than a little about VC and C++, you surely must understand the difference. > > On Mon, Aug 31, 2020 at 7:53 AM John Colby wrote: > > > It is 2020. OOP has been around for a long time and Access is, top to > > bottom oop. So... > > > > If you were to interview with the mythical organization C2Db for an > Access > > position, I would ask you: > > 1) Do you understand OOP? > > Yes. The only acceptable answer in 2020. > > 2) What is a class? A code construct that allows you to model a real > world > > object, storing code and variables (and events) for that object. > > > > -- > > John W. Colby > > Colby Consulting > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > > -- > Arthur > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 12:07:52 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 13:07:52 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: So learn any modern language. Python, Java, C++, Ruby. Come back and tell me OOP is dying. On Wed, Sep 2, 2020 at 1:05 PM John Colby wrote: > The second word in OOP is ORIENTED. > > On Wed, Sep 2, 2020 at 12:53 PM Arthur Fuller > wrote: > >> John, >> >> Access is nof OOP. It is close but fails on a few significant aspects. I >> cannot create a class and then inherit from it. I cannot do polymorphism >> without a bunch of VBA code that points to the pseudo-class I created. >> More to the point, OOP is pretty much a dying creed of code. Originally it >> sounded like a great idea, then turned out to be a rhinocus with only two >> feet -- in other words, a very awkward beast. >> Initally I was seduced by the claims of Bertrand Meyer et. al., but that >> is >> no longer the case. I still think in OOP, but Access is simply not an OOP >> language. I would call it Not Oop, but kist an Object-Based Language. I >> suppose this is merely a matter of terminology, but since you know more >> than a little about VC and C++, you surely must understand the difference. >> >> On Mon, Aug 31, 2020 at 7:53 AM John Colby wrote: >> >> > It is 2020. OOP has been around for a long time and Access is, top to >> > bottom oop. So... >> > >> > If you were to interview with the mythical organization C2Db for an >> Access >> > position, I would ask you: >> > 1) Do you understand OOP? >> > Yes. The only acceptable answer in 2020. >> > 2) What is a class? A code construct that allows you to model a real >> world >> > object, storing code and variables (and events) for that object. >> > >> > -- >> > John W. Colby >> > Colby Consulting >> > -- >> > AccessD mailing list >> > AccessD at databaseadvisors.com >> > http://databaseadvisors.com/mailman/listinfo/accessd >> > Website: http://www.databaseadvisors.com >> > >> >> >> -- >> Arthur >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> > > > -- > John W. Colby > Colby Consulting > -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 12:23:09 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 13:23:09 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: And yes I fully understand that Access doesn't have inheritance and polymorphism. So what? "I'm not going to use this saw because the handle is made of wood"? I only use saws with gold plated handles. LOL. A tool is what it is. Access has classes. Access classes fully implement the first two properties of OO, abstraction (black box) and encapsulation. Again I am amused that you bitch about the class not having inheritance, and won't use it and yet merrily use forms (which is an object you can't inherit), reports, all the controls, the entire damned DAO library, all of which are objects which you cannot inherit. Get over yourself. Classes exist, they are extremely useful, and they provide programming abilities without which you are literally hamstrung. YOU are stringing your hams my friend. I merrily use the tool however it allows me to use it. And yes, I call it Object ORIENTED programming. Classes are objects. They model real world things. I can do things in Access that you cannot even imagine, not because I am all that, but because of your lack of imagination. https://en.wikipedia.org/wiki/Object-oriented_programming On Wed, Sep 2, 2020 at 1:07 PM John Colby wrote: > So learn any modern language. Python, Java, C++, Ruby. Come back and > tell me OOP is dying. > > > On Wed, Sep 2, 2020 at 1:05 PM John Colby wrote: > >> The second word in OOP is ORIENTED. >> >> On Wed, Sep 2, 2020 at 12:53 PM Arthur Fuller >> wrote: >> >>> John, >>> >>> Access is nof OOP. It is close but fails on a few significant aspects. I >>> cannot create a class and then inherit from it. I cannot do polymorphism >>> without a bunch of VBA code that points to the pseudo-class I created. >>> More to the point, OOP is pretty much a dying creed of code. Originally >>> it >>> sounded like a great idea, then turned out to be a rhinocus with only two >>> feet -- in other words, a very awkward beast. >>> Initally I was seduced by the claims of Bertrand Meyer et. al., but that >>> is >>> no longer the case. I still think in OOP, but Access is simply not an OOP >>> language. I would call it Not Oop, but kist an Object-Based Language. I >>> suppose this is merely a matter of terminology, but since you know more >>> than a little about VC and C++, you surely must understand the >>> difference. >>> >>> On Mon, Aug 31, 2020 at 7:53 AM John Colby wrote: >>> >>> > It is 2020. OOP has been around for a long time and Access is, top to >>> > bottom oop. So... >>> > >>> > If you were to interview with the mythical organization C2Db for an >>> Access >>> > position, I would ask you: >>> > 1) Do you understand OOP? >>> > Yes. The only acceptable answer in 2020. >>> > 2) What is a class? A code construct that allows you to model a real >>> world >>> > object, storing code and variables (and events) for that object. >>> > >>> > -- >>> > John W. Colby >>> > Colby Consulting >>> > -- >>> > AccessD mailing list >>> > AccessD at databaseadvisors.com >>> > http://databaseadvisors.com/mailman/listinfo/accessd >>> > Website: http://www.databaseadvisors.com >>> > >>> >>> >>> -- >>> Arthur >>> -- >>> AccessD mailing list >>> AccessD at databaseadvisors.com >>> http://databaseadvisors.com/mailman/listinfo/accessd >>> Website: http://www.databaseadvisors.com >>> >> >> >> -- >> John W. Colby >> Colby Consulting >> > > > -- > John W. Colby > Colby Consulting > -- John W. Colby Colby Consulting From gustav at cactus.dk Wed Sep 2 12:24:26 2020 From: gustav at cactus.dk (Gustav Brock) Date: Wed, 2 Sep 2020 17:24:26 +0000 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: Hi John To prevent the scaling up/down of Currency he suggests, why not use Decimal which, in VBA, isn't buggy at all, or simply LongLong which is a 64-bit integer? Looking forward to your video. I always wonder where people find the time to experiment with such things. /gustav ________________________________ Fra: AccessD p? vegne af John Colby Sendt: 2. september 2020 18:42 Til: Access Developers discussion and problem solving Emne: [AccessD] uSecond timing I got a class implemented to do uSecond timing as opposed to the normal mSecond timing. Based on; https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-vba/ I am preparing to do my very first YouTube video ever. I'm doing a crash course on OBS Studio now. Once I get the first video figured out, then I hope to do one weekly or so. About (what else) how to do OOP in access. And the first lesson will use a timer class to demonstrate why you would use a class and how to do so. Ease us all into the subject. ? -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 12:29:19 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 13:29:19 -0400 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: And this is why I look up to you Gustav. As I said elsewhere, I am not all that, I simply can imagine things that others don't. But I surely don't know everything. I will go back and examine the LongLong. Decimal has speed issues IIRC. It is implemented in code whereas the LongLong is almost certainly a register operation. Thanks for the heads up. On Wed, Sep 2, 2020 at 1:25 PM Gustav Brock via AccessD < accessd at databaseadvisors.com> wrote: > Hi John > > To prevent the scaling up/down of Currency he suggests, why not use > Decimal which, in VBA, isn't buggy at all, or simply LongLong which is a > 64-bit integer? > > Looking forward to your video. I always wonder where people find the time > to experiment with such things. > > /gustav > > ________________________________ > Fra: AccessD p? vegne af John > Colby > Sendt: 2. september 2020 18:42 > Til: Access Developers discussion and problem solving < > accessd at databaseadvisors.com> > Emne: [AccessD] uSecond timing > > I got a class implemented to do uSecond timing as opposed to the normal > mSecond timing. > > Based on; > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-vba/ > > I am preparing to do my very first YouTube video ever. I'm doing a crash > course on OBS Studio now. Once I get the first video figured out, then I > hope to do one weekly or so. About (what else) how to do OOP in access. > And the first lesson will use a timer class to demonstrate why you would > use a class and how to do so. > > Ease us all into the subject. ? > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From jackandpat.d at gmail.com Wed Sep 2 13:08:50 2020 From: jackandpat.d at gmail.com (jack drawbridge) Date: Wed, 2 Sep 2020 14:08:50 -0400 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: Good luck with the youtube John --great idea! There is so little info other than theory and nay sayers re vba Class Modules. I look forward to your channel to try and comprehend what you have been preaching to us all for so long. Stay safe. jack On Wed, Sep 2, 2020 at 12:43 PM John Colby wrote: > I got a class implemented to do uSecond timing as opposed to the normal > mSecond timing. > > Based on; > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-vba/ > > I am preparing to do my very first YouTube video ever. I'm doing a crash > course on OBS Studio now. Once I get the first video figured out, then I > hope to do one weekly or so. About (what else) how to do OOP in access. > And the first lesson will use a timer class to demonstrate why you would > use a class and how to do so. > > Ease us all into the subject. ? > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From df.waters at outlook.com Wed Sep 2 13:30:55 2020 From: df.waters at outlook.com (Daniel Waters) Date: Wed, 2 Sep 2020 18:30:55 +0000 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: Subscribe! ? Sent from Mail for Windows 10 From: John Colby Sent: Wednesday, September 2, 2020 11:44 AM To: Access Developers discussion and problem solving Subject: [AccessD] uSecond timing I got a class implemented to do uSecond timing as opposed to the normal mSecond timing. Based on; https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-vba/ I am preparing to do my very first YouTube video ever. I'm doing a crash course on OBS Studio now. Once I get the first video figured out, then I hope to do one weekly or so. About (what else) how to do OOP in access. And the first lesson will use a timer class to demonstrate why you would use a class and how to do so. Ease us all into the subject. ? -- John W. Colby Colby Consulting -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From fuller.artful at gmail.com Wed Sep 2 15:14:51 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Wed, 2 Sep 2020 16:14:51 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: Wow, a discussion has turned into an insult-fest. I'm done, too old and weak for slinging. I'm too olc, and most mornings cannot make it out of bed, so Victory to you. I quit and resolve to do the best I can to feed my cats, and hope that they die before I do. Otherwise the implications are horrific. On Wed, Sep 2, 2020 at 1:23 PM John Colby wrote: > And yes I fully understand that Access doesn't have inheritance and > polymorphism. So what? > > "I'm not going to use this saw because the handle is made of wood"? I only > use saws with gold plated handles. > > LOL. A tool is what it is. Access has classes. Access classes fully > implement the first two properties of OO, abstraction (black box) and > encapsulation. Again I am amused that you bitch about the class not having > inheritance, and won't use it and yet merrily use forms (which is an object > you can't inherit), reports, all the controls, the entire damned DAO > library, all of which are objects which you cannot inherit. > > Get over yourself. > > Classes exist, they are extremely useful, and they provide programming > abilities without which you are literally hamstrung. YOU are stringing > your hams my friend. I merrily use the tool however it allows me to use > it. And yes, I call it Object ORIENTED programming. Classes are objects. > They model real world things. > > I can do things in Access that you cannot even imagine, not because I am > all that, but because of your lack of imagination. > > https://en.wikipedia.org/wiki/Object-oriented_programming > > On Wed, Sep 2, 2020 at 1:07 PM John Colby wrote: > > > So learn any modern language. Python, Java, C++, Ruby. Come back and > > tell me OOP is dying. > > > > > > On Wed, Sep 2, 2020 at 1:05 PM John Colby wrote: > > > >> The second word in OOP is ORIENTED. > >> > >> On Wed, Sep 2, 2020 at 12:53 PM Arthur Fuller > >> wrote: > >> > >>> John, > >>> > >>> Access is nof OOP. It is close but fails on a few significant aspects. > I > >>> cannot create a class and then inherit from it. I cannot do > polymorphism > >>> without a bunch of VBA code that points to the pseudo-class I created. > >>> More to the point, OOP is pretty much a dying creed of code. Originally > >>> it > >>> sounded like a great idea, then turned out to be a rhinocus with only > two > >>> feet -- in other words, a very awkward beast. > >>> Initally I was seduced by the claims of Bertrand Meyer et. al., but > that > >>> is > >>> no longer the case. I still think in OOP, but Access is simply not an > OOP > >>> language. I would call it Not Oop, but kist an Object-Based Language. I > >>> suppose this is merely a matter of terminology, but since you know more > >>> than a little about VC and C++, you surely must understand the > >>> difference. > >>> > >>> On Mon, Aug 31, 2020 at 7:53 AM John Colby wrote: > >>> > >>> > It is 2020. OOP has been around for a long time and Access is, top > to > >>> > bottom oop. So... > >>> > > >>> > If you were to interview with the mythical organization C2Db for an > >>> Access > >>> > position, I would ask you: > >>> > 1) Do you understand OOP? > >>> > Yes. The only acceptable answer in 2020. > >>> > 2) What is a class? A code construct that allows you to model a real > >>> world > >>> > object, storing code and variables (and events) for that object. > >>> > > >>> > -- > >>> > John W. Colby > >>> > Colby Consulting > >>> > -- > >>> > AccessD mailing list > >>> > AccessD at databaseadvisors.com > >>> > http://databaseadvisors.com/mailman/listinfo/accessd > >>> > Website: http://www.databaseadvisors.com > >>> > > >>> > >>> > >>> -- > >>> Arthur > >>> -- > >>> AccessD mailing list > >>> AccessD at databaseadvisors.com > >>> http://databaseadvisors.com/mailman/listinfo/accessd > >>> Website: http://www.databaseadvisors.com > >>> > >> > >> > >> -- > >> John W. Colby > >> Colby Consulting > >> > > > > > > -- > > John W. Colby > > Colby Consulting > > > > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From stuart at lexacorp.com.pg Wed Sep 2 16:31:20 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Thu, 03 Sep 2020 07:31:20 +1000 Subject: [AccessD] uSecond timing In-Reply-To: References: , Message-ID: <5F500F28.5154.A0AD472@stuart.lexacorp.com.pg> LongLong only works with 64bit VBA. A lot of people are still using 32bit Office. An alternative:using a UDT LongInteger https://stackoverflow.com/questions/198409/how-do-you-test-running-time-of-vba-code On 2 Sep 2020 at 17:24, Gustav Brock via AccessD wrote: > Hi John > > To prevent the scaling up/down of Currency he suggests, why not use > Decimal which, in VBA, isn't buggy at all, or simply LongLong which is > a 64-bit integer? > > Looking forward to your video. I always wonder where people find the > time to experiment with such things. > > /gustav > > ________________________________ > Fra: AccessD p? vegne af John > Colby Sendt: 2. september 2020 18:42 Til: Access > Developers discussion and problem solving > Emne: [AccessD] uSecond timing > > I got a class implemented to do uSecond timing as opposed to the > normal mSecond timing. > > Based on; > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-v > ba/ > > I am preparing to do my very first YouTube video ever. I'm doing a > crash course on OBS Studio now. Once I get the first video figured > out, then I hope to do one weekly or so. About (what else) how to do > OOP in access. And the first lesson will use a timer class to > demonstrate why you would use a class and how to do so. > > Ease us all into the subject. > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com From jwcolby at gmail.com Wed Sep 2 17:28:34 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 18:28:34 -0400 Subject: [AccessD] Access and OOP In-Reply-To: References: Message-ID: LOL, an insult fest? Really? There was no discussion. "Access is not OOP" Rather a declaration. If you cannot imagine using classes then that is on you my friend. I have visited you in your own home Arthur. I respect and admire you. But reality is as I like to say. I am not limited by what others want to believe, but rather by what is real. Stop believing what you hear and experience what you can see for yourself. But please do feed the cats. The implications are horrific. If you felt insulted, I do apologize. On Wed, Sep 2, 2020 at 4:15 PM Arthur Fuller wrote: > Wow, a discussion has turned into an insult-fest. I'm done, too old and > weak for slinging. I'm too olc, and most mornings cannot make it out of > bed, so Victory to you. I quit and resolve to do the best I can to feed my > cats, and hope that they die before I do. Otherwise the implications are > horrific. > > On Wed, Sep 2, 2020 at 1:23 PM John Colby wrote: > > > And yes I fully understand that Access doesn't have inheritance and > > polymorphism. So what? > > > > "I'm not going to use this saw because the handle is made of wood"? I > only > > use saws with gold plated handles. > > > > LOL. A tool is what it is. Access has classes. Access classes fully > > implement the first two properties of OO, abstraction (black box) and > > encapsulation. Again I am amused that you bitch about the class not > having > > inheritance, and won't use it and yet merrily use forms (which is an > object > > you can't inherit), reports, all the controls, the entire damned DAO > > library, all of which are objects which you cannot inherit. > > > > Get over yourself. > > > > Classes exist, they are extremely useful, and they provide programming > > abilities without which you are literally hamstrung. YOU are stringing > > your hams my friend. I merrily use the tool however it allows me to use > > it. And yes, I call it Object ORIENTED programming. Classes are > objects. > > They model real world things. > > > > I can do things in Access that you cannot even imagine, not because I am > > all that, but because of your lack of imagination. > > > > https://en.wikipedia.org/wiki/Object-oriented_programming > > > > On Wed, Sep 2, 2020 at 1:07 PM John Colby wrote: > > > > > So learn any modern language. Python, Java, C++, Ruby. Come back and > > > tell me OOP is dying. > > > > > > > > > On Wed, Sep 2, 2020 at 1:05 PM John Colby wrote: > > > > > >> The second word in OOP is ORIENTED. > > >> > > >> On Wed, Sep 2, 2020 at 12:53 PM Arthur Fuller < > fuller.artful at gmail.com> > > >> wrote: > > >> > > >>> John, > > >>> > > >>> Access is nof OOP. It is close but fails on a few significant > aspects. > > I > > >>> cannot create a class and then inherit from it. I cannot do > > polymorphism > > >>> without a bunch of VBA code that points to the pseudo-class I > created. > > >>> More to the point, OOP is pretty much a dying creed of code. > Originally > > >>> it > > >>> sounded like a great idea, then turned out to be a rhinocus with only > > two > > >>> feet -- in other words, a very awkward beast. > > >>> Initally I was seduced by the claims of Bertrand Meyer et. al., but > > that > > >>> is > > >>> no longer the case. I still think in OOP, but Access is simply not an > > OOP > > >>> language. I would call it Not Oop, but kist an Object-Based > Language. I > > >>> suppose this is merely a matter of terminology, but since you know > more > > >>> than a little about VC and C++, you surely must understand the > > >>> difference. > > >>> > > >>> On Mon, Aug 31, 2020 at 7:53 AM John Colby > wrote: > > >>> > > >>> > It is 2020. OOP has been around for a long time and Access is, top > > to > > >>> > bottom oop. So... > > >>> > > > >>> > If you were to interview with the mythical organization C2Db for an > > >>> Access > > >>> > position, I would ask you: > > >>> > 1) Do you understand OOP? > > >>> > Yes. The only acceptable answer in 2020. > > >>> > 2) What is a class? A code construct that allows you to model a > real > > >>> world > > >>> > object, storing code and variables (and events) for that object. > > >>> > > > >>> > -- > > >>> > John W. Colby > > >>> > Colby Consulting > > >>> > -- > > >>> > AccessD mailing list > > >>> > AccessD at databaseadvisors.com > > >>> > http://databaseadvisors.com/mailman/listinfo/accessd > > >>> > Website: http://www.databaseadvisors.com > > >>> > > > >>> > > >>> > > >>> -- > > >>> Arthur > > >>> -- > > >>> AccessD mailing list > > >>> AccessD at databaseadvisors.com > > >>> http://databaseadvisors.com/mailman/listinfo/accessd > > >>> Website: http://www.databaseadvisors.com > > >>> > > >> > > >> > > >> -- > > >> John W. Colby > > >> Colby Consulting > > >> > > > > > > > > > -- > > > John W. Colby > > > Colby Consulting > > > > > > > > > -- > > John W. Colby > > Colby Consulting > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > > -- > Arthur > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From jwcolby at gmail.com Wed Sep 2 17:33:40 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 2 Sep 2020 18:33:40 -0400 Subject: [AccessD] uSecond timing In-Reply-To: <5F500F28.5154.A0AD472@stuart.lexacorp.com.pg> References: <5F500F28.5154.A0AD472@stuart.lexacorp.com.pg> Message-ID: It seems to me like I don't really need to do anything. The real is only used as a storage location. It is a register on the CPU, or a memory location. I am not going to do any math using it. And if I have to it is still simple instructions native to the CPU. I will however explore the link you provided. On Wed, Sep 2, 2020 at 5:32 PM Stuart McLachlan wrote: > LongLong only works with 64bit VBA. A lot of people are still using 32bit > Office. > > An alternative:using a UDT LongInteger > > > https://stackoverflow.com/questions/198409/how-do-you-test-running-time-of-vba-code > > > > > On 2 Sep 2020 at 17:24, Gustav Brock via AccessD wrote: > > > Hi John > > > > To prevent the scaling up/down of Currency he suggests, why not use > > Decimal which, in VBA, isn't buggy at all, or simply LongLong which is > > a 64-bit integer? > > > > Looking forward to your video. I always wonder where people find the > > time to experiment with such things. > > > > /gustav > > > > ________________________________ > > Fra: AccessD p? vegne af John > > Colby Sendt: 2. september 2020 18:42 Til: Access > > Developers discussion and problem solving > > Emne: [AccessD] uSecond timing > > > > I got a class implemented to do uSecond timing as opposed to the > > normal mSecond timing. > > > > Based on; > > > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-v > > ba/ > > > > I am preparing to do my very first YouTube video ever. I'm doing a > > crash course on OBS Studio now. Once I get the first video figured > > out, then I hope to do one weekly or so. About (what else) how to do > > OOP in access. And the first lesson will use a timer class to > > demonstrate why you would use a class and how to do so. > > > > Ease us all into the subject. > > -- > > John W. Colby > > Colby Consulting > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From gustav at cactus.dk Thu Sep 3 02:45:53 2020 From: gustav at cactus.dk (Gustav Brock) Date: Thu, 3 Sep 2020 07:45:53 +0000 Subject: [AccessD] uSecond timing Message-ID: Hi John and Stuart Here: https://stackoverflow.com/a/199480/3527297 I noticed this comment, and - for most practical purposes - I think he has a point: Still, if you're measuring performance in VBA, getting 1/100th of a second resolution is not bad. -- Invoking the timing calls alone could take a couple of ms. If the call is so fast that you need that much resolution to time it, you probably don't need performance data about that call. - BrainSlugs83 /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Stuart McLachlan Sendt: 2. september 2020 23:31 Til: Access Developers discussion and problem solving Emne: Re: [AccessD] uSecond timing LongLong only works with 64bit VBA. A lot of people are still using 32bit Office. An alternative:using a UDT LongInteger https://stackoverflow.com/questions/198409/how-do-you-test-running-time-of-vba-code On 2 Sep 2020 at 17:24, Gustav Brock via AccessD wrote: > Hi John > > To prevent the scaling up/down of Currency he suggests, why not use > Decimal which, in VBA, isn't buggy at all, or simply LongLong which is > a 64-bit integer? > > Looking forward to your video. I always wonder where people find the > time to experiment with such things. > > /gustav > > ________________________________ > Fra: AccessD p? vegne af John > Colby Sendt: 2. september 2020 18:42 Til: Access > Developers discussion and problem solving > Emne: [AccessD] uSecond timing > > I got a class implemented to do uSecond timing as opposed to the > normal mSecond timing. > > Based on; > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in-v > ba/ > > I am preparing to do my very first YouTube video ever. I'm doing a > crash course on OBS Studio now. Once I get the first video figured > out, then I hope to do one weekly or so. About (what else) how to do > OOP in access. And the first lesson will use a timer class to > demonstrate why you would use a class and how to do so. > > Ease us all into the subject. > -- > John W. Colby > Colby Consulting From stuart at lexacorp.com.pg Thu Sep 3 06:03:52 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Thu, 03 Sep 2020 21:03:52 +1000 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: <5F50CD98.27960.CF2B9C1@stuart.lexacorp.com.pg> I must admit, I've never used it in Access, I've never needed to test anything to that degree of precision. But I regulary use queryperformancecounter in PBWin. In fact I used it today doing comparisons on a function which is called repeatedly in an application. Test whether two numbers are within a certain range of each other. Comparing plain Basic code against an assembler routine. (ABS(n1,n2) <= range) versus ! mov eax, n1 ! sub eax, n2 ! jnc Compare ! neg eax Compare: ! cmp eax, range ! jg ExitNow ! mov ret, -1 ExitNow: 1000 iteration of the PB code took about 4.7 microseconds 1000 iterations of the Assembler code took about 5.5 microseconds. > Hi John and Stuart > > Here: > https://stackoverflow.com/a/199480/3527297 > > I noticed this comment, and - for most practical purposes - I think he > has a point: > > > Still, if you're measuring performance in VBA, getting 1/100th of a > second resolution is not bad. -- Invoking the timing calls alone could > take a couple of ms. If the call is so fast that you need that much > resolution to time it, you probably don't need performance data about > that call. - BrainSlugs83 > > /gustav > > -----Oprindelig meddelelse----- > Fra: AccessD P? vegne af Stuart > McLachlan Sendt: 2. september 2020 23:31 Til: Access Developers > discussion and problem solving Emne: > Re: [AccessD] uSecond timing > > LongLong only works with 64bit VBA. A lot of people are still using > 32bit Office. > > An alternative:using a UDT LongInteger > > https://stackoverflow.com/questions/198409/how-do-you-test-running-tim > e-of-vba-code > > > > > On 2 Sep 2020 at 17:24, Gustav Brock via AccessD wrote: > > > Hi John > > > > To prevent the scaling up/down of Currency he suggests, why not use > > Decimal which, in VBA, isn't buggy at all, or simply LongLong which > > is a 64-bit integer? > > > > Looking forward to your video. I always wonder where people find the > > time to experiment with such things. > > > > /gustav > > > > ________________________________ > > Fra: AccessD p? vegne af John > > Colby Sendt: 2. september 2020 18:42 Til: Access > > Developers discussion and problem solving > > Emne: [AccessD] uSecond timing > > > > I got a class implemented to do uSecond timing as opposed to the > > normal mSecond timing. > > > > Based on; > > > > https://rotchvba.wordpress.com/2016/12/12/a-high-resolution-timer-in > > -v ba/ > > > > I am preparing to do my very first YouTube video ever. I'm doing a > > crash course on OBS Studio now. Once I get the first video figured > > out, then I hope to do one weekly or so. About (what else) how to > > do OOP in access. And the first lesson will use a timer class to > > demonstrate why you would use a class and how to do so. > > > > Ease us all into the subject. > > -- > > John W. Colby > > Colby Consulting > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From stuart at lexacorp.com.pg Thu Sep 3 06:29:57 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Thu, 03 Sep 2020 21:29:57 +1000 Subject: [AccessD] uSecond timing In-Reply-To: References: Message-ID: <5F50D3B5.11739.D0A99D3@stuart.lexacorp.com.pg> He mkes a good point for tat code. A classic case where a Class is NOT the answer. (Sorry john :) ) The overhead of a classlike that compared to just wrapping the function in a couple of API calls will severely affect the accuracy of the timing process. But that quote misses the point of using a high resoution timer. It's when you need to repeat a set of instructions (either a function or just a piece of code) many times that it matters. Optimising parsing of lines of data read into a database from a large file with many records would be a prime example where it could be useful On 3 Sep 2020 at 7:45, Gustav Brock via AccessD wrote: > Hi John and Stuart > > Here: > https://stackoverflow.com/a/199480/3527297 > > I noticed this comment, and - for most practical purposes - I think he > has a point: > > > Still, if you're measuring performance in VBA, getting 1/100th of a > second resolution is not bad. -- Invoking the timing calls alone could > take a couple of ms. If the call is so fast that you need that much > resolution to time it, you probably don't need performance data about > that call. - BrainSlugs83 > > /gustav > > -----Oprindelig meddelelse----- > Fra: AccessD P? vegne af Stuart > McLachlan Sendt: 2. september 2020 23:31 Til: Access Developers > discussion and problem solving Emne: > Re: [AccessD] uSecond timing > > LongLong only works with 64bit VBA. A lot of people are still using > 32bit Office. > > An alternative:using a UDT LongInteger > > https://stackoverflow.com/questions/198409/how-do-you-test-running-tim > e-of-vba-code > From gustav at cactus.dk Thu Sep 3 06:46:58 2020 From: gustav at cactus.dk (Gustav Brock) Date: Thu, 3 Sep 2020 11:46:58 +0000 Subject: [AccessD] uSecond timing Message-ID: Hi Stuart True. Apart from timing queries (often in seconds where even milliseconds are irrelevant), it is repeated code that is interesting. However, I just time from start of the loop to the end and divide by the loop count - exactly as you did for your assembler example in your other post. Often 1000 isn't enough, then I use 1 mio. or more to obtain a time longer than a second. That's how I measured the execution time (about 1?s) of my rounding functions: https://github.com/GustavBrock/VBA.Round#general-rounding Of course, you may wish to measure single steps within a larger loop, but then even microsecond timing is enough, and you will have to use alternative methods. /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Stuart McLachlan Sendt: 3. september 2020 13:30 Til: Access Developers discussion and problem solving Emne: Re: [AccessD] uSecond timing He mkes a good point for tat code. A classic case where a Class is NOT the answer. (Sorry john :) ) The overhead of a classlike that compared to just wrapping the function in a couple of API calls will severely affect the accuracy of the timing process. But that quote misses the point of using a high resoution timer. It's when you need to repeat a set of instructions (either a function or just a piece of code) many times that it matters. Optimising parsing of lines of data read into a database from a large file with many records would be a prime example where it could be useful On 3 Sep 2020 at 7:45, Gustav Brock via AccessD wrote: > Hi John and Stuart > > Here: > https://stackoverflow.com/a/199480/3527297 > > I noticed this comment, and - for most practical purposes - I think he > has a point: > > > Still, if you're measuring performance in VBA, getting 1/100th of a > second resolution is not bad. -- Invoking the timing calls alone could > take a couple of ms. If the call is so fast that you need that much > resolution to time it, you probably don't need performance data about > that call. - BrainSlugs83 > > /gustav > > -----Oprindelig meddelelse----- > Fra: AccessD P? vegne af Stuart > McLachlan Sendt: 2. september 2020 23:31 Til: Access Developers > discussion and problem solving Emne: > Re: [AccessD] uSecond timing > > LongLong only works with 64bit VBA. A lot of people are still using > 32bit Office. > > An alternative:using a UDT LongInteger > > https://stackoverflow.com/questions/198409/how-do-you-test-running-tim > e-of-vba-code From jwcolby at gmail.com Sat Sep 5 13:24:44 2020 From: jwcolby at gmail.com (John Colby) Date: Sat, 5 Sep 2020 14:24:44 -0400 Subject: [AccessD] Slowly getting there Message-ID: Trying to figure out OBS to make a YouTube video using screen capture and a mic. Sorry, the talking head video will have to wait. While I know a little about Access and classes, not so much about OBS. If anyone out there is doing this and wants to assist, email me off line. At any rate, I expect to make it happen "any day now". I am actually able to make a video. I have to find my mic and get it talking to my laptop. So much to do, so little time. -- John W. Colby Colby Consulting From fuller.artful at gmail.com Sat Sep 5 14:45:33 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Sat, 5 Sep 2020 15:45:33 -0400 Subject: [AccessD] Slowly getting there In-Reply-To: References: Message-ID: For what it's worth, John, I am perhaps one of the few who hates instructional . I would much prefer to read and open another window into which I would type the code (I have to type it rather than copy and paste -- that way the imprint lasts much longer). But I suspect that I am in the minority, so plug on. On Sat, Sep 5, 2020 at 2:25 PM John Colby wrote: > Trying to figure out OBS to make a YouTube video using screen capture and a > mic. Sorry, the talking head video will have to wait. > > While I know a little about Access and classes, not so much about OBS. If > anyone out there is doing this and wants to assist, email me off line. > > At any rate, I expect to make it happen "any day now". I am actually able > to make a video. I have to find my mic and get it talking to my laptop. > So much to do, so little time. > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From jwcolby at gmail.com Sat Sep 5 20:57:47 2020 From: jwcolby at gmail.com (John Colby) Date: Sat, 5 Sep 2020 21:57:47 -0400 Subject: [AccessD] Slowly getting there In-Reply-To: References: Message-ID: Well, the plan is for a lecture series. Maybe eventually a livestream if anyone is interested. When I was down in Mexico in the late 90s I learned about a foxpro "framework" which was used as a jumping off point for developing FoxPro database apps. At the time I was working on a debit card vending machine project. My part in the project was writing the C software running on a Z80 single board computer which drove the machine itself. It sold Telmex phone debit cards and took cash into a bill acceptor. Having a recent (70s through late 80s) background in electronics, I designed (or specced) all the electronic hardware, and then wrote the software running on RTOS. It interfaced to the outside world via an RS232 port on the bottom of the machine. A third party Hand Held Computer (FoxPro) connected to that and my software dumped the sales info into that. As such I was not involved in the FoxPro side but I watched it with interest. So... I learned about frameworks. By the late 90s I was working on writing a framework for Access to make designing applications faster. I did not know about Access' classes, although Shamil was struggling to teach me. While Access is quite powerful, it also takes considerable programming skill to get the most out of it. And without classes, much of what I was trying to do was just hard. I don't have clear memories of how and why but at some point it just clicked. And it became easy. Simultaneously Shamil decided it was too much work and moved on. And so over a five year period starting around 2002-3 I wrote a very powerful framework for Access. It uses classes wrapping every access object that I use, with event handlers for all form and control events, and in some cases raising custom events as well. It is a library that simply is referenced, initialized and from that point, any form that opens instantiates a form class which handles loading all the core stuff that has to do with forms and controls, and when the form closes, it likewise tears it all back down for that form. I have mentioned that starting around 2002 I wrote a call center app for an insurance company in CT. It was while building that app that I wrote the framework, which I called C2DbFramework. To this day, the app is used day in and day out. AFAIK about 30-40 people are in the app all day long taking phone calls from disability claimants. The BE eventually migrated to SQL Server but the FE is still Access, using the framework. So I have what is literally 5 years writing the app and the framework, and the framework drives (when I left the job) forms dealing with 180 tables. All day, every day. Every form loading a form class. Almost every control on every form is wrapped in a control class specifically for that type of control, sinking all form and control events in the classes, firing code in the classes to do whatever needs to be done to manage that control in the context of a form. Plus classes driving a security layer for dividing employees into groups such as data entry, supervisors, managers, accounting etc. The security layer actively manages who can open which forms, and if they can open forms whether they can add / edit / delete records, or even see controls on forms and reports. All table driven, all cached in Classes, for lightning fast access. All in all a pretty serious application, with dozens and dozens of classes, loaded and unloaded as forms open and close. All day, every day. It would be interesting to do some metrics counting the number of times classes load and unload in a day / week / year. And so I naturally reject the opinion that Access is not OOP, and that Access classes are useless. I know different. I have built a system that it is simply not possible to build without OOP and classes. A funny story. My "boss" (I was a consultant), a principal in the company, told me that they would bring in executives from the disability carriers to demo the system to sell them the service. One of these guys told my boss that they contracted a vendor to build a system that did what we did, but directly on their mainframe. Several years and several million dollars later they cancelled the contract. It just never got done. Access is a powerful system. It is Object Oriented. It gives us classes. The classes can provide an entire programming paradigm impossible without them. On Sat, Sep 5, 2020 at 3:46 PM Arthur Fuller wrote: > For what it's worth, John, I am perhaps one of the few who hates > instructional . I would much prefer to read and open another window into > which I would type the code (I have to type it rather than copy and paste > -- that way the imprint lasts much longer). But I suspect that I am in the > minority, so plug on. > > On Sat, Sep 5, 2020 at 2:25 PM John Colby wrote: > > > Trying to figure out OBS to make a YouTube video using screen capture > and a > > mic. Sorry, the talking head video will have to wait. > > > > While I know a little about Access and classes, not so much about OBS. > If > > anyone out there is doing this and wants to assist, email me off line. > > > > At any rate, I expect to make it happen "any day now". I am actually > able > > to make a video. I have to find my mic and get it talking to my laptop. > > So much to do, so little time. > > > > -- > > John W. Colby > > Colby Consulting > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > > -- > Arthur > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From fuller.artful at gmail.com Sun Sep 6 07:25:52 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Sun, 6 Sep 2020 08:25:52 -0400 Subject: [AccessD] Slowly getting there In-Reply-To: References: Message-ID: Without question you are one of the most skilled Access developers I have ever encountered. Also without question is the fact that one can work magic by wrapping Access classes. My sole objection was one of terminology. I distinguish OOP from OBP (Object-based programming). Let's use another example. An ancient language called Clipper introduced objects in V. 5.0, most notably Tbrowse, which meant table-browser. I discovered that one could reduce a Tbrowser to a very tiny area, equivalent to the navigation buttons onan Access form, and then attach an actual form to this, so the form refreshed as one navigated using the Tbrowse object. That is not OOP, it is OBP., for the simple reason that I could not create a class from scratch, but merely create descendant classes. That is not to say that descendant classes are not powerful. But it is to say that OBP will not allow you to create classes from scratch -- say, for example, that I want to create a slider control. In Access, this is impossible. That is all that I mean by distinguishing OOP from OBP. It's not an insult to Access or its developers, or any virtuoso such as you or Shamil or Jim Dettman (whose work is astounding). But it is to say that I cannot create a class from scratch, such as a Slider control. I have to begin with the existing classes and then wrap them. A. On Sat, Sep 5, 2020 at 9:58 PM John Colby wrote: > Well, the plan is for a lecture series. Maybe eventually a livestream if > anyone is interested. > > When I was down in Mexico in the late 90s I learned about a foxpro > "framework" which was used as a jumping off point for developing FoxPro > database apps. At the time I was working on a debit card vending machine > project. My part in the project was writing the C software running on a > Z80 single board computer which drove the machine itself. It sold Telmex > phone debit cards and took cash into a bill acceptor. Having a recent (70s > through late 80s) background in electronics, I designed (or specced) all > the electronic hardware, and then wrote the software running on RTOS. It > interfaced to the outside world via an RS232 port on the bottom of the > machine. A third party Hand Held Computer (FoxPro) connected to that and > my software dumped the sales info into that. > > As such I was not involved in the FoxPro side but I watched it with > interest. > > So... I learned about frameworks. By the late 90s I was working on > writing a framework for Access to make designing applications faster. I > did not know about Access' classes, although Shamil was struggling to teach > me. While Access is quite powerful, it also takes considerable > programming skill to get the most out of it. And without classes, much of > what I was trying to do was just hard. > > I don't have clear memories of how and why but at some point it just > clicked. And it became easy. Simultaneously Shamil decided it was too > much work and moved on. > > And so over a five year period starting around 2002-3 I wrote a very > powerful framework for Access. It uses classes wrapping every access > object that I use, with event handlers for all form and control events, and > in some cases raising custom events as well. It is a library that simply > is referenced, initialized and from that point, any form that opens > instantiates a form class which handles loading all the core stuff that has > to do with forms and controls, and when the form closes, it likewise tears > it all back down for that form. > > I have mentioned that starting around 2002 I wrote a call center app for an > insurance company in CT. It was while building that app that I wrote the > framework, which I called C2DbFramework. To this day, the app is used day > in and day out. AFAIK about 30-40 people are in the app all day long > taking phone calls from disability claimants. The BE eventually migrated > to SQL Server but the FE is still Access, using the framework. > > So I have what is literally 5 years writing the app and the framework, and > the framework drives (when I left the job) forms dealing with 180 tables. > All day, every day. Every form loading a form class. Almost every control > on every form is wrapped in a control class specifically for that type of > control, sinking all form and control events in the classes, firing code in > the classes to do whatever needs to be done to manage that control in the > context of a form. > > Plus classes driving a security layer for dividing employees into groups > such as data entry, supervisors, managers, accounting etc. The security > layer actively manages who can open which forms, and if they can open forms > whether they can add / edit / delete records, or even see controls on forms > and reports. All table driven, all cached in Classes, for lightning fast > access. > > All in all a pretty serious application, with dozens and dozens of classes, > loaded and unloaded as forms open and close. All day, every day. It would > be interesting to do some metrics counting the number of times classes load > and unload in a day / week / year. > > And so I naturally reject the opinion that Access is not OOP, and that > Access classes are useless. I know different. I have built a system that > it is simply not possible to build without OOP and classes. > > A funny story. My "boss" (I was a consultant), a principal in > the company, told me that they would bring in executives from the > disability carriers to demo the system to sell them the service. One of > these guys told my boss that they contracted a vendor to build a system > that did what we did, but directly on their mainframe. Several years and > several million dollars later they cancelled the contract. It just never > got done. > > Access is a powerful system. It is Object Oriented. It gives us classes. > The classes can provide an entire programming paradigm impossible without > them. > > > > > > > On Sat, Sep 5, 2020 at 3:46 PM Arthur Fuller > wrote: > > > For what it's worth, John, I am perhaps one of the few who hates > > instructional . I would much prefer to read and open another window into > > which I would type the code (I have to type it rather than copy and paste > > -- that way the imprint lasts much longer). But I suspect that I am in > the > > minority, so plug on. > > > > On Sat, Sep 5, 2020 at 2:25 PM John Colby wrote: > > > > > Trying to figure out OBS to make a YouTube video using screen capture > > and a > > > mic. Sorry, the talking head video will have to wait. > > > > > > While I know a little about Access and classes, not so much about OBS. > > If > > > anyone out there is doing this and wants to assist, email me off line. > > > > > > At any rate, I expect to make it happen "any day now". I am actually > > able > > > to make a video. I have to find my mic and get it talking to my > laptop. > > > So much to do, so little time. > > > > > > -- > > > John W. Colby > > > Colby Consulting > > > -- > > > AccessD mailing list > > > AccessD at databaseadvisors.com > > > http://databaseadvisors.com/mailman/listinfo/accessd > > > Website: http://www.databaseadvisors.com > > > > > > > > > -- > > Arthur > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From jwcolby at gmail.com Sun Sep 6 09:35:42 2020 From: jwcolby at gmail.com (John Colby) Date: Sun, 6 Sep 2020 10:35:42 -0400 Subject: [AccessD] OOP vs OBP Message-ID: Arthur Fuller via databaseadvisors.com 8:26 AM (1 hour ago) to Access Without question you are one of the most skilled Access developers I have ever encountered. Also without question is the fact that one can work magic by wrapping Access classes. My sole objection was one of terminology. I distinguish OOP from OBP (Object-based programming). Let's use another example. An ancient language called Clipper introduced objects in V. 5.0, most notably Tbrowse, which meant table-browser. I discovered that one could reduce a Tbrowser to a very tiny area, equivalent to the navigation buttons onan Access form, and then attach an actual form to this, so the form refreshed as one navigated using the Tbrowse object. That is not OOP, it is OBP., for the simple reason that I could not create a class from scratch, but merely create descendant classes. That is not to say that descendant classes are not powerful. But it is to say that OBP will not allow you to create classes from scratch -- say, for example, that I want to create a slider control. In Access, this is impossible. That is all that I mean by distinguishing OOP from OBP. It's not an insult to Access or its developers, or any virtuoso such as you or Shamil or Jim Dettman (whose work is astounding). But it is to say that I cannot create a class from scratch, such as a Slider control. I have to begin with the existing classes and then wrap them. A. I understand and fully admit that Access cannot use inheritance. However, the primary tenants of OOP are encapsulation of data and code, and abstraction - exposing a specific interface to users of the class, hiding the implementation details of what and how the class does whatever it does. OOP is now generally considered to use inheritance, but not always. The terms OO was used way back when well before inheritance raised it's head. Google's Go language is usually considered an OOP language and yet has no inheritance. It does have interfaces, as does Access. Interfaces basically define what an object will look like, but completely absent any code or data. What that allows however is passing of objects, as well as dimensioning objects that are "of" an interface instead of "of" a specific type. So as long as the object being passed or dimensioned implements that interface it can be used in that context. Access, internally, is actually OOP complete with inheritance. However it has a hard boundary, i.e. we cannot inherit any of the objects that are Access. As for me, I don't really care what you call it, what matters is what I can do with it. I worked in C# for about 2 years, writing a pretty darned complex, system to automate SQL Server, exporting and importing data and doing other stuff, threaded. And never once inherited anything. Inheritance, while it can be useful, is IMHO highly over rated. In the end I can't use it in Access so I just move on to what I can do. So call it whatever you like. Just don't call it as useless. -- John W. Colby Colby Consulting From fuller.artful at gmail.com Sun Sep 6 11:09:26 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Sun, 6 Sep 2020 12:09:26 -0400 Subject: [AccessD] OOP vs OBP In-Reply-To: References: Message-ID: I have never once called it useless. Your library has taught me numerous tips and tricks, and I am thankful for that. So let's instead call this a linguistic question. C# and C++ and Actor and numerous other languages are OOP, not OBP, which is not to denigrate the latter, and in fact it's much harder to write OOP than OBP. It just depends on what you need to do. On Sun, Sep 6, 2020 at 10:36 AM John Colby wrote: > Arthur Fuller via > databaseadvisors.com > 8:26 AM (1 hour ago) > to Access > Without question you are one of the most skilled Access developers I have > ever encountered. Also without question is the fact that one can work magic > by wrapping Access classes. My sole objection was one of terminology. I > distinguish OOP from OBP (Object-based programming). Let's use another > example. An ancient language called Clipper introduced objects in V. 5.0, > most notably Tbrowse, which meant table-browser. I discovered that one > could reduce a Tbrowser to a very tiny area, equivalent to the navigation > buttons onan Access form, and then attach an actual form to this, so the > form refreshed as one navigated using the Tbrowse object. That is not OOP, > it is OBP., for the simple reason that I could not create a class from > scratch, but merely create descendant classes. That is not to say that > descendant classes are not powerful. But it is to say that OBP will not > allow you to create classes from scratch -- say, for example, that I want > to create a slider control. In Access, this is impossible. That is all > that I mean by distinguishing OOP from OBP. It's not an insult to Access or > its developers, or any virtuoso such as you or Shamil or Jim Dettman (whose > work is astounding). But it is to say that I cannot create a class from > scratch, such as a Slider control. I have to begin with the existing > classes and then wrap them. > A. > > I understand and fully admit that Access cannot use inheritance. However, > the primary tenants of OOP are encapsulation of data and code, and > abstraction - exposing a specific interface to users of the class, hiding > the implementation details of what and how the class does whatever it > does. OOP is now generally considered to use inheritance, but not always. > The terms OO was used way back when well before inheritance raised it's > head. > > Google's Go language is usually considered an OOP language and yet has no > inheritance. It does have interfaces, as does Access. Interfaces > basically define what an object will look like, but completely absent any > code or data. What that allows however is passing of objects, as well as > dimensioning objects that are "of" an interface instead of "of" a specific > type. So as long as the object being passed or dimensioned implements that > interface it can be used in that context. > > Access, internally, is actually OOP complete with inheritance. However it > has a hard boundary, i.e. we cannot inherit any of the objects that are > Access. > > As for me, I don't really care what you call it, what matters is what I can > do with it. I worked in C# for about 2 years, writing a pretty darned > complex, system to automate SQL Server, exporting and importing data and > doing other stuff, threaded. And never once inherited anything. > Inheritance, while it can be useful, is IMHO highly over rated. In the end > I can't use it in Access so I just move on to what I can do. > > So call it whatever you like. Just don't call it as useless. > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From stuart at lexacorp.com.pg Sun Sep 6 18:51:37 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Mon, 07 Sep 2020 09:51:37 +1000 Subject: [AccessD] OOP vs OBP In-Reply-To: References: , Message-ID: <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> Guys, OOP vs OBP is a difference without a difference. OOL vs OBL (Object Oriented Language v Object Based Language) is a real differences. The key letter in the P for Programming. If you only use native Windows or programing language object constructs, and use a functional/procedural programming for your logic implementation, your programming is not object oriented/based. If our application logic is implemented through objects derived from classes you designed then your programming paradigm is object oriented/based. Whether the environment you are working in supports particular capabiities of classes such as inheritance or multiple interfaces doesn't change the programming paradigm. It just changes how easy it is to write your classes. And FWIW, VBA does support inheritance.- with the Implements keyword, it just doesn't support "implementation inheritance" -- Stuart From stuart at lexacorp.com.pg Sun Sep 6 19:17:47 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Mon, 07 Sep 2020 10:17:47 +1000 Subject: [AccessD] Upsizing woes In-Reply-To: <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> References: , , <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> Message-ID: <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> I' still using Office 2010 so that I can support clients using anything from 2010 onwards. One old client is using a system I originally built in Access 2000 (using .mdb FE/BE) The probllem is they are an oil palm company based in East New Britain province several hours from the nearest airport. That and COVID-19 travel restrictions mean everything is being done remotely. First step was to get their latest FE and upgrade it to an accdb that would work n both 32bit and 64 bit. Done successfully. Next task to upsize to SQL Server 2014. I got a copy of the old 77MB BE .mdb and coverted it to accdb. I then used the upsizing wizard but the upsize failed on some tables. It appears than some years ago, they had someone who liked to tinker who deleted some records after removing refertial integrity, leaving lots of orphans. - they also did a few other naughty things. There were inappropriate dates (like "10/1/143") in the system which SQL Server wouldn't accept. There were also a few records with corrupt data in them. I finally got it all cleaned up and imported and the clean .accdb sent back to the client to do the upsize. They are using Office 2013. That's when we discovered that there is no upsize wizard in Access 2013 onward. It's been "depreciated". SIgh! I'm urrently downloading the SQL Server Migration Assistant (SSMA) for Access so that I can check it out and write a process description for them. (Sorry folks, I just had to vent to someone who would understand :) ) From jimdettman at verizon.net Sun Sep 6 19:56:22 2020 From: jimdettman at verizon.net (Jim Dettman) Date: Sun, 6 Sep 2020 20:56:22 -0400 Subject: [AccessD] Upsizing woes In-Reply-To: <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> References: <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> Message-ID: FWIW, the upsizing wizard was removed because SSMA surpassed it. Jim Sent from my iPhone > On Sep 6, 2020, at 8:17 PM, Stuart McLachlan wrote: > > I' still using Office 2010 so that I can support clients using anything from 2010 onwards. > > One old client is using a system I originally built in Access 2000 (using .mdb FE/BE) > > The probllem is they are an oil palm company based in East New Britain province several > hours from the nearest airport. That and COVID-19 travel restrictions mean everything is > being done remotely. > > First step was to get their latest FE and upgrade it to an accdb that would work n both 32bit > and 64 bit. Done successfully. > > Next task to upsize to SQL Server 2014. I got a copy of the old 77MB BE .mdb and coverted > it to accdb. I then used the upsizing wizard but the upsize failed on some tables. > > It appears than some years ago, they had someone who liked to tinker who deleted some > records after removing refertial integrity, leaving lots of orphans. - they also did a few other > naughty things. > > There were inappropriate dates (like "10/1/143") in the system which SQL Server wouldn't > accept. There were also a few records with corrupt data in them. > > I finally got it all cleaned up and imported and the clean .accdb sent back to the client to do > the upsize. > > They are using Office 2013. > That's when we discovered that there is no upsize wizard in Access 2013 onward. It's been > "depreciated". SIgh! > > I'm urrently downloading the SQL Server Migration Assistant (SSMA) for Access so that I can > check it out and write a process description for them. > > (Sorry folks, I just had to vent to someone who would understand :) ) > > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com From jwcolby at gmail.com Sun Sep 6 20:56:32 2020 From: jwcolby at gmail.com (John Colby) Date: Sun, 6 Sep 2020 21:56:32 -0400 Subject: [AccessD] Upsizing woes In-Reply-To: <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> References: <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> Message-ID: I feel your pain. At the company I wrote the call center for, I walked by a cube to find a user trying to do stuff. She had taken a course on Access and thought she'd add some fields to a table. A linked table. I gently explained that modifying tables had consequences beyond what she understood and she was not allowed to do that. I thought it best not to explain links and where the real table was. Just in case. On Sun, Sep 6, 2020 at 8:18 PM Stuart McLachlan wrote: > I' still using Office 2010 so that I can support clients using anything > from 2010 onwards. > > One old client is using a system I originally built in Access 2000 (using > .mdb FE/BE) > > The probllem is they are an oil palm company based in East New Britain > province several > hours from the nearest airport. That and COVID-19 travel restrictions > mean everything is > being done remotely. > > First step was to get their latest FE and upgrade it to an accdb that > would work n both 32bit > and 64 bit. Done successfully. > > Next task to upsize to SQL Server 2014. I got a copy of the old 77MB BE > .mdb and coverted > it to accdb. I then used the upsizing wizard but the upsize failed on > some tables. > > It appears than some years ago, they had someone who liked to tinker who > deleted some > records after removing refertial integrity, leaving lots of orphans. - > they also did a few other > naughty things. > > There were inappropriate dates (like "10/1/143") in the system which SQL > Server wouldn't > accept. There were also a few records with corrupt data in them. > > I finally got it all cleaned up and imported and the clean .accdb sent > back to the client to do > the upsize. > > They are using Office 2013. > That's when we discovered that there is no upsize wizard in Access 2013 > onward. It's been > "depreciated". SIgh! > > I'm urrently downloading the SQL Server Migration Assistant (SSMA) for > Access so that I can > check it out and write a process description for them. > > (Sorry folks, I just had to vent to someone who would understand :) ) > > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- John W. Colby Colby Consulting From jwcolby at gmail.com Sun Sep 6 20:57:17 2020 From: jwcolby at gmail.com (John Colby) Date: Sun, 6 Sep 2020 21:57:17 -0400 Subject: [AccessD] Upsizing woes In-Reply-To: References: <5F557609.2925.7039BF5@stuart.lexacorp.com.pg> <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> Message-ID: And upgrading to SQL server is rarely painless, that is for sure. On Sun, Sep 6, 2020 at 9:56 PM John Colby wrote: > I feel your pain. At the company I wrote the call center for, I walked by > a cube to find a user trying to do stuff. She had taken a course on Access > and thought she'd add some fields to a table. A linked table. I gently > explained that modifying tables had consequences beyond what she understood > and she was not allowed to do that. I thought it best not to explain links > and where the real table was. Just in case. > > On Sun, Sep 6, 2020 at 8:18 PM Stuart McLachlan > wrote: > >> I' still using Office 2010 so that I can support clients using anything >> from 2010 onwards. >> >> One old client is using a system I originally built in Access 2000 (using >> .mdb FE/BE) >> >> The probllem is they are an oil palm company based in East New Britain >> province several >> hours from the nearest airport. That and COVID-19 travel restrictions >> mean everything is >> being done remotely. >> >> First step was to get their latest FE and upgrade it to an accdb that >> would work n both 32bit >> and 64 bit. Done successfully. >> >> Next task to upsize to SQL Server 2014. I got a copy of the old 77MB BE >> .mdb and coverted >> it to accdb. I then used the upsizing wizard but the upsize failed on >> some tables. >> >> It appears than some years ago, they had someone who liked to tinker who >> deleted some >> records after removing refertial integrity, leaving lots of orphans. - >> they also did a few other >> naughty things. >> >> There were inappropriate dates (like "10/1/143") in the system which SQL >> Server wouldn't >> accept. There were also a few records with corrupt data in them. >> >> I finally got it all cleaned up and imported and the clean .accdb sent >> back to the client to do >> the upsize. >> >> They are using Office 2013. >> That's when we discovered that there is no upsize wizard in Access 2013 >> onward. It's been >> "depreciated". SIgh! >> >> I'm urrently downloading the SQL Server Migration Assistant (SSMA) for >> Access so that I can >> check it out and write a process description for them. >> >> (Sorry folks, I just had to vent to someone who would understand :) ) >> >> >> >> >> >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> > > > -- > John W. Colby > Colby Consulting > -- John W. Colby Colby Consulting From stuart at lexacorp.com.pg Sun Sep 6 21:36:24 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Mon, 07 Sep 2020 12:36:24 +1000 Subject: [AccessD] Upsizing woes In-Reply-To: <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> References: , <5F557609.2925.7039BF5@stuart.lexacorp.com.pg>, <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> Message-ID: <5F559CA8.22321.79A7768@stuart.lexacorp.com.pg> SSA is a nice tool. One potential gotcha. You need to instal the version of SSMA for your Access version not your operataing system. If using 32bit Office, you need the _x86.msi version from https://download.microsoft.com/download/D/B/D/DBDECC99-4DCA-4674-983A-CC1ABABA 2B37/SSMAforAccess_8.13.0_x86.msi Since I'm on 64 bit Windows, guess which one I tried first. :) On 7 Sep 2020 at 10:17, Stuart McLachlan wrote: > > I'm currently downloading the SQL Server Migration Assistant (SSMA) for Access so that I can > check it out and write a process description for them. > From stuart at lexacorp.com.pg Sun Sep 6 21:59:42 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Mon, 07 Sep 2020 12:59:42 +1000 Subject: [AccessD] Upsizing woes In-Reply-To: References: , , Message-ID: <5F55A21E.25137.7AFCECB@stuart.lexacorp.com.pg> All done and working fine! SSMA is a nice tool. On 6 Sep 2020 at 21:57, John Colby wrote: > And upgrading to SQL server is rarely painless, that is for sure. > > On Sun, Sep 6, 2020 at 9:56 PM John Colby wrote: > > > I feel your pain. At the company I wrote the call center for, I > > walked by a cube to find a user trying to do stuff. She had taken a > > course on Access and thought she'd add some fields to a table. A > > linked table. I gently explained that modifying tables had > > consequences beyond what she understood and she was not allowed to > > do that. I thought it best not to explain links and where the real > > table was. Just in case. > > > > On Sun, Sep 6, 2020 at 8:18 PM Stuart McLachlan > > wrote: > > > >> I' still using Office 2010 so that I can support clients using > >> anything from 2010 onwards. > >> > >> One old client is using a system I originally built in Access 2000 > >> (using .mdb FE/BE) > >> > >> The probllem is they are an oil palm company based in East New > >> Britain province several hours from the nearest airport. That and > >> COVID-19 travel restrictions mean everything is being done > >> remotely. > >> > >> First step was to get their latest FE and upgrade it to an accdb > >> that would work n both 32bit and 64 bit. Done successfully. > >> > >> Next task to upsize to SQL Server 2014. I got a copy of the old > >> 77MB BE .mdb and coverted it to accdb. I then used the upsizing > >> wizard but the upsize failed on some tables. > >> > >> It appears than some years ago, they had someone who liked to > >> tinker who deleted some records after removing refertial integrity, > >> leaving lots of orphans. - they also did a few other naughty > >> things. > >> > >> There were inappropriate dates (like "10/1/143") in the system > >> which SQL Server wouldn't accept. There were also a few records > >> with corrupt data in them. > >> > >> I finally got it all cleaned up and imported and the clean .accdb > >> sent back to the client to do the upsize. > >> > >> They are using Office 2013. > >> That's when we discovered that there is no upsize wizard in Access > >> 2013 onward. It's been "depreciated". SIgh! > >> > >> I'm urrently downloading the SQL Server Migration Assistant (SSMA) > >> for Access so that I can check it out and write a process > >> description for them. > >> > >> (Sorry folks, I just had to vent to someone who would understand :) > >> ) > >> > >> > >> > >> > >> > >> -- > >> AccessD mailing list > >> AccessD at databaseadvisors.com > >> http://databaseadvisors.com/mailman/listinfo/accessd > >> Website: http://www.databaseadvisors.com > >> > > > > > > -- > > John W. Colby > > Colby Consulting > > > > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From jbartow at winhaven.net Tue Sep 8 16:26:12 2020 From: jbartow at winhaven.net (John Bartow) Date: Tue, 8 Sep 2020 21:26:12 +0000 Subject: [AccessD] Upsizing woes In-Reply-To: <5F559CA8.22321.79A7768@stuart.lexacorp.com.pg> References: , <5F557609.2925.7039BF5@stuart.lexacorp.com.pg>, <5F557C2B.18882.71B8F0A@stuart.lexacorp.com.pg> <5F559CA8.22321.79A7768@stuart.lexacorp.com.pg> Message-ID: Stuart, Thanks for that, I am just starting the conversation on migrating a database to SQLServer. And like the old saying would have proven again, I assumed the upsize wizard was still intact. Downloading now. John B -----Original Message----- From: AccessD On Behalf Of Stuart McLachlan Sent: Sunday, September 06, 2020 9:36 PM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Upsizing woes SSA is a nice tool. One potential gotcha. You need to instal the version of SSMA for your Access version not your operataing system. If using 32bit Office, you need the _x86.msi version from https://download.microsoft.com/download/D/B/D/DBDECC99-4DCA-4674-983A-CC1ABABA 2B37/SSMAforAccess_8.13.0_x86.msi Since I'm on 64 bit Windows, guess which one I tried first. :) On 7 Sep 2020 at 10:17, Stuart McLachlan wrote: > > I'm currently downloading the SQL Server Migration Assistant (SSMA) > for Access so that I can check it out and write a process description for them. > -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From jbartow at winhaven.net Tue Sep 8 16:26:12 2020 From: jbartow at winhaven.net (John Bartow) Date: Tue, 8 Sep 2020 21:26:12 +0000 Subject: [AccessD] SQL Server GUI tools Message-ID: Since SQL Server was recently brought up... Is there a decent tool to graphically layout tables and relationships similar to how the Access relationships dialog window works? John B From wrwehler at gmail.com Tue Sep 8 16:42:31 2020 From: wrwehler at gmail.com (Ryan W) Date: Tue, 8 Sep 2020 16:42:31 -0500 Subject: [AccessD] SQL Server GUI tools In-Reply-To: References: Message-ID: <9BB11B2B-DEE4-4F5A-B525-38630A8881F9@gmail.com> SSMS does have a database diagramming tool. Sent from my iPhone > On Sep 8, 2020, at 4:27 PM, John Bartow wrote: > > ?Since SQL Server was recently brought up... > > Is there a decent tool to graphically layout tables and relationships similar to how the Access relationships dialog window works? > > John B > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com From stuart at lexacorp.com.pg Tue Sep 8 17:46:03 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Wed, 09 Sep 2020 08:46:03 +1000 Subject: [AccessD] SQL Server GUI tools In-Reply-To: References: Message-ID: <5F5809AB.22172.1114502B@stuart.lexacorp.com.pg> In SQL Server Management Studio (using 2014) In the Treeview: Server ....Databases ......MyDatabase .........Database Diagrams New Diagram (Unless you've got an aappropriate one already there) Add desired tables Click on the "record selector" of a field in one table and drag it over a field in another table to create a relationship. You will be prompted for the reationsip details. To delete a relationship, right click on the relationship and select "Delete relationships..." You wil be prompted for confirmation. On 8 Sep 2020 at 21:26, John Bartow wrote: > Since SQL Server was recently brought up... > > Is there a decent tool to graphically layout tables and relationships > similar to how the Access relationships dialog window works? > > John B > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From newsgrps at dalyn.co.nz Wed Sep 9 01:19:19 2020 From: newsgrps at dalyn.co.nz (newsgrps at dalyn.co.nz) Date: Wed, 9 Sep 2020 18:19:19 +1200 Subject: [AccessD] Calling API's from VBA In-Reply-To: <5F30C96B.3339.13E97508@stuart.lexacorp.com.pg> References: <005501d66ec3$05881210$10983630$@dalyn.co.nz> <5F30C96B.3339.13E97508@stuart.lexacorp.com.pg> Message-ID: <008001d68671$295c4e70$7c14eb50$@dalyn.co.nz> I have tried to adapt Gustav's code but I am getting an error 415 - Unsupported Media Type It seems to be related to the Content-Type setting. I have tried multiple options with the error codes below. Here is my code: Dim XmlHttp As New ServerXMLHTTP60 XmlHttp.Open "POST", "https://dispatch.exd.nz/API/CreateOrders", False XmlHttp.setRequestHeader "Content-Type", "application/xml" 'Error 415 - Unsupported Media Type ' XmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/xml" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/html" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/json" 'Error 500 - Internal server Error ' XmlHttp.setRequestHeader "Content-Type", "application/json" 'Error 500 XmlHttp.Send strRequestBody strResponseText = XmlHttp.responseText MsgBox XmlHttp.Status Here is an example of the strRequestBody: {"orders": [{"order_number": "TestGS16193","reference": "CoRef","destination": {"name": "Bob Builder","email": "bob at gmail.com","company": "HV Services","building": "","street": "66 Natu Street","suburb": "Stoke","city": "Wherever","post_code": "9999","country": "New Zealand"}}]} Any pointers to what I need to check? Regards David Emerson Dalyn Software Ltd Wellington, New Zealand From: AccessD On Behalf Of Stuart McLachlan Sent: Monday, 10 August 2020 4:14 pm To: Access Developers discussion and problem solving Subject: Re: [AccessD] Calling API's from VBA There are several ways to do it. Gustav posted a method of getting data a few days ago using XMLHTTP https://github.com/GustavBrock/VBA.Random The actual module code is at https://github.com/GustavBrock/VBA.Random/blob/master/Random.bas The relevant part of that code for your purposes is the function: Private Function RetrieveDataResponse( _ ByVal ServiceUrl As String, _ ByRef ResponseText As String) _ As Boolean A variation of that using XmlHttp.Open "PUT", ServiceUrl, Async instead of XmlHttp.Open "GET", ServiceUrl, Async should work the other way. ' Required reference: ' Microsoft XML, v6.0 From newsgrps at dalyn.co.nz Wed Sep 9 01:29:01 2020 From: newsgrps at dalyn.co.nz (newsgrps at dalyn.co.nz) Date: Wed, 9 Sep 2020 18:29:01 +1200 Subject: [AccessD] Calling API's from VBA In-Reply-To: <008001d68671$295c4e70$7c14eb50$@dalyn.co.nz> References: <005501d66ec3$05881210$10983630$@dalyn.co.nz> <5F30C96B.3339.13E97508@stuart.lexacorp.com.pg> <008001d68671$295c4e70$7c14eb50$@dalyn.co.nz> Message-ID: <008101d68672$845e88f0$8d1b9ad0$@dalyn.co.nz> Solved it. "text/json" worked. The error was because the record had already been uploaded previously. -----Original Message----- From: AccessD On Behalf Of newsgrps at dalyn.co.nz Sent: Wednesday, 9 September 2020 6:19 pm To: 'Access Developers discussion and problem solving' Subject: Re: [AccessD] Calling API's from VBA I have tried to adapt Gustav's code but I am getting an error 415 - Unsupported Media Type It seems to be related to the Content-Type setting. I have tried multiple options with the error codes below. Here is my code: Dim XmlHttp As New ServerXMLHTTP60 XmlHttp.Open "POST", "https://dispatch.exd.nz/API/CreateOrders", False XmlHttp.setRequestHeader "Content-Type", "application/xml" 'Error 415 - Unsupported Media Type ' XmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/xml" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/html" 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", "text/json" 'Error 500 - Internal server Error ' XmlHttp.setRequestHeader "Content-Type", "application/json" 'Error 500 XmlHttp.Send strRequestBody strResponseText = XmlHttp.responseText MsgBox XmlHttp.Status Here is an example of the strRequestBody: {"orders": [{"order_number": "TestGS16193","reference": "CoRef","destination": {"name": "Bob Builder","email": "bob at gmail.com","company": "HV Services","building": "","street": "66 Natu Street","suburb": "Stoke","city": "Wherever","post_code": "9999","country": "New Zealand"}}]} Any pointers to what I need to check? Regards David Emerson Dalyn Software Ltd Wellington, New Zealand From: AccessD On Behalf Of Stuart McLachlan Sent: Monday, 10 August 2020 4:14 pm To: Access Developers discussion and problem solving Subject: Re: [AccessD] Calling API's from VBA There are several ways to do it. Gustav posted a method of getting data a few days ago using XMLHTTP https://github.com/GustavBrock/VBA.Random The actual module code is at https://github.com/GustavBrock/VBA.Random/blob/master/Random.bas The relevant part of that code for your purposes is the function: Private Function RetrieveDataResponse( _ ByVal ServiceUrl As String, _ ByRef ResponseText As String) _ As Boolean A variation of that using XmlHttp.Open "PUT", ServiceUrl, Async instead of XmlHttp.Open "GET", ServiceUrl, Async should work the other way. ' Required reference: ' Microsoft XML, v6.0 -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From stuart at lexacorp.com.pg Wed Sep 9 02:00:45 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Wed, 09 Sep 2020 17:00:45 +1000 Subject: [AccessD] Calling API's from VBA In-Reply-To: <008101d68672$845e88f0$8d1b9ad0$@dalyn.co.nz> References: <005501d66ec3$05881210$10983630$@dalyn.co.nz>, <008001d68671$295c4e70$7c14eb50$@dalyn.co.nz>, <008101d68672$845e88f0$8d1b9ad0$@dalyn.co.nz> Message-ID: <5F587D9D.31851.12D93A54@stuart.lexacorp.com.pg> "The HTTP 415 Unsupported Media Type client error response code indicates that the server refuses to accept the request because the payload format is in an unsupported format. The format problem might be due to the request's indicated Content-Type or Content-Encoding , or as a result of inspecting the data directly" Note the last nine words. Apparently the server looked at the data and said "You've told me this is XML, but it's not valid XML, I don't know how to handle it". (Your example string is JSON encoded, not XML.) On 9 Sep 2020 at 18:29, newsgrps at dalyn.co.nz wrote: > Solved it. "text/json" worked. The error was because the record had > already been uploaded previously. > > -----Original Message----- > From: AccessD On Behalf Of > newsgrps at dalyn.co.nz Sent: Wednesday, 9 September 2020 6:19 pm To: > 'Access Developers discussion and problem solving' > Subject: Re: [AccessD] Calling API's > from VBA > > I have tried to adapt Gustav's code but I am getting an error 415 - > Unsupported Media Type > > It seems to be related to the Content-Type setting. I have tried > multiple options with the error codes below. Here is my code: > > Dim XmlHttp As New ServerXMLHTTP60 > > XmlHttp.Open "POST", > "https://dispatch.exd.nz/API/CreateOrders", > False > XmlHttp.setRequestHeader "Content-Type", "application/xml" > 'Error > 415 - Unsupported Media Type > ' XmlHttp.setRequestHeader "Content-Type", > "application/x-www-form-urlencoded" 'Error 415 > ' XmlHttp.setRequestHeader "Content-Type", "text/xml" 'Error > 415 ' XmlHttp.setRequestHeader "Content-Type", "text/html" > 'Error 415 ' XmlHttp.setRequestHeader "Content-Type", > "text/json" 'Error 500 - Internal server Error ' > XmlHttp.setRequestHeader "Content-Type", "application/json" 'Error 500 > > XmlHttp.Send strRequestBody > strResponseText = XmlHttp.responseText > MsgBox XmlHttp.Status > > Here is an example of the strRequestBody: > > {"orders": [{"order_number": "TestGS16193","reference": > "CoRef","destination": {"name": "Bob Builder","email": > "bob at gmail.com","company": "HV Services","building": "","street": "66 > Natu Street","suburb": "Stoke","city": "Wherever","post_code": > "9999","country": "New Zealand"}}]} > > > Any pointers to what I need to check? > > Regards > > David Emerson > Dalyn Software Ltd > Wellington, New Zealand > > > > From: AccessD On Behalf Of > Stuart McLachlan Sent: Monday, 10 August 2020 4:14 pm To: Access > Developers discussion and problem solving > Subject: Re: [AccessD] Calling API's > from VBA > > There are several ways to do it. > > Gustav posted a method of getting data a few days ago using XMLHTTP > > https://github.com/GustavBrock/VBA.Random > > The actual module code is at > > https://github.com/GustavBrock/VBA.Random/blob/master/Random.bas > > The relevant part of that code for your purposes is the function: > > Private Function RetrieveDataResponse( _ > ByVal ServiceUrl As String, _ > ByRef ResponseText As String) _ > As Boolean > > A variation of that using > XmlHttp.Open "PUT", ServiceUrl, Async > instead of > XmlHttp.Open "GET", ServiceUrl, Async > should work the other way. > > > ' Required reference: > > ' Microsoft XML, v6.0 > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From jwcolby at gmail.com Wed Sep 9 16:02:41 2020 From: jwcolby at gmail.com (John Colby) Date: Wed, 9 Sep 2020 17:02:41 -0400 Subject: [AccessD] Calling API's from VBA In-Reply-To: <005501d66ec3$05881210$10983630$@dalyn.co.nz> References: <005501d66ec3$05881210$10983630$@dalyn.co.nz> Message-ID: The problem is that VBA is single threaded. As long as it only takes a few seconds you're fine otherwise it appears to be locked up. I ended up using c# and threads. On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > > > I have a client that wants to be able to call a web api to push data and > then call another one to pull data back again. > > > > Does anyone know of resources that can give me guidance as how to do this > in > Access? > > > > Regards > > > > David Emerson > > Dalyn Software Ltd > > Wellington, New Zealand > > > > > > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From newsgrps at dalyn.co.nz Wed Sep 9 16:10:50 2020 From: newsgrps at dalyn.co.nz (newsgrps at dalyn.co.nz) Date: Thu, 10 Sep 2020 09:10:50 +1200 Subject: [AccessD] Calling API's from VBA In-Reply-To: References: <005501d66ec3$05881210$10983630$@dalyn.co.nz> Message-ID: <000001d686ed$b440e010$1cc2a030$@dalyn.co.nz> Thanks John, In this case there is a manual process required between the push and get so we don't have that problem. -----Original Message----- From: AccessD On Behalf Of John Colby Sent: Thursday, 10 September 2020 9:03 am To: Access Developers discussion and problem solving Subject: Re: [AccessD] Calling API's from VBA The problem is that VBA is single threaded. As long as it only takes a few seconds you're fine otherwise it appears to be locked up. I ended up using c# and threads. On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > > > I have a client that wants to be able to call a web api to push data > and then call another one to pull data back again. > > > > Does anyone know of resources that can give me guidance as how to do > this in Access? > > > > Regards > > > > David Emerson > > Dalyn Software Ltd > > Wellington, New Zealand > > > > > > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From gustav at cactus.dk Thu Sep 10 00:46:10 2020 From: gustav at cactus.dk (Gustav Brock) Date: Thu, 10 Sep 2020 05:46:10 +0000 Subject: [AccessD] Calling API's from VBA Message-ID: Hi David It depends on how data are going to be pushed. Is it a regular upload, a POST, or is it by extending the URL with parameters? For the latter, you can find a lot of examples in my project VBA.CurrencyExchange: https://github.com/GustavBrock/VBA.CurrencyExchange You don't mention the format of the data that will be pulled. My project demonstrates three methods. /gustav -----Oprindelig meddelelse----- On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > I have a client that wants to be able to call a web api to push data and then call another one to pull data back again. > > Does anyone know of resources that can give me guidance as how to do this in Access? > > Regards > > David Emerson > Dalyn Software Ltd > Wellington, New Zealand From newsgrps at dalyn.co.nz Thu Sep 10 01:07:25 2020 From: newsgrps at dalyn.co.nz (newsgrps at dalyn.co.nz) Date: Thu, 10 Sep 2020 18:07:25 +1200 Subject: [AccessD] Calling API's from VBA In-Reply-To: References: Message-ID: <007001d68738$a9d5fca0$fd81f5e0$@dalyn.co.nz> Thanks Gustav, I was able to modify your code from the recent Random Number generator. Regards David Emerson Dalyn Software Ltd Wellington, New Zealand -----Original Message----- From: AccessD On Behalf Of Gustav Brock via AccessD Sent: Thursday, 10 September 2020 5:46 pm To: Access Developers discussion and problem solving Cc: Gustav Brock Subject: Re: [AccessD] Calling API's from VBA Hi David It depends on how data are going to be pushed. Is it a regular upload, a POST, or is it by extending the URL with parameters? For the latter, you can find a lot of examples in my project VBA.CurrencyExchange: https://github.com/GustavBrock/VBA.CurrencyExchange You don't mention the format of the data that will be pulled. My project demonstrates three methods. /gustav -----Oprindelig meddelelse----- On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > I have a client that wants to be able to call a web api to push data and then call another one to pull data back again. > > Does anyone know of resources that can give me guidance as how to do this in Access? > > Regards > > David Emerson > Dalyn Software Ltd > Wellington, New Zealand -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From gustav at cactus.dk Thu Sep 10 01:13:34 2020 From: gustav at cactus.dk (Gustav Brock) Date: Thu, 10 Sep 2020 06:13:34 +0000 Subject: [AccessD] Calling API's from VBA Message-ID: Hi David Oh, right. That was another example. /gustav -----Oprindelig meddelelse----- Fra: newsgrps at dalyn.co.nz Sendt: 10. september 2020 08:07 Til: 'Access Developers discussion and problem solving' Cc: Gustav Brock Emne: RE: [AccessD] Calling API's from VBA Thanks Gustav, I was able to modify your code from the recent Random Number generator. Regards David Emerson Dalyn Software Ltd Wellington, New Zealand -----Original Message----- From: AccessD On Behalf Of Gustav Brock via AccessD Sent: Thursday, 10 September 2020 5:46 pm To: Access Developers discussion and problem solving Cc: Gustav Brock Subject: Re: [AccessD] Calling API's from VBA Hi David It depends on how data are going to be pushed. Is it a regular upload, a POST, or is it by extending the URL with parameters? For the latter, you can find a lot of examples in my project VBA.CurrencyExchange: https://github.com/GustavBrock/VBA.CurrencyExchange You don't mention the format of the data that will be pulled. My project demonstrates three methods. /gustav -----Oprindelig meddelelse----- On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > I have a client that wants to be able to call a web api to push data and then call another one to pull data back again. > > Does anyone know of resources that can give me guidance as how to do this in Access? > > Regards > > David Emerson > Dalyn Software Ltd > Wellington, New Zealand From mar.ko at verizon.net Thu Sep 10 18:46:52 2020 From: mar.ko at verizon.net (Mark Simms) Date: Thu, 10 Sep 2020 23:46:52 +0000 (UTC) Subject: [AccessD] Calling API's from VBA In-Reply-To: References: <005501d66ec3$05881210$10983630$@dalyn.co.nz> Message-ID: <855819779.2804572.1599781612437@mail.yahoo.com> Indeed John.....I experienced the same when trying to use a stock trading API.Excel's STA just couldn't hack it...the CPU core would max-out. Mark Simms marksimms at verizon.net -----Original Message----- From: John Colby To: Access Developers discussion and problem solving Sent: Wed, Sep 9, 2020 5:02 pm Subject: Re: [AccessD] Calling API's from VBA The problem is that VBA is single threaded. As long as it only takes a few seconds you're fine otherwise it appears to be locked up. I ended up using c# and threads. On Sun, Aug 9, 2020, 23:05 wrote: > Hi Listers, > > > > I have a client that wants to be able to call a web api to push data and > then call another one to pull data back again. > > > > Does anyone know of resources that can give me guidance as how to do this > in > Access? > > > > Regards > > > > David Emerson > > Dalyn Software Ltd > > Wellington, New Zealand > > > > > > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From jwcolby at gmail.com Thu Sep 17 11:42:54 2020 From: jwcolby at gmail.com (John Colby) Date: Thu, 17 Sep 2020 12:42:54 -0400 Subject: [AccessD] Poll - What Access version Message-ID: 1) What access version(s) do you develop new in? 2) What Access versions do you maintain databases in -- John W. Colby Colby Consulting From rockysmolin2 at gmail.com Thu Sep 17 11:50:53 2020 From: rockysmolin2 at gmail.com (rocky smolin) Date: Thu, 17 Sep 2020 09:50:53 -0700 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: <004201d68d12$b5442c80$1fcc8580$@gmail.com> I develop in 2010. I keep things simple so I don't run into problems with folks who use later versions. The only problem I've had is with those who use 64-bit access and that is worked around with PtrSafe. All my previous clients are on 2010 or later. So I don't have a problem with broken references because the later version of Access will update the library reference to its version. r -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of John Colby Sent: Thursday, September 17, 2020 9:43 AM To: Access Developers discussion and problem solving Subject: [AccessD] Poll - What Access version 1) What access version(s) do you develop new in? 2) What Access versions do you maintain databases in -- John W. Colby Colby Consulting -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From gustav at cactus.dk Thu Sep 17 12:21:08 2020 From: gustav at cactus.dk (Gustav Brock) Date: Thu, 17 Sep 2020 17:21:08 +0000 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: Hi John 1) 365 64-bit 2) Any, down to Access 2.0 /gustav ________________________________ Fra: AccessD p? vegne af John Colby Sendt: 17. september 2020 18:42 Til: Access Developers discussion and problem solving Emne: [AccessD] Poll - What Access version 1) What access version(s) do you develop new in? 2) What Access versions do you maintain databases in -- John W. Colby Colby Consulting From fuller.artful at gmail.com Thu Sep 17 13:04:33 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Thu, 17 Sep 2020 14:04:33 -0400 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: Hi JWC, I consider myself semi-retired; ias Michael Corleone said, "I keep trying to get out, but they keep dragging me back in." Most of the Access apps I wrote required a complete understanding of the particular business or governmental niche. For example, one app I wrote (for a travel-event company, i.e. given a tour by U2, they would buy 400 tickets to each stop on the entire, then package these with flight pans and hotel bookings and even travel from airport to hotel to concert and back, and the return flight -- all done with a click. The email reply would list your itinerary in chronological order, al steps arranged by date and time. Initially, I came on board to solve a small problem, but as I accumulated an understanding of the business, I suggested improvements. For example, why not pipe all this data into an entry into an accounting system they currently use? Add to this business model four different branches loosely defined by time-zone; combine this with the limited-inventory problem. Eventually this grew into an enterprise system. Should I retire or be run over by a bus, it would take a long time to educate a new programmer, no matter how gifted, to take over. Therefore about 30% of my time was devoted to documenting the system and the business, so that an incoming developer could read those hundred pages at least twice, and eventually come to an understanding of the model. To be sure, I made lots of mistakes, the largest one involving what began as a local app and then required migration to SQL Server and Terminal Services, so that everyone in the four offices (each in a different time zone) knew exactly how many seats were left for any given concert. Add to this, "Do you want to fly first class? Ditto for hotel accomodation, etc. Each successful step exposed new problems to solve. This was most certainly not a top-down problem, nor a bottom-up problem. I can't think of an acronym for it, but the essential idea is this: 1. Begin with a small problem. 2. Solve it. 3. The solution presents new opportunities, i.e. new problems. Repeat. I have some other examples, but I'm sure that you do too. So let's hear about them. On Thu, Sep 17, 2020 at 12:43 PM John Colby wrote: > 1) What access version(s) do you develop new in? > > 2) What Access versions do you maintain databases in > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From newsgrps at dalyn.co.nz Thu Sep 17 14:40:15 2020 From: newsgrps at dalyn.co.nz (newsgrps at dalyn.co.nz) Date: Fri, 18 Sep 2020 07:40:15 +1200 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: <001f01d68d2a$600b6270$20222750$@dalyn.co.nz> Hi John, 1) 365 32-bit 2) Any, down to Access 2010 Regards David Emerson Dalyn Software Ltd Wellington, New Zealand -----Original Message----- From: AccessD On Behalf Of John Colby Sent: Friday, 18 September 2020 4:43 am To: Access Developers discussion and problem solving Subject: [AccessD] Poll - What Access version 1) What access version(s) do you develop new in? 2) What Access versions do you maintain databases in -- John W. Colby Colby Consulting -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From tinanfields at torchlake.com Thu Sep 17 16:21:35 2020 From: tinanfields at torchlake.com (Tina N Fields) Date: Thu, 17 Sep 2020 17:21:35 -0400 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: 1) 2013 32-bit 2) 2007 - 2013 Tina Norris Fields 231-322-2787 tinanfields-at-torchlake-dot-com On 9/17/2020 12:42 PM, John Colby wrote: > 1) What access version(s) do you develop new in? > > 2) What Access versions do you maintain databases in > From stuart at lexacorp.com.pg Thu Sep 17 17:00:27 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Fri, 18 Sep 2020 08:00:27 +1000 Subject: [AccessD] Poll - What Access version In-Reply-To: References: Message-ID: <5F63DC7B.10365.2704752C@stuart.lexacorp.com.pg> 1. 2010, 32bit. It's still commonly in use and developing in anything higher wil cause problems for some clients. I have not encountered any problems running FE developed in 2010 on any later version. I do make sure that I use PTRSAFE for all extenal API or DLL calls to deal with 32/64 bit installations. (I make a fair bit of use of API and other DLLs) 2. I've still got the odd .mdb back end out there but update them where I can. I occasionally come across old installations. Any front end on 2007 or earlier and I tell them they have to upgrade. . On 17 Sep 2020 at 12:42, John Colby wrote: > 1) What access version(s) do you develop new in? > > 2) What Access versions do you maintain databases in > > -- > John W. Colby > Colby Consulting > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From davidmcafee at gmail.com Fri Sep 18 15:28:16 2020 From: davidmcafee at gmail.com (David McAfee) Date: Fri, 18 Sep 2020 13:28:16 -0700 Subject: [AccessD] SQL Server GUI tools In-Reply-To: <5F5809AB.22172.1114502B@stuart.lexacorp.com.pg> References: <5F5809AB.22172.1114502B@stuart.lexacorp.com.pg> Message-ID: I might be wrong, but I think the diagrams are going away with SSMS 2019 Also, not sure if any of you know that Access reports can be converted (imported) into SSRS RDLs using Visual Studio Community (free) and SSDT. I had a few reports that contained embedded sub reports which failed the import process. I exported those into a new Access database then saved a version of the main report without the embedded subreport. That new version imported fine and I manually embedded the subreport rdl into the main rdl. On Tue, Sep 8, 2020, 3:46 PM Stuart McLachlan wrote: > In SQL Server Management Studio (using 2014) > > In the Treeview: > > Server > ....Databases > ......MyDatabase > .........Database Diagrams > > New Diagram (Unless you've got an aappropriate one already there) > Add desired tables > > Click on the "record selector" of a field in one table and drag it over a > field in another table to > create a relationship. You will be prompted for the reationsip details. > > To delete a relationship, right click on the relationship and select > "Delete relationships..." > You wil be prompted for confirmation. > > On 8 Sep 2020 at 21:26, John Bartow wrote: > > > Since SQL Server was recently brought up... > > > > Is there a decent tool to graphically layout tables and relationships > > similar to how the Access relationships dialog window works? > > > > John B > > > > > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From fuller.artful at gmail.com Fri Sep 18 18:41:03 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Fri, 18 Sep 2020 19:41:03 -0400 Subject: [AccessD] SQL Server GUI tools In-Reply-To: References: <5F5809AB.22172.1114502B@stuart.lexacorp.com.pg> Message-ID: I have tried all the diagrammers mentioned, and concluded that a third-party solution is best. I still use a now ancient version of PowerDesigner, a tool dedicated solely to diagramming, but its virtue is its independence from any specific On Fri, Sep 18, 2020 at 4:29 PM David McAfee wrote: > I might be wrong, but I think the diagrams are going away with SSMS 2019 > > Also, not sure if any of you know that Access reports can be converted > (imported) into SSRS RDLs using Visual Studio Community (free) and SSDT. > > I had a few reports that contained embedded sub reports which failed the > import process. > > I exported those into a new Access database then saved a version of the > main report without the embedded subreport. That new version imported fine > and I manually embedded the subreport rdl into the main rdl. > > On Tue, Sep 8, 2020, 3:46 PM Stuart McLachlan > wrote: > > > In SQL Server Management Studio (using 2014) > > > > In the Treeview: > > > > Server > > ....Databases > > ......MyDatabase > > .........Database Diagrams > > > > New Diagram (Unless you've got an aappropriate one already there) > > Add desired tables > > > > Click on the "record selector" of a field in one table and drag it over a > > field in another table to > > create a relationship. You will be prompted for the reationsip details. > > > > To delete a relationship, right click on the relationship and select > > "Delete relationships..." > > You wil be prompted for confirmation. > > > > On 8 Sep 2020 at 21:26, John Bartow wrote: > > > > > Since SQL Server was recently brought up... > > > > > > Is there a decent tool to graphically layout tables and relationships > > > similar to how the Access relationships dialog window works? > > > > > > John B > > > > > > > > > -- > > > AccessD mailing list > > > AccessD at databaseadvisors.com > > > http://databaseadvisors.com/mailman/listinfo/accessd > > > Website: http://www.databaseadvisors.com > > > > > > > > > -- > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > -- Arthur From fuller.artful at gmail.com Fri Sep 18 18:41:31 2020 From: fuller.artful at gmail.com (Arthur Fuller) Date: Fri, 18 Sep 2020 19:41:31 -0400 Subject: [AccessD] SQL Server GUI tools In-Reply-To: References: <5F5809AB.22172.1114502B@stuart.lexacorp.com.pg> Message-ID: Con On Fri, Sep 18, 2020 at 7:41 PM Arthur Fuller wrote: > I have tried all the diagrammers mentioned, and concluded that a > third-party solution is best. I still use a now ancient version of > PowerDesigner, a tool dedicated solely to diagramming, but its virtue is > its independence from any specific > > On Fri, Sep 18, 2020 at 4:29 PM David McAfee > wrote: > >> I might be wrong, but I think the diagrams are going away with SSMS 2019 >> >> Also, not sure if any of you know that Access reports can be converted >> (imported) into SSRS RDLs using Visual Studio Community (free) and SSDT. >> >> I had a few reports that contained embedded sub reports which failed the >> import process. >> >> I exported those into a new Access database then saved a version of the >> main report without the embedded subreport. That new version imported fine >> and I manually embedded the subreport rdl into the main rdl. >> >> On Tue, Sep 8, 2020, 3:46 PM Stuart McLachlan >> wrote: >> >> > In SQL Server Management Studio (using 2014) >> > >> > In the Treeview: >> > >> > Server >> > ....Databases >> > ......MyDatabase >> > .........Database Diagrams >> > >> > New Diagram (Unless you've got an aappropriate one already there) >> > Add desired tables >> > >> > Click on the "record selector" of a field in one table and drag it over >> a >> > field in another table to >> > create a relationship. You will be prompted for the reationsip details. >> > >> > To delete a relationship, right click on the relationship and select >> > "Delete relationships..." >> > You wil be prompted for confirmation. >> > >> > On 8 Sep 2020 at 21:26, John Bartow wrote: >> > >> > > Since SQL Server was recently brought up... >> > > >> > > Is there a decent tool to graphically layout tables and relationships >> > > similar to how the Access relationships dialog window works? >> > > >> > > John B >> > > >> > > >> > > -- >> > > AccessD mailing list >> > > AccessD at databaseadvisors.com >> > > http://databaseadvisors.com/mailman/listinfo/accessd >> > > Website: http://www.databaseadvisors.com >> > > >> > >> > >> > -- >> > AccessD mailing list >> > AccessD at databaseadvisors.com >> > http://databaseadvisors.com/mailman/listinfo/accessd >> > Website: http://www.databaseadvisors.com >> > >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> > > > -- > Arthur > > -- Arthur From davidmcafee at gmail.com Thu Sep 24 20:30:06 2020 From: davidmcafee at gmail.com (David McAfee) Date: Thu, 24 Sep 2020 18:30:06 -0700 Subject: [AccessD] Fwd: FW: table design In-Reply-To: References: Message-ID: I need some help with a table design ideas for a new project that I?m starting, and was wondering if I could bounce my idea off of several of you. :) Currently, the company that I work for is tracking our cell phones and who they are assigned to by different departments*, each* in their own way and reconciling the lists is a major pain. Currently Accounting will complain because the location for the employee in the IT departments list is incorrect, or the employee ID in the user fields of the Verizon portal has the wrong Employee ID or Cost center. I want to make an app to track it in one place, using source data from each location (that is managed by each of these locations), so the I.T. techs pick an employee and device and assign one to the other and not have to worry about the other data. HR has Employee data (ID, name, start /end dates?) Accounting has their cost center data by employee Verizon cell data should be the source for the phone data (phone Number, IMEI (Device ID), ICCID (Sim number), model, manufacture..) Old / existing system to grab the current assignment of employee to cell. Doing it this way, if something is incorrect in regards to the employee, HR fixes it in their source. Accounting fixes any errors related to the cost center / employee relation in their system. The basic idea is simple, store the PK for the employee and the matched cell ID, and when reporting use the links to the other systems for their info (name, cost center, office location?) Looking at the flat files that are downloaded from Verizon (VZw), we have roughly 1500 cell phones spread across six VZw account numbers. I?m thinking of setting up something like this: tblVzAccounts (pulled from VZw download flat file and normalized during ETL process) vzAccPK (AutoNum PK) AccNo (Txt) 955321232-00023 EDT (Entry Date Time, default value=Now()) tblPhoneNumbers (pulled from VZw download flat file and normalized during ETL process) PNID (AutoNUm PK) PhoneNumber (text/CHAR(10) no dashes/characters stored, only numbers) 2135551212 ContractStartDate (Date) ContractEndDate (Date) EDT tblIineStatus (pulled from VZw download flat file and normalized during ETL process) LineStatusID (An PK) LineStatus (CHAR(1)- A, S, D) LineStatusDescription Active, Suspended, Deactivated) EDT tblPhones (pulled from VZw download flat file and normalized during ETL process) PhID (AN PK) IMEI (Text) Mfg Model EDT tblSIMCard (pulled from VZw download flat file and normalized during ETL process, but sims could also be swapped in the field) SimID (AN PKID) ICCID (Text) EDT tblDevice (Junction table to put all of the normalized PKs together, keeping a history) DeviceID (AN PK) PNID (FK) PHID (FK) SimID (FK) LineStatusID (FK) ?Not sure whether to place this here, or have a separate junction table for DeviceID and LineStatusID EDT tblEmpDeviceJunct (Employee Device Junction table, used to mate the device ID with the employee ID) EDJPKID (AN PKID) DeviceID (FK) EmpID (FK) EDT EUID (Entry User ID, Auto Inserted) I?m thinking I still need a device status and/or location table, and possibly its PK as an FK in the junction table above. I?m also thinking of these scenarios that I?ve witnessed (even though, I was told they don?t happen) A phone can be damaged and in need of repair A phone can be damaged and cant be repaired, thus will need to be deactivated A phone can be unassigned (thinking of adding an ?unassigned? employee to the employee table) A Sim Card can be swapped between phones (Good and non working to retain phone number for employee) A sim card can be removed from a phone (damaged phone laying around) A sim card can be added to a phone (New/used phone, removed card from non functional phone, or Extra sim card laying around) A phone (or phones) can be taken by a technician to their house to be worked on at home The following three situations can also occur, but they have to be done on the Verizon website, so I figure, the ETL process can handle this part) Swap phones between lines Remove phone from line Add phone to existing line Does this layout sound right? What would you do differently? The front end will be unbound and all changes are new insertions to the junction table, keeping an audit trail. Thanks, David McAfee From stuart at lexacorp.com.pg Thu Sep 24 21:59:43 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Fri, 25 Sep 2020 12:59:43 +1000 Subject: [AccessD] Fwd: FW: table design In-Reply-To: References: , , Message-ID: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> At any point of time you can have: One phone number attached to one account. One phone number attached to one SIM. More than one SIM in some phones Multiple phones per employee I'd look at five tables and four link tables with records being time delimited : Employee - Phone Phone -SIM SIM -Line Line- Account Each one with a EDT and a "superceded datetime" (SDT). Indexed on the first field and EDT. Second field needs to allow nulls Current status data can be retreived by joins between those five tables where SDT is null. On 24 Sep 2020 at 18:30, David McAfee wrote: > I need some help with a table design ideas for a new project that > I?m starting, and was wondering if I could bounce my idea off of > several of you. :) > > > > Currently, the company that I work for is tracking our cell phones and > who they are assigned to by different departments*, each* in their own > way and reconciling the lists is a major pain. > > > Currently Accounting will complain because the location for the > employee in the IT departments list is incorrect, or the employee ID > in the user fields of the Verizon portal has the wrong Employee ID or > Cost center. > > > > I want to make an app to track it in one place, using source data from > each location (that is managed by each of these locations), so the > I.T. techs pick an employee and device and assign one to the other and > not have to worry about the other data. > > > > HR has Employee data (ID, name, start /end dates...) > > Accounting has their cost center data by employee > > Verizon cell data should be the source for the phone data (phone > Number, IMEI (Device ID), ICCID (Sim number), model, manufacture..) > > Old / existing system to grab the current assignment of employee to > cell. > > > Doing it this way, if something is incorrect in regards to the > employee, HR fixes it in their source. Accounting fixes any errors > related to the cost center / employee relation in their system. > > The basic idea is simple, store the PK for the employee and the > matched cell ID, and when reporting use the links to the other systems > for their info (name, cost center, office location...) > > > > Looking at the flat files that are downloaded from Verizon (VZw), we > have roughly 1500 cell phones spread across six VZw account numbers. > > > > I?m thinking of setting up something like this: > > > > tblVzAccounts (pulled from VZw download flat file and normalized > during ETL process) > > vzAccPK (AutoNum PK) > > AccNo (Txt) 955321232-00023 > > EDT (Entry Date Time, default value=Now()) > > > > tblPhoneNumbers (pulled from VZw download flat file and normalized > during ETL process) > > PNID (AutoNUm PK) > > PhoneNumber (text/CHAR(10) no dashes/characters stored, only numbers) > 2135551212 > > ContractStartDate (Date) > > ContractEndDate (Date) > > EDT > > > > tblIineStatus (pulled from VZw download flat file and normalized > during ETL process) > > LineStatusID (An PK) > > LineStatus (CHAR(1)- A, S, D) > > LineStatusDescription Active, Suspended, Deactivated) > > EDT > > > > tblPhones (pulled from VZw download flat file and normalized during > ETL process) > > PhID (AN PK) > > IMEI (Text) > > Mfg > > Model > > EDT > > > > tblSIMCard (pulled from VZw download flat file and normalized during > ETL process, but sims could also be swapped in the field) > > SimID (AN PKID) > > ICCID (Text) > > EDT > > > > tblDevice (Junction table to put all of the normalized PKs together, > keeping a history) > > DeviceID (AN PK) > > PNID (FK) > > PHID (FK) > > SimID (FK) > > LineStatusID (FK) -Not sure whether to place this here, or have a > separate junction table for DeviceID and LineStatusID > > EDT > > > > tblEmpDeviceJunct (Employee Device Junction table, used to mate the > device ID with the employee ID) > > EDJPKID (AN PKID) > > DeviceID (FK) > > EmpID (FK) > > EDT > > EUID (Entry User ID, Auto Inserted) > > > > I?m thinking I still need a device status and/or location table, and > possibly its PK as an FK in the junction table above. > > I?m also thinking of these scenarios that I?ve witnessed (even > though, I was told they don?t happen) > > A phone can be damaged and in need of repair > > A phone can be damaged and cant be repaired, thus will need to be > deactivated > > A phone can be unassigned (thinking of adding an "unassigned" > employee to the employee table) > > A Sim Card can be swapped between phones (Good and non working to > retain phone number for employee) > > A sim card can be removed from a phone (damaged phone laying around) > > A sim card can be added to a phone (New/used phone, removed card from > non functional phone, or Extra sim card laying around) > > A phone (or phones) can be taken by a technician to their house to be > worked on at home > > > > > The following three situations can also occur, but they have to be > done on the Verizon website, so I figure, the ETL process can handle > this part) > > Swap phones between lines > > Remove phone from line > > Add phone to existing line > > > > Does this layout sound right? What would you do differently? > > The front end will be unbound and all changes are new insertions to > the junction table, keeping an audit trail. > > > > Thanks, > > > > David McAfee > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com From jamesbutton at blueyonder.co.uk Fri Sep 25 04:45:22 2020 From: jamesbutton at blueyonder.co.uk (James Button) Date: Fri, 25 Sep 2020 10:45:22 +0100 Subject: [AccessD] Fwd: FW: table design In-Reply-To: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> References: , , <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> Message-ID: AFAIK Some other things to consider: You can have multiple phones on an account Have the SIM's moved between phones Have phones passed on between assignees either intended to be permanently, for a short period, or just a day loaner. Also - Phones assigned to 'posts', and to teams - as in manager says who gets the phone for weekend on-call And there are the 'personal' numbers that get directed to whatever phone the number owner wants to use Also what about tablets etc, that come with some phone contracts - so that would be broadband usage Or more important - tracking that the tablet stays with the current phone holder And .. earbuds, handsfree, car-phone holders OK - depends on the devices being associated with the phone - the person, or managed separately And then there is the carry-over of unused 'allowances' months data Not saying you need to include those in the tables, forms, reports and data exports Just the design should include consideration of the possibilities and that you were misinformed by those currently saying what is needed. And - then consider the Microsoft 365 licencing terms: A single non-corporate 'subscription' agreement allowing 5 users, each user allowed a (not concurrently used?) copy on a PC (windows or applemac) on a tablet/mobile device and on a phone + backups? with a legal requirement to deal with all those installations/instances when the subscription is not continued. Not forgetting the 'Forget me' requirements GDPR etc. and requirements to keep data in the 'region' where it was collected as well as fulfil legal disclosure, and concealment demands. Anything personal including usage - and numbers called etc. Have fun fulfilling all those requirements simultaneously and the combination of shared and passed on facilities & devices. JimB -----Original Message----- From: AccessD On Behalf Of Stuart McLachlan Sent: Friday, September 25, 2020 4:00 AM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Fwd: FW: table design At any point of time you can have: One phone number attached to one account. One phone number attached to one SIM. More than one SIM in some phones Multiple phones per employee I'd look at five tables and four link tables with records being time delimited : Employee - Phone Phone -SIM SIM -Line Line- Account Each one with a EDT and a "superceded datetime" (SDT). Indexed on the first field and EDT. Second field needs to allow nulls Current status data can be retreived by joins between those five tables where SDT is null. On 24 Sep 2020 at 18:30, David McAfee wrote: > I need some help with a table design ideas for a new project that > I?m starting, and was wondering if I could bounce my idea off of > several of you. :) > > > > Currently, the company that I work for is tracking our cell phones and > who they are assigned to by different departments*, each* in their own > way and reconciling the lists is a major pain. > > > Currently Accounting will complain because the location for the > employee in the IT departments list is incorrect, or the employee ID > in the user fields of the Verizon portal has the wrong Employee ID or > Cost center. > > > > I want to make an app to track it in one place, using source data from > each location (that is managed by each of these locations), so the > I.T. techs pick an employee and device and assign one to the other and > not have to worry about the other data. > > > > HR has Employee data (ID, name, start /end dates...) > > Accounting has their cost center data by employee > > Verizon cell data should be the source for the phone data (phone > Number, IMEI (Device ID), ICCID (Sim number), model, manufacture..) > > Old / existing system to grab the current assignment of employee to > cell. > > > Doing it this way, if something is incorrect in regards to the > employee, HR fixes it in their source. Accounting fixes any errors > related to the cost center / employee relation in their system. > > The basic idea is simple, store the PK for the employee and the > matched cell ID, and when reporting use the links to the other systems > for their info (name, cost center, office location...) > > > > Looking at the flat files that are downloaded from Verizon (VZw), we > have roughly 1500 cell phones spread across six VZw account numbers. > > > > I?m thinking of setting up something like this: > > > > tblVzAccounts (pulled from VZw download flat file and normalized > during ETL process) > > vzAccPK (AutoNum PK) > > AccNo (Txt) 955321232-00023 > > EDT (Entry Date Time, default value=Now()) > > > > tblPhoneNumbers (pulled from VZw download flat file and normalized > during ETL process) > > PNID (AutoNUm PK) > > PhoneNumber (text/CHAR(10) no dashes/characters stored, only numbers) > 2135551212 > > ContractStartDate (Date) > > ContractEndDate (Date) > > EDT > > > > tblIineStatus (pulled from VZw download flat file and normalized > during ETL process) > > LineStatusID (An PK) > > LineStatus (CHAR(1)- A, S, D) > > LineStatusDescription Active, Suspended, Deactivated) > > EDT > > > > tblPhones (pulled from VZw download flat file and normalized during > ETL process) > > PhID (AN PK) > > IMEI (Text) > > Mfg > > Model > > EDT > > > > tblSIMCard (pulled from VZw download flat file and normalized during > ETL process, but sims could also be swapped in the field) > > SimID (AN PKID) > > ICCID (Text) > > EDT > > > > tblDevice (Junction table to put all of the normalized PKs together, > keeping a history) > > DeviceID (AN PK) > > PNID (FK) > > PHID (FK) > > SimID (FK) > > LineStatusID (FK) -Not sure whether to place this here, or have a > separate junction table for DeviceID and LineStatusID > > EDT > > > > tblEmpDeviceJunct (Employee Device Junction table, used to mate the > device ID with the employee ID) > > EDJPKID (AN PKID) > > DeviceID (FK) > > EmpID (FK) > > EDT > > EUID (Entry User ID, Auto Inserted) > > > > I?m thinking I still need a device status and/or location table, and > possibly its PK as an FK in the junction table above. > > I?m also thinking of these scenarios that I?ve witnessed (even > though, I was told they don?t happen) > > A phone can be damaged and in need of repair > > A phone can be damaged and cant be repaired, thus will need to be > deactivated > > A phone can be unassigned (thinking of adding an "unassigned" > employee to the employee table) > > A Sim Card can be swapped between phones (Good and non working to > retain phone number for employee) > > A sim card can be removed from a phone (damaged phone laying around) > > A sim card can be added to a phone (New/used phone, removed card from > non functional phone, or Extra sim card laying around) > > A phone (or phones) can be taken by a technician to their house to be > worked on at home > > > > > The following three situations can also occur, but they have to be > done on the Verizon website, so I figure, the ETL process can handle > this part) > > Swap phones between lines > > Remove phone from line > > Add phone to existing line > > > > Does this layout sound right? What would you do differently? > > The front end will be unbound and all changes are new insertions to > the junction table, keeping an audit trail. > > > > Thanks, > > > > David McAfee > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From jimdettman at verizon.net Fri Sep 25 07:12:04 2020 From: jimdettman at verizon.net (Jim Dettman) Date: Fri, 25 Sep 2020 08:12:04 -0400 Subject: [AccessD] Fwd: FW: table design In-Reply-To: References: Message-ID: <01a101d69335$15727260$40575720$@verizon.net> David, I think your design is right on. The only question is what does a "Line" represent? If it?s a phone #, then it does not need to be a separate table. If however it is a certain number of Lines that you can have against an account, and the line may or may not currently be assigned a phone # and a device, then it is a separate entity. i.e. I have account with Verizon, pay for 200 lines. 190 of them are currently in use (have an assigned phone number). Out of those 190, 185 currently have a device assigned to them (phone + SIM card). So at the moment, you have: Accounts Lines Phone Numbers Phones SIM Cards With a combination of a phone and a SIM card being a device. Jim. -----Original Message----- From: AccessD On Behalf Of David McAfee Sent: Thursday, September 24, 2020 9:30 PM To: Microsoft Access Database Discussion List ; Access Developers discussion and problem solving Subject: [AccessD] Fwd: FW: table design I need some help with a table design ideas for a new project that I?m starting, and was wondering if I could bounce my idea off of several of you. :) Currently, the company that I work for is tracking our cell phones and who they are assigned to by different departments*, each* in their own way and reconciling the lists is a major pain. Currently Accounting will complain because the location for the employee in the IT departments list is incorrect, or the employee ID in the user fields of the Verizon portal has the wrong Employee ID or Cost center. I want to make an app to track it in one place, using source data from each location (that is managed by each of these locations), so the I.T. techs pick an employee and device and assign one to the other and not have to worry about the other data. HR has Employee data (ID, name, start /end dates?) Accounting has their cost center data by employee Verizon cell data should be the source for the phone data (phone Number, IMEI (Device ID), ICCID (Sim number), model, manufacture..) Old / existing system to grab the current assignment of employee to cell. Doing it this way, if something is incorrect in regards to the employee, HR fixes it in their source. Accounting fixes any errors related to the cost center / employee relation in their system. The basic idea is simple, store the PK for the employee and the matched cell ID, and when reporting use the links to the other systems for their info (name, cost center, office location?) Looking at the flat files that are downloaded from Verizon (VZw), we have roughly 1500 cell phones spread across six VZw account numbers. I?m thinking of setting up something like this: tblVzAccounts (pulled from VZw download flat file and normalized during ETL process) vzAccPK (AutoNum PK) AccNo (Txt) 955321232-00023 EDT (Entry Date Time, default value=Now()) tblPhoneNumbers (pulled from VZw download flat file and normalized during ETL process) PNID (AutoNUm PK) PhoneNumber (text/CHAR(10) no dashes/characters stored, only numbers) 2135551212 ContractStartDate (Date) ContractEndDate (Date) EDT tblIineStatus (pulled from VZw download flat file and normalized during ETL process) LineStatusID (An PK) LineStatus (CHAR(1)- A, S, D) LineStatusDescription Active, Suspended, Deactivated) EDT tblPhones (pulled from VZw download flat file and normalized during ETL process) PhID (AN PK) IMEI (Text) Mfg Model EDT tblSIMCard (pulled from VZw download flat file and normalized during ETL process, but sims could also be swapped in the field) SimID (AN PKID) ICCID (Text) EDT tblDevice (Junction table to put all of the normalized PKs together, keeping a history) DeviceID (AN PK) PNID (FK) PHID (FK) SimID (FK) LineStatusID (FK) ?Not sure whether to place this here, or have a separate junction table for DeviceID and LineStatusID EDT tblEmpDeviceJunct (Employee Device Junction table, used to mate the device ID with the employee ID) EDJPKID (AN PKID) DeviceID (FK) EmpID (FK) EDT EUID (Entry User ID, Auto Inserted) I?m thinking I still need a device status and/or location table, and possibly its PK as an FK in the junction table above. I?m also thinking of these scenarios that I?ve witnessed (even though, I was told they don?t happen) A phone can be damaged and in need of repair A phone can be damaged and cant be repaired, thus will need to be deactivated A phone can be unassigned (thinking of adding an ?unassigned? employee to the employee table) A Sim Card can be swapped between phones (Good and non working to retain phone number for employee) A sim card can be removed from a phone (damaged phone laying around) A sim card can be added to a phone (New/used phone, removed card from non functional phone, or Extra sim card laying around) A phone (or phones) can be taken by a technician to their house to be worked on at home The following three situations can also occur, but they have to be done on the Verizon website, so I figure, the ETL process can handle this part) Swap phones between lines Remove phone from line Add phone to existing line Does this layout sound right? What would you do differently? The front end will be unbound and all changes are new insertions to the junction table, keeping an audit trail. Thanks, David McAfee -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From davidmcafee at gmail.com Fri Sep 25 12:53:50 2020 From: davidmcafee at gmail.com (David McAfee) Date: Fri, 25 Sep 2020 10:53:50 -0700 Subject: [AccessD] Fwd: FW: table design In-Reply-To: <01a101d69335$15727260$40575720$@verizon.net> References: <01a101d69335$15727260$40575720$@verizon.net> Message-ID: Thanks Jim, A "line" is a phone number. Our company currently has roughly 1500 cell phone numbers spread among 6 verizon accounts numbers. Originally I was advised to use the Phone number as a PK, and not wanting to go off on the whole natural vs surrogate PK holy war, I should them examples in their systems where phone numbers were missing or replaced with notes. Your second paragraph describing the 200 paid phone numbers (lines) is correct. I guess I don't really need to separate the accounts and lines (other than for normalization reasons). On Fri, Sep 25, 2020, 5:12 AM Jim Dettman via AccessD < accessd at databaseadvisors.com> wrote: > David, > > I think your design is right on. The only question is what does a > "Line" represent? If it?s a phone #, then it does not need to be a > separate table. > > If however it is a certain number of Lines that you can have against an > account, and the line may or may not currently be assigned a phone # and a > device, then it is a separate entity. i.e. I have account with Verizon, > pay for 200 lines. 190 of them are currently in use (have an assigned > phone number). Out of those 190, 185 currently have a device assigned to > them (phone + SIM card). > > So at the moment, you have: > > Accounts > Lines > Phone Numbers > > Phones > SIM Cards > > With a combination of a phone and a SIM card being a device. > > Jim. > > -----Original Message----- > From: AccessD On Behalf Of David McAfee > Sent: Thursday, September 24, 2020 9:30 PM > To: Microsoft Access Database Discussion List < > ACCESS-L at peach.ease.lsoft.com>; Access Developers discussion and problem > solving > Subject: [AccessD] Fwd: FW: table design > > I need some help with a table design ideas for a new project that I?m > starting, and was wondering if I could bounce my idea off of several of > you. :) > > > > Currently, the company that I work for is tracking our cell phones and who > they are assigned to by different departments*, each* in their own way and > reconciling the lists is a major pain. > > > Currently Accounting will complain because the location for the employee in > the IT departments list is incorrect, or the employee ID in the user fields > of the Verizon portal has the wrong Employee ID or Cost center. > > > > I want to make an app to track it in one place, using source data from each > location (that is managed by each of these locations), so the I.T. techs > pick an employee and device and assign one to the other and not have to > worry about the other data. > > > > HR has Employee data (ID, name, start /end dates?) > > Accounting has their cost center data by employee > > Verizon cell data should be the source for the phone data (phone Number, > IMEI (Device ID), ICCID (Sim number), model, manufacture..) > > Old / existing system to grab the current assignment of employee to cell. > > > Doing it this way, if something is incorrect in regards to the employee, HR > fixes it in their source. Accounting fixes any errors related to the cost > center / employee relation in their system. > > The basic idea is simple, store the PK for the employee and the matched > cell ID, and when reporting use the links to the other systems for their > info (name, cost center, office location?) > > > > Looking at the flat files that are downloaded from Verizon (VZw), we have > roughly 1500 cell phones spread across six VZw account numbers. > > > > I?m thinking of setting up something like this: > > > > tblVzAccounts (pulled from VZw download flat file and normalized during ETL > process) > > vzAccPK (AutoNum PK) > > AccNo (Txt) 955321232-00023 > > EDT (Entry Date Time, default value=Now()) > > > > tblPhoneNumbers (pulled from VZw download flat file and normalized during > ETL process) > > PNID (AutoNUm PK) > > PhoneNumber (text/CHAR(10) no dashes/characters stored, only numbers) > 2135551212 > > ContractStartDate (Date) > > ContractEndDate (Date) > > EDT > > > > tblIineStatus (pulled from VZw download flat file and normalized during ETL > process) > > LineStatusID (An PK) > > LineStatus (CHAR(1)- A, S, D) > > LineStatusDescription Active, Suspended, Deactivated) > > EDT > > > > tblPhones (pulled from VZw download flat file and normalized during ETL > process) > > PhID (AN PK) > > IMEI (Text) > > Mfg > > Model > > EDT > > > > tblSIMCard (pulled from VZw download flat file and normalized during ETL > process, but sims could also be swapped in the field) > > SimID (AN PKID) > > ICCID (Text) > > EDT > > > > tblDevice (Junction table to put all of the normalized PKs together, > keeping a history) > > DeviceID (AN PK) > > PNID (FK) > > PHID (FK) > > SimID (FK) > > LineStatusID (FK) ?Not sure whether to place this here, or have a separate > junction table for DeviceID and LineStatusID > > EDT > > > > tblEmpDeviceJunct (Employee Device Junction table, used to mate the device > ID with the employee ID) > > EDJPKID (AN PKID) > > DeviceID (FK) > > EmpID (FK) > > EDT > > EUID (Entry User ID, Auto Inserted) > > > > I?m thinking I still need a device status and/or location table, and > possibly its PK as an FK in the junction table above. > > I?m also thinking of these scenarios that I?ve witnessed (even though, I > was told they don?t happen) > > A phone can be damaged and in need of repair > > A phone can be damaged and cant be repaired, thus will need to be > deactivated > > A phone can be unassigned (thinking of adding an ?unassigned? employee to > the employee table) > > A Sim Card can be swapped between phones (Good and non working to retain > phone number for employee) > > A sim card can be removed from a phone (damaged phone laying around) > > A sim card can be added to a phone (New/used phone, removed card from non > functional phone, or Extra sim card laying around) > > A phone (or phones) can be taken by a technician to their house to be > worked on at home > > > > > The following three situations can also occur, but they have to be done on > the Verizon website, so I figure, the ETL process can handle this part) > > Swap phones between lines > > Remove phone from line > > Add phone to existing line > > > > Does this layout sound right? What would you do differently? > > The front end will be unbound and all changes are new insertions to the > junction table, keeping an audit trail. > > > > Thanks, > > > > David McAfee > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From davidmcafee at gmail.com Fri Sep 25 13:22:02 2020 From: davidmcafee at gmail.com (David McAfee) Date: Fri, 25 Sep 2020 11:22:02 -0700 Subject: [AccessD] Fwd: FW: table design In-Reply-To: References: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> Message-ID: James, you think like I do. Lol! These department heads hate when I come into planning meetings because I bring up all of these scenarios. I am always informed that the said scenarios will never happen then usually do right after hahaha. I'll answer the rest of your questions inline: You can have multiple phones on an account > Yes we do. 1500 phones on 6 accounts Have the SIM's moved between phones > I was told this doesn't happen but have found examples of it happening Have phones passed on between assignees either intended to be permanently, > for a short period, or just a day loaner. Not supposed to, but yes. This usually happens by their supervisor when someone goes on a leave of absence. Also - Phones assigned to 'posts', and to teams - as in manager says who > gets > the phone for weekend on-call > I have found this scenario as well. Some offices have dedicated "on call" phones that users take home. These are still assigned to the correct cost center for accounting purposes. I was thinking of creating an employee such as "On Call Location X" in my employee table to handle this purpose. I was also thinking of creating an "unassigned" employee to deal with that situation. This is one of the things that I've been flip flopping about. I'm not sure if I should make my inventory bins and employee assignments the same table. Phone 1 is with Joe, which gets dropped. It gets assigned to quarantine/repair Phone 2 gets assigned to Joe. Phone 1 is now repaired and is assigned to "unassigned" From davidmcafee at gmail.com Fri Sep 25 13:32:14 2020 From: davidmcafee at gmail.com (David McAfee) Date: Fri, 25 Sep 2020 11:32:14 -0700 Subject: [AccessD] Fwd: FW: table design In-Reply-To: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> References: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> Message-ID: Hmmmm, this is a different way of looking at it I keep thinking in a many to many situation, but there are a few one to many situations. At any point of time you can have: > > One phone number attached to one account. > 1500 phones tied to 6 accounts One phone number attached to one SIM. > At a time, yes, this is correct. But a sim can be pulled or moved to a different phone. More than one SIM in some phones > Theoretically yes, but we don't have a need. We are a local company, never travel out of our country. But I guess having a many to many table structure would handle that. Multiple phones per employee > Not supposed to. The only time that I have seen this so far is when the techs leave an old/damaged phone assigned to them. I plan to handle this on the front end of my app. From jamesbutton at blueyonder.co.uk Fri Sep 25 16:34:08 2020 From: jamesbutton at blueyonder.co.uk (James Button) Date: Fri, 25 Sep 2020 22:34:08 +0100 Subject: [AccessD] Fwd: FW: table design In-Reply-To: References: <5F6D5D1F.32503.D5CF2AD@stuart.lexacorp.com.pg> Message-ID: A possible approach to the accounting department 'needs' and 'requirements' And - get that agreed in writing - and minutes of at least one meeting Phone charges go to the department manager where the phone was assigned It is the managers responsibility to notify 'Accounts' of the assignment of the phone ( and other devices) and of the SIM from their department pool to individuals And to recover the device and SIM and return them to the appropriate acquisitions management department. Alternatively they will have to accept the assignment of costs as managed by 'Accounts' Yup I have been employees at government sites and on their projects as well as multinationals First response when a new task/project is mentioned - "Certainly - can you provide a cost centre budget for the feasibility and associated document preparation work, please. " Surprising how much work never gets any budget allocation for even that. Oh! and re phone 1 and 2 - Phone 1 gets lost - Or cannot be found Maybe the battery is totally flat so it doesn't ring, and location services don't work Or it's in the sewerage system ! Or in the foreign hire car. And I wasn't really intending to join in on the design - Just indicating possibilities for which I believe you should consider design allowances, or avoidance techniques. Especially if you get told you should answer with either a "yes2 or a "no" to questions As in If I 'Save' will the file be overwritten? (No mention of the app, or the working (team etc.) environment, or even the user's logged-in and access status and authority.) JimB -----Original Message----- From: AccessD On Behalf Of David McAfee Sent: Friday, September 25, 2020 7:22 PM To: Access Developers discussion and problem solving Cc: James Button Subject: Re: [AccessD] Fwd: FW: table design James, you think like I do. Lol! These department heads hate when I come into planning meetings because I bring up all of these scenarios. I am always informed that the said scenarios will never happen then usually do right after hahaha. I'll answer the rest of your questions inline: You can have multiple phones on an account > Yes we do. 1500 phones on 6 accounts Have the SIM's moved between phones > I was told this doesn't happen but have found examples of it happening Have phones passed on between assignees either intended to be permanently, > for a short period, or just a day loaner. Not supposed to, but yes. This usually happens by their supervisor when someone goes on a leave of absence. Also - Phones assigned to 'posts', and to teams - as in manager says who > gets > the phone for weekend on-call > I have found this scenario as well. Some offices have dedicated "on call" phones that users take home. These are still assigned to the correct cost center for accounting purposes. I was thinking of creating an employee such as "On Call Location X" in my employee table to handle this purpose. I was also thinking of creating an "unassigned" employee to deal with that situation. This is one of the things that I've been flip flopping about. I'm not sure if I should make my inventory bins and employee assignments the same table. Phone 1 is with Joe, which gets dropped. It gets assigned to quarantine/repair Phone 2 gets assigned to Joe. Phone 1 is now repaired and is assigned to "unassigned" -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From stuart at lexacorp.com.pg Fri Sep 25 18:17:51 2020 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Sat, 26 Sep 2020 09:17:51 +1000 Subject: [AccessD] Fwd: FW: table design In-Reply-To: Message-ID: <5F6E7A9F.9454.11B8307E@stuart.lexacorp.com.pg> You can handle that with a Null employee in an employee-phone link table and phone status of "in Repair", "in stock" etc. On 25 Sep 2020 at 11:22, David McAfee wrote: > > Phone 1 is with Joe, which gets dropped. > It gets assigned to quarantine/repair > Phone 2 gets assigned to Joe. > Phone 1 is now repaired and is assigned to "unassigned"