From rockysmolin at bchacc.com Mon Feb 4 11:32:26 2019 From: rockysmolin at bchacc.com (Rocky Smolin) Date: Mon, 4 Feb 2019 09:32:26 -0800 Subject: [AccessD] 64 Bit Access and comdlg32.dll Message-ID: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com> Dear List: I have two apps which need to operate in both 32 and 64 bit Office environments. I have added PrtSafe to all of the declares and that part works. However, the Open File Dialog box does not. It calls the standard: Private Declare Function GetOpenFileName _ Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ (pOpenfilename As OPENFILENAME) As Long But the dialog box does not open. Control simply transfers to the next line of code after the Call to GetOpenFileName. Is there an open file dialog box method or function which will work in both 32 and 64 bit without having to use conditional compile? I'd like to stay away from that if possible. All of the other calls to libraries are working. MTIA Rocky Smolin Beach Access Software 760-683-5777 www.bchacc.com www.e-z-mrp.com Skype: rocky.smolin From stuart at lexacorp.com.pg Mon Feb 4 17:04:22 2019 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Tue, 05 Feb 2019 09:04:22 +1000 Subject: [AccessD] 64 Bit Access and comdlg32.dll In-Reply-To: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com> References: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com> Message-ID: <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg> You don't have Ptrsafe here: Private Declare Function GetOpenFileName _ Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ (pOpenfilename As OPENFILENAME) As Long Also, you need to modify OPENFILENAME by changing LONG to LONGPTR for hWndOwner and hInstance since they are handles. On 4 Feb 2019 at 9:32, Rocky Smolin wrote: > Dear List: > I have two apps which need to operate in both 32 and 64 bit Office > environments. > I have added PrtSafe to all of the declares and that part works. > However, the Open File Dialog box does not. It calls the standard: > Private Declare Function GetOpenFileName _ > > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > > (pOpenfilename As OPENFILENAME) As Long > But the dialog box does not open. Control simply transfers to the > next line of code after the Call to GetOpenFileName. From rockysmolin at bchacc.com Mon Feb 4 18:03:48 2019 From: rockysmolin at bchacc.com (Rocky Smolin) Date: Mon, 4 Feb 2019 16:03:48 -0800 Subject: [AccessD] 64 Bit Access and comdlg32.dll In-Reply-To: <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg> References: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com> <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg> Message-ID: <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> I had the PtrSafe in there (this was a snip from a web site), but LongPtr may do the trick. I forgot about that when trying to make an app that runs on both 32 and 64. Thanks. Hopefully that will do the job. Otherwise you'll be hearing from me for more ideas. :) R -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Stuart McLachlan Sent: Monday, February 04, 2019 3:04 PM To: Access Developers discussion and problem solving Subject: Re: [AccessD] 64 Bit Access and comdlg32.dll You don't have Ptrsafe here: Private Declare Function GetOpenFileName _ Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ (pOpenfilename As OPENFILENAME) As Long Also, you need to modify OPENFILENAME by changing LONG to LONGPTR for hWndOwner and hInstance since they are handles. On 4 Feb 2019 at 9:32, Rocky Smolin wrote: > Dear List: > I have two apps which need to operate in both 32 and 64 bit Office > environments. > I have added PrtSafe to all of the declares and that part works. > However, the Open File Dialog box does not. It calls the standard: > Private Declare Function GetOpenFileName _ > > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > > (pOpenfilename As OPENFILENAME) As Long > But the dialog box does not open. Control simply transfers to the > next line of code after the Call to GetOpenFileName. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From stuart at lexacorp.com.pg Mon Feb 4 21:20:12 2019 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Tue, 05 Feb 2019 13:20:12 +1000 Subject: [AccessD] 64 Bit Access and comdlg32.dll In-Reply-To: <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> References: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com>, <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg>, <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> Message-ID: <5C5900EC.23558.4DC4523@stuart.lexacorp.com.pg> Just remembered thi one as well: ------- Forwarded message follows ------- From: "Stuart McLachlan" Organization: Lexacorp To: Access Developers discussion and problem solving Date sent: Wed, 15 Aug 2018 00:43:27 +1000 Priority: normal Subject: Re: [AccessD] Need Open File Dialog Box Send reply to: Access Developers discussion and problem solving Just ran into anotheer wrinkle with PtrSafe and LongPtr two days ago.. One of the test team for an application I am working on has Office 2007 and it spat the dummy on the 32/64 GetFileName() code. To get it working on A2007 as well as both 32 and 64bit A2010 onwards, I had to use: #IF VBA7 Declare PTRSAFE Function ....... ......LONGPTR..... #ELSE Declare Function.... .....LONG...... #END IF On 4 Feb 2019 at 16:03, Rocky Smolin wrote: > I had the PtrSafe in there (this was a snip from a web site), but > LongPtr may do the trick. I forgot about that when trying to make an > app that runs on both 32 and 64. > > Thanks. Hopefully that will do the job. Otherwise you'll be hearing > from me for more ideas. :) > > R > > > -----Original Message----- > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf > Of Stuart McLachlan Sent: Monday, February 04, 2019 3:04 PM To: Access > Developers discussion and problem solving Subject: Re: [AccessD] 64 > Bit Access and comdlg32.dll > > You don't have Ptrsafe here: > > Private Declare Function GetOpenFileName _ > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > (pOpenfilename As OPENFILENAME) As Long > > Also, you need to modify OPENFILENAME by changing LONG to LONGPTR for > > hWndOwner and hInstance since they are handles. > > > On 4 Feb 2019 at 9:32, Rocky Smolin wrote: > > > Dear List: > > I have two apps which need to operate in both 32 and 64 bit Office > > environments. > > > I have added PrtSafe to all of the declares and that part works. > > > However, the Open File Dialog box does not. It calls the standard: > > > Private Declare Function GetOpenFileName _ > > > > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > > > > (pOpenfilename As OPENFILENAME) As Long > > > But the dialog box does not open. Control simply transfers to the > > next line of code after the Call to GetOpenFileName. > > -- > 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 stuart at lexacorp.com.pg Mon Feb 4 21:22:38 2019 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Tue, 05 Feb 2019 13:22:38 +1000 Subject: [AccessD] 64 Bit Access and comdlg32.dll In-Reply-To: <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> References: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com>, <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg>, <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> Message-ID: <5C59017E.13657.4DE7F07@stuart.lexacorp.com.pg> Then there was this: (It's deja vu all over again ) ------- Forwarded message follows ------- From: "Stuart McLachlan" Organization: Lexacorp To: Access Developers discussion and problem solving Date sent: Wed, 08 Aug 2018 09:18:44 +1000 Priority: normal Subject: Re: [AccessD] Need Open File Dialog Box Send reply to: Access Developers discussion and problem solving Also note the requrement for the B in .lStructSize = LenB(OFN) when building the OPENFILENAME variable before calling the function. On 4 Feb 2019 at 16:03, Rocky Smolin wrote: > I had the PtrSafe in there (this was a snip from a web site), but > LongPtr may do the trick. I forgot about that when trying to make an > app that runs on both 32 and 64. > > Thanks. Hopefully that will do the job. Otherwise you'll be hearing > from me for more ideas. :) > > R > > > -----Original Message----- > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf > Of Stuart McLachlan Sent: Monday, February 04, 2019 3:04 PM To: Access > Developers discussion and problem solving Subject: Re: [AccessD] 64 > Bit Access and comdlg32.dll > > You don't have Ptrsafe here: > > Private Declare Function GetOpenFileName _ > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > (pOpenfilename As OPENFILENAME) As Long > > Also, you need to modify OPENFILENAME by changing LONG to LONGPTR for > > hWndOwner and hInstance since they are handles. > > > On 4 Feb 2019 at 9:32, Rocky Smolin wrote: > > > Dear List: > > I have two apps which need to operate in both 32 and 64 bit Office > > environments. > > > I have added PrtSafe to all of the declares and that part works. > > > However, the Open File Dialog box does not. It calls the standard: > > > Private Declare Function GetOpenFileName _ > > > > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > > > > (pOpenfilename As OPENFILENAME) As Long > > > But the dialog box does not open. Control simply transfers to the > > next line of code after the Call to GetOpenFileName. > > -- > 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 stuart at lexacorp.com.pg Mon Feb 4 21:25:19 2019 From: stuart at lexacorp.com.pg (Stuart McLachlan) Date: Tue, 05 Feb 2019 13:25:19 +1000 Subject: [AccessD] 64 Bit Access and comdlg32.dll In-Reply-To: <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> References: <005a01d4bcaf$98c62c50$ca5284f0$@bchacc.com>, <5C58C4F6.1310.3F20C73@stuart.lexacorp.com.pg>, <002901d4bce6$451a04a0$cf4e0de0$@bchacc.com> Message-ID: <5C59021F.2531.4E0F4E2@stuart.lexacorp.com.pg> One more from the last time you asked: In OPENFILENAME: lpfnHook As LongPtr On 4 Feb 2019 at 16:03, Rocky Smolin wrote: > I had the PtrSafe in there (this was a snip from a web site), but > LongPtr may do the trick. I forgot about that when trying to make an > app that runs on both 32 and 64. > > Thanks. Hopefully that will do the job. Otherwise you'll be hearing > from me for more ideas. :) > > R > > > -----Original Message----- > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf > Of Stuart McLachlan Sent: Monday, February 04, 2019 3:04 PM To: Access > Developers discussion and problem solving Subject: Re: [AccessD] 64 > Bit Access and comdlg32.dll > > You don't have Ptrsafe here: > > Private Declare Function GetOpenFileName _ > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > (pOpenfilename As OPENFILENAME) As Long > > Also, you need to modify OPENFILENAME by changing LONG to LONGPTR for > > hWndOwner and hInstance since they are handles. > > > On 4 Feb 2019 at 9:32, Rocky Smolin wrote: > > > Dear List: > > I have two apps which need to operate in both 32 and 64 bit Office > > environments. > > > I have added PrtSafe to all of the declares and that part works. > > > However, the Open File Dialog box does not. It calls the standard: > > > Private Declare Function GetOpenFileName _ > > > > Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" _ > > > > (pOpenfilename As OPENFILENAME) As Long > > > But the dialog box does not open. Control simply transfers to the > > next line of code after the Call to GetOpenFileName. > > -- > 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 bensonforums at gmail.com Mon Feb 11 16:46:52 2019 From: bensonforums at gmail.com (Bill Benson) Date: Mon, 11 Feb 2019 17:46:52 -0500 Subject: [AccessD] ADO Execute RecordsAffected Message-ID: I am wading through 30,000 lines of code in an Access project in which the former developer did everything, or nearly everything, in ADO - despite the fact that both front end and back end are local. One thing that he does a lot of is pass a long argument to the Cmd.Execute method. He does this on action queries mainly. But he seldom if ever checks whether the variable is changed. So I went into debugging mode and the one thing I observe is that never does the long lngRecordsAffected variable get any higher value that 0. Is it supposed to show the number of "affected" records or not? Does it depend on cursor type? What is the purpose of the variable, thank you. From rockysmolin at bchacc.com Tue Feb 12 13:25:58 2019 From: rockysmolin at bchacc.com (Rocky Smolin) Date: Tue, 12 Feb 2019 11:25:58 -0800 Subject: [AccessD] 32/64 bit app; Getting closer Message-ID: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> Dear List: Got the open file dialog box working in both 32 and 64 bit environments.? However, the app compiles in 32 bit, and can create an accde, which is necessary as the app is being distributed to customers.? However, the app will not compile in 64 bit? Access. I?m not sure how the app is running in 64 bit at all ? my experience is that if there?s a compile error the app breaks on startup. The code for this function ? EnumFontNames ?is posted below. The error is:? Type Mismatch and it occurs in the line .lngType = lngType.? If I comment that line out the next compile error is: Type Mismatch Array or User Defined Type Expected.? And the line where the compile error occurs is .lngSizeCount = adhRemoveDups(malngSizes) where malngSizes is highlighted. If I comment out that line, the next line to produce a compile error says: Can?t assign to array, and the line where the compile error occurs is .alngSizes = malngSizes where .alngSizes is highlighted. I stopped commenting out lines at that point. I am not the primary programmer for this app any more but I?m trying to help them find a solution as the primary programmer is on a crash project to convert this whole app to a different platform.? So.? Does anyone see the problem, here?? I?m trying not to go to conditional compile if possible, but find code that will work in both environments. MTIA Rocky Smolin Beach Access Software 760-683-5777 www.bchacc.com www.e-z-mrp.com Skype: rocky.smolin Friend Function EnumFontNames(lf As LOGFONT, tm As TEXTMETRIC, _ ByVal lngType As LongPtr, lngParam As LongPtr) As LongPtr ??? ????' From Access 2000 Developer's Handbook, Volume I ??? ' by Getz, Litwin, and Gilbert. (Sybex) ??? ' Copyright 1999. All rights reserved. ??? ' ??? ' This function is declared as "friend" so that ??? ' if you move it to an ActiveX DLL, this function ??? ' won't be available outside the project. ??? On Error GoTo HandleErrors ? ?? ????Const RASTER_FONTTYPE = &H1 ??? ????If lngParam = 0 Then ??????? ' If passed a 1, we're only counting ??????? ' sizes, not doing anything with them. ??????? mintFontCount = mintFontCount + 1 ??? Else ??????? ' lngParam contains LOGPIXELSY value. ? ??????With mafiFonts(mintItems) ??????????? .lngType = lngType ??????????? .strFaceName = adhTrimNull(StrConv(lf.lfFaceName, vbUnicode)) ??????????? .fIsRasterFont = _ ???????????? ((.lngType And RASTER_FONTTYPE) = RASTER_FONTTYPE) ??????????? If .fIsRasterFont Then ??????????????? lf.lfCharSet = DEFAULT_CHARSET ??????????????? mlngSizeCount = 0 ??????????????? ' Get the number of fonts (passing ??????????????? ' 0 for the final parameter tells the ??????????????? ' callback that you only want to count ??????????????? ' sizes, not enumerate them. ??????????????? Call EnumFontFamilies(mhDC, .strFaceName, _ ???????????????? AddressOf EnumFontSizesProc, 0) ??????????????? ' Now mlngSizeCount should contain ??????????????? ' the number of items. ??????????????? Dim mlngSizeCountTemp As Integer ??????????????? mlngSizeCountTemp = mlngSizeCount ??????????????? ReDim malngSizes(0 To mlngSizeCount) ??????????????? mintFont = 0 ??????????????? ' Fill in the array of font sizes. The final ????? ??????????' parameter contains the twips/pixel ratio, ??????????????? ' and by virtue of being non-zero indicates ??????????????? ' to the callback procedure that you want ??????????????? ' to enumerate the sizes. ??????????????? Call EnumFontFamilies(mhDC, .strFaceName, _ ???????????????? AddressOf EnumFontSizesProc, lngParam) ??????????????? ' Sort the array of font sizes. ??????????????? Call adhQuickSort(malngSizes) ??????????????? ' Remove duplicate font sizes (and there ??????????????? ' will be duplicates) and store the number ??????????????? ' of different sizes in lngSizeCount. ??????????????? .lngSizeCount = adhRemoveDups(malngSizes) ??????????????? ????????????????' Return the array of sizes itself. ??????????????? .alngSizes = malngSizes ??????????? Else ??????????????? ' For TrueType fonts, return -1 ??????????????? ' for the number of sizes. ??????????????? .lngSizeCount = -1 ??????????? End If ??????? End With ??? End If ??? mintItems = mintItems + 1 ??? ExitHere: ??? ' Return some non-zero value. ??? EnumFontNames = True ??? Exit Function ??? HandleErrors: ??? Select Case Err.Number ??????? Case Else ??????????? ' Stop enumerating.? Something's wrong! ??????????? mintItems = False ??????????? Resume ExitHere ? ??End Select End Function ? From jimdettman at verizon.net Tue Feb 12 14:24:52 2019 From: jimdettman at verizon.net (Jim Dettman) Date: Tue, 12 Feb 2019 15:24:52 -0500 Subject: [AccessD] 32/64 bit app; Getting closer In-Reply-To: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> References: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> Message-ID: <05e101d4c311$02be8e10$083baa30$@verizon.net> Rocky, Some of the declares will need to be changed. For example, EnumFontFamilies is now: Declare PtrSafe Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As LongPtr, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As LongPtr, ByVal lParam As LongPtr) As Long and you don't automatically change all Long's into LongPtr. Note that the above declare still returns a Long. Here's a link to a doc that gives you all the new declares: http://www.microsoft.com/download/en/confirmation.aspx?displaylang=en&id=997 0 and this link is all the new 64 bit calls that were added: http://msdn.microsoft.com/en-us/library/aa383663(VS.85).aspx << So. Does anyone see the problem, here? >> It depends on what's in the structure mafiFonts. If it's still expecting a long, then under 64 bit you'd be trying to stuff 8 bytes into 4. << I?m trying not to go to conditional compile if possible, but find code that will work in both environments.>> That may not be possible....it depends on the Declare's and structures your using. If they are different between 32 and 64 bit, then you will have to use conditional complier constants to get a single code base. That's all covered here: https://docs.microsoft.com/en-us/office/client-developer/shared/compatibilit y-between-the-32-bit-and-64-bit-versions-of-office Jim. -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin Sent: Tuesday, February 12, 2019 2:26 PM To: 'Access Developers discussion and problem solving' Subject: Re: [AccessD] 32/64 bit app; Getting closer Dear List: Got the open file dialog box working in both 32 and 64 bit environments.? <> From jimdettman at verizon.net Tue Feb 12 14:28:36 2019 From: jimdettman at verizon.net (Jim Dettman) Date: Tue, 12 Feb 2019 15:28:36 -0500 Subject: [AccessD] 32/64 bit app; Getting closer In-Reply-To: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> References: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> Message-ID: <05f601d4c311$884bdb00$98e39100$@verizon.net> << I'm not sure how the app is running in 64 bit at all - my experience is that if there's a compile error the app breaks on startup.>> One other point to: If your MDE is targeting 64 bit Office, then you need to compile it in 64 bit Office. If you were distributing as a MDB, then you could let it compile on the fly and develop in 32 or 64 bit. But since a MDE is compiled with no source, then it must have the correct "bitness" for the version of Office that it is running under. So you'll need two different copies. Jim. -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin Sent: Tuesday, February 12, 2019 2:26 PM To: 'Access Developers discussion and problem solving' Subject: Re: [AccessD] 32/64 bit app; Getting closer Dear List: <> From bensonforums at gmail.com Tue Feb 12 17:10:08 2019 From: bensonforums at gmail.com (Bill Benson) Date: Tue, 12 Feb 2019 18:10:08 -0500 Subject: [AccessD] 32/64 bit app; Getting closer In-Reply-To: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> References: <017101d4c308$c88f0d80$59ad2880$@bchacc.com> Message-ID: Might get some more ideas to watch out for here: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff965871(v=office.14)#DataProgrammingWithAccess2010_using32vs64ace On Tue, Feb 12, 2019 at 2:26 PM Rocky Smolin wrote: > > Dear List: > > Got the open file dialog box working in both 32 and 64 bit environments. > However, the app compiles in 32 bit, and can create an accde, which is > necessary as the app is being distributed to customers. However, the app > will not compile in 64 bit Access. I?m not sure how the app is running in > 64 bit at all ? my experience is that if there?s a compile error the app > breaks on startup. > > The code for this function ? EnumFontNames is posted below. > > The error is: Type Mismatch and it occurs in the line .lngType = > lngType. > > If I comment that line out the next compile error is: Type Mismatch Array > or > User Defined Type Expected. And the line where the compile error occurs is > .lngSizeCount = adhRemoveDups(malngSizes) where malngSizes is highlighted. > > If I comment out that line, the next line to produce a compile error says: > Can?t assign to array, and the line where the compile error occurs is > .alngSizes = malngSizes where .alngSizes is highlighted. > > I stopped commenting out lines at that point. > > I am not the primary programmer for this app any more but I?m trying to > help > them find a solution as the primary programmer is on a crash project to > convert this whole app to a different platform. > > So. Does anyone see the problem, here? I?m trying not to go to > conditional > compile if possible, but find code that will work in both environments. > > MTIA > > Rocky Smolin > Beach Access Software > 760-683-5777 > www.bchacc.com > www.e-z-mrp.com > Skype: rocky.smolin > > Friend Function EnumFontNames(lf As LOGFONT, tm As TEXTMETRIC, _ > ByVal lngType As LongPtr, lngParam As LongPtr) As LongPtr > > ' From Access 2000 Developer's Handbook, Volume I > ' by Getz, Litwin, and Gilbert. (Sybex) > ' Copyright 1999. All rights reserved. > ' > ' This function is declared as "friend" so that > ' if you move it to an ActiveX DLL, this function > ' won't be available outside the project. > On Error GoTo HandleErrors > > Const RASTER_FONTTYPE = &H1 > > If lngParam = 0 Then > ' If passed a 1, we're only counting > ' sizes, not doing anything with them. > mintFontCount = mintFontCount + 1 > Else > ' lngParam contains LOGPIXELSY value. > With mafiFonts(mintItems) > .lngType = lngType > .strFaceName = adhTrimNull(StrConv(lf.lfFaceName, vbUnicode)) > .fIsRasterFont = _ > ((.lngType And RASTER_FONTTYPE) = RASTER_FONTTYPE) > If .fIsRasterFont Then > lf.lfCharSet = DEFAULT_CHARSET > mlngSizeCount = 0 > ' Get the number of fonts (passing > ' 0 for the final parameter tells the > ' callback that you only want to count > ' sizes, not enumerate them. > Call EnumFontFamilies(mhDC, .strFaceName, _ > AddressOf EnumFontSizesProc, 0) > ' Now mlngSizeCount should contain > ' the number of items. > Dim mlngSizeCountTemp As Integer > mlngSizeCountTemp = mlngSizeCount > ReDim malngSizes(0 To mlngSizeCount) > mintFont = 0 > ' Fill in the array of font sizes. The final > ' parameter contains the twips/pixel ratio, > ' and by virtue of being non-zero indicates > ' to the callback procedure that you want > ' to enumerate the sizes. > Call EnumFontFamilies(mhDC, .strFaceName, _ > AddressOf EnumFontSizesProc, lngParam) > ' Sort the array of font sizes. > Call adhQuickSort(malngSizes) > ' Remove duplicate font sizes (and there > ' will be duplicates) and store the number > ' of different sizes in lngSizeCount. > .lngSizeCount = adhRemoveDups(malngSizes) > > ' Return the array of sizes itself. > .alngSizes = malngSizes > Else > ' For TrueType fonts, return -1 > ' for the number of sizes. > .lngSizeCount = -1 > End If > End With > End If > mintItems = mintItems + 1 > > ExitHere: > ' Return some non-zero value. > EnumFontNames = True > Exit Function > > HandleErrors: > Select Case Err.Number > Case Else > ' Stop enumerating. Something's wrong! > mintItems = False > Resume ExitHere > End Select > End Function > > > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From bensonforums at gmail.com Fri Feb 15 18:13:32 2019 From: bensonforums at gmail.com (Bill Benson) Date: Fri, 15 Feb 2019 19:13:32 -0500 Subject: [AccessD] Raspbian in a VM In-Reply-To: <2e1fdaeb-6f21-dcc3-67f9-b82f18107f22@Gmail.com> References: <2e1fdaeb-6f21-dcc3-67f9-b82f18107f22@Gmail.com> Message-ID: This was an old thread but reading this article made me wonder what John Colby's recent experience has been, in contrast with this writer's findings. https://www.tomshardware.com/news/windows-10-raspberry-pi-hands-on,38629.html On Sat, Dec 30, 2017 at 1:14 PM John Colby wrote: > I installed Raspbian in a Virtual box on my Windows 10 desktop. Took > about an hour start to finish. > > > https://grantwinney.com/how-to-create-a-raspberry-pi-virtual-machine-vm-in-virtualbox/ > > I actually have several early Raspberry Pi machines, just need to find > them, set up a little workstation keyboard / mouse / monitor for them > etc. Kinda short on space where I am now. I had them running a couple > of years ago. Also a BeagleBone black and a couple of Odroids IIRC. > All in a box somewhere. > > -- > John W. Colby > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > From jwcolby at gmail.com Sat Feb 16 09:26:34 2019 From: jwcolby at gmail.com (John Colby) Date: Sat, 16 Feb 2019 10:26:34 -0500 Subject: [AccessD] Raspbian in a VM In-Reply-To: References: <2e1fdaeb-6f21-dcc3-67f9-b82f18107f22@Gmail.com> Message-ID: <9f217372-74a4-b062-3e10-ee55e9be394f@Gmail.com> I bought a handful of these little devices, including one of the original raspberry pi, which I can't find. I had high hopes for using one as a streaming media machine, the Pine64 RockPro64, for which I bought the 4 gb version.? It is a very powerful little device, hex core with 2 or 4 gb LPDDR4 ram. I wanted it to run Linux, which it does, but also a linux streaming media package which it does not.? Apparently (I will test this soon) it will in fact run Android TV.? That is what I will be testing - real soon now. I wanted to get something working "right now" so I wimped out and bought two of the NVidia Shield streaming devices (2017 version) - not the tablet devices of a confusingly similar name - which are obscenely powerful, widely acknowledged as the best, most powerful, most stable media streaming device in existence.? I concur.? They are plug and play, turn it on, hook it to wifi or a wired internet, then a google account and off you go.? They automatically update software very often.? Not sure what NVidia does in the updates but they occur often (every couple of weeks?).? It will do Kodi, plus Android TV with all that entails. I got them on Black Friday for $149 each with the gaming controller, a smoking deal.? I installed one at my Ex's house which they are now using extensively, including with a 4 tb USB external hard disk with ~400-500 movies on it (Kodi) as well as Netflix and Amazon Prime videos plus just a ton of other streaming thingies.? I installed the other at my church, hooked up to the second HDMI channel of an overhead projector, which we use for streaming YouTube videos for Open Mic Night.? I don't watch TV so I can't really dive deeply into the "streaming thingies". I can't say enough good things about the NVidia Shield.? "It Just Works", a quote they use for their new video cards, which sadly do just work but are waaaaay overpriced.? At $149 the shield was well worth the price. https://www.androidcentral.com/how-setup-kodi-nvidia-shield-android-tv https://shield.nvidia.com/blog/how-to-setup-plex-media-server On 2/15/2019 7:13 PM, Bill Benson wrote: > This was an old thread but reading this article made me wonder what John > Colby's recent experience has been, in contrast with this writer's findings. > > https://www.tomshardware.com/news/windows-10-raspberry-pi-hands-on,38629.html > > > On Sat, Dec 30, 2017 at 1:14 PM John Colby wrote: > >> I installed Raspbian in a Virtual box on my Windows 10 desktop. Took >> about an hour start to finish. >> >> >> https://grantwinney.com/how-to-create-a-raspberry-pi-virtual-machine-vm-in-virtualbox/ >> >> I actually have several early Raspberry Pi machines, just need to find >> them, set up a little workstation keyboard / mouse / monitor for them >> etc. Kinda short on space where I am now. I had them running a couple >> of years ago. Also a BeagleBone black and a couple of Odroids IIRC. >> All in a box somewhere. >> >> -- >> John W. Colby >> >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> -- John W. Colby From jwcolby at gmail.com Sat Feb 16 10:16:01 2019 From: jwcolby at gmail.com (John Colby) Date: Sat, 16 Feb 2019 11:16:01 -0500 Subject: [AccessD] Raspbian in a VM In-Reply-To: References: <2e1fdaeb-6f21-dcc3-67f9-b82f18107f22@Gmail.com> Message-ID: <59a027d8-2140-a01a-af69-ea92ac43f36d@Gmail.com> So in answer to the actual question, the article mentioned discusses running Windows 10 on the Raspberry Pi which is an exercise in silliness if you ask me.? It is NOT a machine with sufficient resources to run Windows.? A single gb of RAM is one issue.? The RPi has all usb and networking running through a 300mbit / sec usb controller on the SOC.? Theoretically it could boot off of an SSD running on the USB but get real. That said, it runs Linux quite well I am told.? I do know that the SBCs that I played with ran Linux very well.? The Pine64 RockPro64 SBC i purchased (AFAIK) doesn't even attempt a Windows port, but it does run Linux, I had it up and running.? I will be building an android boot for the Android TV which AFAICT does in fact run on this Pine64.? This is quite a powerful little board but it is way more than an RPi.? Hex core, 4 gb RAM, true gbit ethernet, PCIE X4.? A real live computer on a pretty small board. http://wiki.pine64.org/index.php/ROCKPro64_Main_Page On 2/15/2019 7:13 PM, Bill Benson wrote: > This was an old thread but reading this article made me wonder what John > Colby's recent experience has been, in contrast with this writer's findings. > > https://www.tomshardware.com/news/windows-10-raspberry-pi-hands-on,38629.html > > > On Sat, Dec 30, 2017 at 1:14 PM John Colby wrote: > >> I installed Raspbian in a Virtual box on my Windows 10 desktop. Took >> about an hour start to finish. >> >> >> https://grantwinney.com/how-to-create-a-raspberry-pi-virtual-machine-vm-in-virtualbox/ >> >> I actually have several early Raspberry Pi machines, just need to find >> them, set up a little workstation keyboard / mouse / monitor for them >> etc. Kinda short on space where I am now. I had them running a couple >> of years ago. Also a BeagleBone black and a couple of Odroids IIRC. >> All in a box somewhere. >> >> -- >> John W. Colby >> >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> -- John W. Colby From gustav at cactus.dk Wed Feb 20 02:47:59 2019 From: gustav at cactus.dk (Gustav Brock) Date: Wed, 20 Feb 2019 08:47:59 +0000 Subject: [AccessD] Mac users corrupt Access database (was: Memo field corruption) Message-ID: Hi Susan et al This caught my attention, for an obvious reason: MS Access keeps crashing on Network cause of Mac users https://answers.microsoft.com/en-us/msoffice/forum/all/ms-access-keeps-crashing-on-network-cause-of-mac/d9b622ea-eebe-4548-955c-2a923d11b815?tm=1550651726677 A bit surprising if Macs still should be able to cause this trouble. /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Gustav Brock Sendt: 26. januar 2019 18:30 Til: Access Developers discussion and problem solving Emne: Re: [AccessD] Memo field corruption Hi Susan Ah, ten years back! #3: Don't use memo fields This is probably too harsh - I haven't met, nor heard of, a single issue since that article. #4: Don't store picture files This, however, is still valid, except if pictures are few and small. But the issue is more related to bloating the backend rather than corrupting it. #6: Be careful with wireless networks (WiFi) This should be rephrased to: Never connect via wireless networks (WiFi) I've heard of numerous troubles when connecting via WiFi. It may work well (as stated) with R/O access, but how many backends are attached for R/O only? #8: Don't put Mac and Windows users on the same network This is not valid anymore, or should at least be turned into a general note, that devices that can cause a heavy load on the network should be isolated from the traffic between Access frontends and their backends. Impressive list of comments, by the way. /gustav ________________________________________ Fra: AccessD p? vegne af Susan Harkins Sendt: 26. januar 2019 17:55 Til: 'Access Developers discussion and problem solving' Emne: Re: [AccessD] Memo field corruption Gustav, a question from a reader prompted my question -- remember that article we wrote a long time ago? https://www.techrepublic.com/blog/10-things/10-ways-to-prevent-access-database-corruption/ It's so old -- I wonder if the memo issue hasn't improved? Susan H. That's what I have done - for pictures. I even used a second backend to hold this single table to not bloat the main backend. /gustav I think a lot of "expert" database developers suggest keeping the memo field in a separate table using a 1:1 or 1:n relationship -- just in case. Susan H. I always include memo fields in the same table. I haven't heard of what you described - have you seen that done somewhere? Dan When you include a memo field, do you include it in the table or do you relate to a second table that stores just the memo field? Susan H. From jimdettman at verizon.net Wed Feb 20 07:07:12 2019 From: jimdettman at verizon.net (Jim Dettman) Date: Wed, 20 Feb 2019 08:07:12 -0500 Subject: [AccessD] Mac users corrupt Access database (was: Memo field corruption) In-Reply-To: References: Message-ID: <07db01d4c91d$32028ed0$9607ac70$@verizon.net> It's not the fault of the Mac's, it's the network. The Mac's are just pushing the network and it would be the same problem if Windows machine did the same. The fault lies in the network. Jim. -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Wednesday, February 20, 2019 3:48 AM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Mac users corrupt Access database (was: Memo field corruption) Hi Susan et al This caught my attention, for an obvious reason: MS Access keeps crashing on Network cause of Mac users https://answers.microsoft.com/en-us/msoffice/forum/all/ms-access-keeps-crash ing-on-network-cause-of-mac/d9b622ea-eebe-4548-955c-2a923d11b815?tm=15506517 26677 A bit surprising if Macs still should be able to cause this trouble. /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Gustav Brock Sendt: 26. januar 2019 18:30 Til: Access Developers discussion and problem solving Emne: Re: [AccessD] Memo field corruption Hi Susan Ah, ten years back! #3: Don't use memo fields This is probably too harsh - I haven't met, nor heard of, a single issue since that article. #4: Don't store picture files This, however, is still valid, except if pictures are few and small. But the issue is more related to bloating the backend rather than corrupting it. #6: Be careful with wireless networks (WiFi) This should be rephrased to: Never connect via wireless networks (WiFi) I've heard of numerous troubles when connecting via WiFi. It may work well (as stated) with R/O access, but how many backends are attached for R/O only? #8: Don't put Mac and Windows users on the same network This is not valid anymore, or should at least be turned into a general note, that devices that can cause a heavy load on the network should be isolated from the traffic between Access frontends and their backends. Impressive list of comments, by the way. /gustav ________________________________________ Fra: AccessD p? vegne af Susan Harkins Sendt: 26. januar 2019 17:55 Til: 'Access Developers discussion and problem solving' Emne: Re: [AccessD] Memo field corruption Gustav, a question from a reader prompted my question -- remember that article we wrote a long time ago? https://www.techrepublic.com/blog/10-things/10-ways-to-prevent-access-databa se-corruption/ It's so old -- I wonder if the memo issue hasn't improved? Susan H. That's what I have done - for pictures. I even used a second backend to hold this single table to not bloat the main backend. /gustav I think a lot of "expert" database developers suggest keeping the memo field in a separate table using a 1:1 or 1:n relationship -- just in case. Susan H. I always include memo fields in the same table. I haven't heard of what you described - have you seen that done somewhere? Dan When you include a memo field, do you include it in the table or do you relate to a second table that stores just the memo field? Susan H. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From gustav at cactus.dk Wed Feb 20 07:30:34 2019 From: gustav at cactus.dk (Gustav Brock) Date: Wed, 20 Feb 2019 13:30:34 +0000 Subject: [AccessD] Mac users corrupt Access database (was: Memo field corruption) Message-ID: Hi Jim True. I've asked for clarification on this point. /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Jim Dettman Sendt: 20. februar 2019 14:07 Til: 'Access Developers discussion and problem solving' Emne: Re: [AccessD] Mac users corrupt Access database (was: Memo field corruption) It's not the fault of the Mac's, it's the network. The Mac's are just pushing the network and it would be the same problem if Windows machine did the same. The fault lies in the network. Jim. -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Wednesday, February 20, 2019 3:48 AM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Mac users corrupt Access database (was: Memo field corruption) Hi Susan et al This caught my attention, for an obvious reason: MS Access keeps crashing on Network cause of Mac users https://answers.microsoft.com/en-us/msoffice/forum/all/ms-access-keeps-crash ing-on-network-cause-of-mac/d9b622ea-eebe-4548-955c-2a923d11b815?tm=15506517 26677 A bit surprising if Macs still should be able to cause this trouble. /gustav -----Oprindelig meddelelse----- Fra: AccessD P? vegne af Gustav Brock Sendt: 26. januar 2019 18:30 Til: Access Developers discussion and problem solving Emne: Re: [AccessD] Memo field corruption Hi Susan Ah, ten years back! #3: Don't use memo fields This is probably too harsh - I haven't met, nor heard of, a single issue since that article. #4: Don't store picture files This, however, is still valid, except if pictures are few and small. But the issue is more related to bloating the backend rather than corrupting it. #6: Be careful with wireless networks (WiFi) This should be rephrased to: Never connect via wireless networks (WiFi) I've heard of numerous troubles when connecting via WiFi. It may work well (as stated) with R/O access, but how many backends are attached for R/O only? #8: Don't put Mac and Windows users on the same network This is not valid anymore, or should at least be turned into a general note, that devices that can cause a heavy load on the network should be isolated from the traffic between Access frontends and their backends. Impressive list of comments, by the way. /gustav ________________________________________ Fra: AccessD p? vegne af Susan Harkins Sendt: 26. januar 2019 17:55 Til: 'Access Developers discussion and problem solving' Emne: Re: [AccessD] Memo field corruption Gustav, a question from a reader prompted my question -- remember that article we wrote a long time ago? https://www.techrepublic.com/blog/10-things/10-ways-to-prevent-access-databa se-corruption/ It's so old -- I wonder if the memo issue hasn't improved? Susan H. That's what I have done - for pictures. I even used a second backend to hold this single table to not bloat the main backend. /gustav I think a lot of "expert" database developers suggest keeping the memo field in a separate table using a 1:1 or 1:n relationship -- just in case. Susan H. I always include memo fields in the same table. I haven't heard of what you described - have you seen that done somewhere? Dan When you include a memo field, do you include it in the table or do you relate to a second table that stores just the memo field? Susan H. From paul.hartland at googlemail.com Thu Feb 21 20:20:10 2019 From: paul.hartland at googlemail.com (Paul Hartland) Date: Fri, 22 Feb 2019 02:20:10 +0000 Subject: [AccessD] Cross Posted UK HMRC MTD Message-ID: To all, Has anyone been involved in coding for the UK making tax digital, if so can someone point me in the direction of code samples etc preferably in vb.net or c# as I just keep going round in circles and in frustration at last attempt just deleted everything to start again. Paul From bensonforums at gmail.com Tue Feb 26 00:32:30 2019 From: bensonforums at gmail.com (Bill Benson) Date: Tue, 26 Feb 2019 01:32:30 -0500 Subject: [AccessD] Fwd: Transpose out of memory error - 20,000 entries In-Reply-To: References: Message-ID: Automating Excel from MS Access in Office 15 with 8GB RAM. I was using copyfromrecordset from an Access DAO recordset to an excel range. I was doing some cleanup in the automated excel instance. I often assign a range to a variant, loop elements, change strings, then paste back to the range using transpose. But Access ran out of memory. Many of the 20,000 elements had thousands of characters. After scratching my head awhile I realized maybe I should close the recordset and set the variable to nothing after using CopyFromRecordset. That did the trick. Just thought I would pass this along. From jimdettman at verizon.net Tue Feb 26 07:33:37 2019 From: jimdettman at verizon.net (Jim Dettman) Date: Tue, 26 Feb 2019 08:33:37 -0500 Subject: [AccessD] Fwd: Transpose out of memory error - 20,000 entries In-Reply-To: References: Message-ID: <049501d4cdd7$e11cc9d0$a3565d70$@verizon.net> Couple things on that: 1. "Out of memory" can stem from running out of locks (MaxLocksPerFile setting). 2. It might have also been process address space. One of the reasons that Microsoft is now recommending 64 bit is because it allows for more process address space. The "out of memory" trend is growing with latter versions of Office because Office is getting bigger and bigger. When running in 32 bit mode, it's limited to 2GB of process space even on a 64 bit OS. A 32 bit process can access more memory if its "large address aware", which increases the limit to 3GB. Outlook and Excel are LAA (not sure about Word), but Access is not, so 32 bit Access is still stuck at 2GB. It's a current request on Access User Voice (https://access.uservoice.com/forums/319956-access-desktop-application/sugge stions/32586994-make-32-bit-access-large-address-aware-laa) to make 32 bit Access LAA. Jim. -----Original Message----- From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Bill Benson Sent: Tuesday, February 26, 2019 1:33 AM To: Microsoft Access Database Discussion List; Access Developers discussion and problem solving Subject: [AccessD] Fwd: Transpose out of memory error - 20,000 entries Automating Excel from MS Access in Office 15 with 8GB RAM. I was using copyfromrecordset from an Access DAO recordset to an excel range. I was doing some cleanup in the automated excel instance. I often assign a range to a variant, loop elements, change strings, then paste back to the range using transpose. But Access ran out of memory. Many of the 20,000 elements had thousands of characters. After scratching my head awhile I realized maybe I should close the recordset and set the variable to nothing after using CopyFromRecordset. That did the trick. Just thought I would pass this along. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com From bensonforums at gmail.com Tue Feb 26 08:09:16 2019 From: bensonforums at gmail.com (Bill Benson) Date: Tue, 26 Feb 2019 09:09:16 -0500 Subject: [AccessD] Fwd: Transpose out of memory error - 20,000 entries In-Reply-To: <049501d4cdd7$e11cc9d0$a3565d70$@verizon.net> References: <049501d4cdd7$e11cc9d0$a3565d70$@verizon.net> Message-ID: There were no access operations since copyfromrecordset statement which was pretty early in the routine. Just vba. The 20,000 cells being copied to (via their Value property) or the size of string data in the array seemed problematic for VBA but once I closed the recordset and set to nothing, it no longer was. In my 20 plus years developing MS and Excel integrations I maybe have seen this a handful of times, usually when doing a LOT of operations on a very large recordset. Recordsets usually dont use a lot of memory, else Access would choke when querying large tables. However CopyFromRecordset may force all data into memory and Access might hang onto that memory after the method is invoked. Setting to nothing seemed to free up memory is all I am reporting. > > 1. "Out of memory" can stem from running out of locks (MaxLocksPerFile > setting). > > 2. It might have also been process address space. > > One of the reasons that Microsoft is now recommending 64 bit is because > it > allows for more process address space. The "out of memory" trend is > growing with latter versions of Office because Office is getting bigger and > bigger. When running in 32 bit mode, it's limited to 2GB of process space > even on a 64 bit OS. A 32 bit process can access more memory if its > "large > address aware", which increases the limit to 3GB. Outlook and Excel are > LAA (not sure about Word), but Access is not, so 32 bit Access is still > stuck at 2GB. > > It's a current request on Access User Voice > ( > https://access.uservoice.com/forums/319956-access-desktop-application/sugge > stions/32586994-make-32-bit-access-large-address-aware-laa > ) > to make 32 bit > Access LAA. > > Jim. > > -----Original Message----- > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of > Bill Benson > Sent: Tuesday, February 26, 2019 1:33 AM > To: Microsoft Access Database Discussion List; Access Developers discussion > and problem solving > Subject: [AccessD] Fwd: Transpose out of memory error - 20,000 entries > > Automating Excel from MS Access in Office 15 with 8GB RAM. > > I was using copyfromrecordset from an Access DAO recordset to an excel > range. I was doing some cleanup in the automated excel instance. I often > assign a range to a variant, loop elements, change strings, then paste back > to the range using transpose. But Access ran out of memory. Many of the > 20,000 elements had thousands of characters. After scratching my head > awhile I realized maybe I should close the recordset and set the variable > to nothing after using CopyFromRecordset. That did the trick. > > Just thought I would pass this along. > -- > 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 >