MartyConnelly
martyconnelly at shaw.ca
Fri Jul 20 15:36:33 CDT 2007
If you just need a random 16 byte string how about creating a GUID Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Declare Function CoCreateGuid Lib "OLE32.DLL" _ (pGuid As GUID) As Long Private Declare Function StringFromGUID2 Lib "OLE32.DLL" (rguid As GUID, _ ByVal lpsz As String, cbMax As Long) As Long 'More GUID routines here ' http://www.trigeminal.com/code/guids.bas Sub testguid() Dim pudtGUID As GUID Dim pstrGUID As String Dim plngRet As Long pstrGUID = String(256, 0) Debug.Print CoCreateGuid(pudtGUID) plngRet = StringFromGUID2(pudtGUID, pstrGUID, Len(pstrGUID)) Debug.Print plngRet Debug.Print "GUID = " & Left(pstrGUID, plngRet) Debug.Print pstrGUID End Sub Mark A Matte wrote: >Thanks Everyone, > >I ended up using a loop to get my powers...before I was the power by 1 for >each record...now I added a new loop to get the actual number if you >calculated out to the nth power. I was in the quadrillions when I finished. > Thanks Again, > >Mark > > Power = Power - 1 > PowerNum = CDec(36) > For PNLoop = 1 To Power - 1 > PowerNum = CDec(PowerNum * CDec(36)) > Next > > > > >>From: "Gustav Brock" <Gustav at cactus.dk> >>Reply-To: Access Developers discussion and problem >>solving<accessd at databaseadvisors.com> >>To: <accessd at databaseadvisors.com> >>Subject: Re: [AccessD] Math in VBA >>Date: Thu, 19 Jul 2007 21:25:42 +0200 >> >>Hi Mark >> >>Chris is right. You have to keep the _numeric_ expressions within that of a >>Long if you wish to maintain accuracy. >> >>Thus: >>? CDec(36 ^10) >> 3656158440062980 >>? CDec(36 ^ 5) * CDec(36 ^ 5) >> 3656158440062976 >> >>because CDec(36 ^ 5) = 60466176. >> >>/gustav >> >> >> >>>>>cjeris at fas.harvard.edu 19-07-2007 20:37 >>> >>>>> >>>>> >>-----BEGIN PGP SIGNED MESSAGE----- >>Hash: SHA1 >> >>Mark A Matte wrote: >> >> >>>ttt = CDec(36 * 36 * 36) >>> >>> >>6^6 = 46656 overflows a 16-bit signed integer. Now we can all line up >>and kick someone in the head for leaving a 16-bit signed integer type in >>a program written after 1995. >> >>Try >>ttt = CDec(36) * CDec(36) * CDec(36) >> >>Also, be careful! >> >> >>>tt = CDec(36 ^ 10) >>> >>> >>That ^ is the _floating_point_ exponentiation operator! The result is >>not the integer 6^20; if you look at tt, you will see that it ends in a >>0, which no power of 6 does. What you get there is the decimal >>conversion of the floating-point exponentiation. >> >>peace, Chris Jeris >> >> -- Marty Connelly Victoria, B.C. Canada