ebook img

Computer Access 2007 Programming By Example With VBA, XML, And ASP ( Julitta Korol) Wordware Publishing 2008 PDF

2008·12 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Computer Access 2007 Programming By Example With VBA, XML, And ASP ( Julitta Korol) Wordware Publishing 2008

Access 2007 ™ Programming by Example with VBA, XML, and ASP Julitta Korol Wordware Publishing, Inc. LibraryofCongressCataloging-in-PublicationData Korol,Julitta. Access2007programmingbyexamplewithVBA,XML,andASP/byJulittaKorol. p. cm. Includesindex. ISBN-13:978-1-59822-042-1 ISBN-10:1-59822-042-X(pbk.) 1. MicrosoftAccess. 2. Databasemanagement. 3. MicrosoftVisualBasic forapplications 4. XML(Documentmarkuplanguage) 5. Activeserver pages I. Title. QA76.9.D3K657332007 005.75'65--dc22 2007044561 CIP ©2008,WordwarePublishing,Inc. AllRightsReserved 1100SummitAvenue,Suite102 Plano,Texas75074 Nopartofthisbookmaybereproducedinanyformorby anymeanswithoutpermissioninwritingfrom WordwarePublishing,Inc. PrintedintheUnitedStatesofAmerica ISBN-13:978-1-59822-042-1 ISBN-10:1-59822-042-X 10 9 8 7 6 5 4 3 2 1 0711 MicrosoftisaregisteredtrademarkandAccessisatrademarkofMicrosoftCorporationintheUnitedStatesand/orother countries. Otherbrandnamesandproductnamesmentionedinthisbookaretrademarksorservicemarksoftheirrespective companies.Anyomissionormisuse(ofanykind)ofservicemarksortrademarksshouldnotberegardedasintenttoinfringeon thepropertyofothers.Thepublisherrecognizesandrespectsallmarksusedbycompanies,manufacturers,anddevelopersasa meanstodistinguishtheirproducts. Thisbookissoldasis,withoutwarrantyofanykind,eitherexpressorimplied,respectingthecontentsofthisbookandany disksorprogramsthatmayaccompanyit,includingbutnotlimitedtoimpliedwarrantiesforthebook’squality,performance, merchantability,orfitnessforanyparticularpurpose.NeitherWordwarePublishing,Inc.noritsdealersordistributorsshallbe liabletothepurchaseroranyotherpersonorentitywithrespecttoanyliability,loss,ordamagecausedorallegedtohavebeen causeddirectlyorindirectlybythisbook. AllinquiriesforvolumepurchasesofthisbookshouldbeaddressedtoWordwarePublishing,Inc., attheaboveaddress.Telephoneinquiriesmaybemadebycalling: (972)423-0090 Contents Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Part I — Introduction to Access 2007 VBA Programming Chapter1 WritingProceduresinModules . . . . . . . . . . . . . . . . . . . . . 3 ProcedureTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ModuleTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 StandardModules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 WritingProceduresinaStandardModule . . . . . . . . . . . . . . . . . . . . 6 ExecutingYourProceduresandFunctions. . . . . . . . . . . . . . . . . . . . 9 ClassModules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Events,EventProperties,andEventProcedures . . . . . . . . . . . . . . . . . . . . . 13 WhyUseEvents? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 WalkingThroughanEventProcedure. . . . . . . . . . . . . . . . . . . . . . . . 14 CompilingYourProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 PlacingaDatabaseinaTrustedLocation . . . . . . . . . . . . . . . . . . . . . . 19 ChapterSummary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Chapter2 TheVisualBasicEditor(VBE). . . . . . . . . . . . . . . . . . . . . . 22 UnderstandingtheProjectExplorerWindow . . . . . . . . . . . . . . . . . . . . . . . 22 UnderstandingthePropertiesWindow . . . . . . . . . . . . . . . . . . . . . . . . . . 23 UnderstandingtheCodeWindow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 OtherWindowsintheVBE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 On-the-FlySyntaxandProgrammingAssistance . . . . . . . . . . . . . . . . . . . . . 28 ListProperties/Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ParameterInfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ListConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 QuickInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 CompleteWord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Indent/Outdent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 CommentBlock/UncommentBlock. . . . . . . . . . . . . . . . . . . . . . . . . 32 UsingtheObjectBrowser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 UsingtheVBAObjectLibrary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 UsingtheImmediateWindow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ChapterSummary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Chapter3 Variables,DataTypes,andConstants . . . . . . . . . . . . . . . . . 40 WhatIsaVariable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 WhatAreDataTypes? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 CreatingVariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 DeclaringVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 iii iv | Contents SpecifyingtheDataTypeofaVariable . . . . . . . . . . . . . . . . . . . . . . . . . . 46 UsingTypeDeclarationCharacters. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 AssigningValuestoVariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 ForcingDeclarationofVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 UnderstandingtheScopeandLifetimeofVariables. . . . . . . . . . . . . . . . . . . . 52 Procedure-Level(Local)Variables. . . . . . . . . . . . . . . . . . . . . . . . . . 52 Module-LevelVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Public(Global)Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 UnderstandingandUsingTemporaryVariables. . . . . . . . . . . . . . . . . . . . . . 56 CreatingaTemporaryVariablewithaTempVarsCollectionObject. . . . . . . . . 57 RetrievingNamesandValuesofTempVarObjects . . . . . . . . . . . . . . . . . 57 UsingTemporaryGlobalVariablesinExpressions. . . . . . . . . . . . . . . . . . 58 RemovingaTemporaryVariablefromaTempVarsCollectionObject. . . . . . . . 58 UnderstandingandUsingStaticVariables. . . . . . . . . . . . . . . . . . . . . . . . . 59 UnderstandingandUsingObjectVariables . . . . . . . . . . . . . . . . . . . . . . . . 61 FindingaVariableDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 WhatTypeIsThisVariable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 UsingConstantsinVBAProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 IntrinsicConstants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 GroupingConstantswiththeEnumType. . . . . . . . . . . . . . . . . . . . . . . . . 67 ChapterSummary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Chapter4 PassingArgumentstoProceduresandFunctions . . . . . . . . . . . . 70 WritingaFunctionProcedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 SpecifyingtheDataTypeforaFunction’sResult. . . . . . . . . . . . . . . . . . . . . 72 PassingArgumentsbyReferenceandbyValue. . . . . . . . . . . . . . . . . . . . . . 74 UsingOptionalArguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 UsingtheIsMissingFunction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Built-inFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 UsingtheMsgBoxFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 ReturningValuesfromtheMsgBoxFunction . . . . . . . . . . . . . . . . . . . . 84 UsingtheInputBoxFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 ConvertingDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 UsingMasterProceduresandSubprocedures. . . . . . . . . . . . . . . . . . . . . . . 89 ChapterSummary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Chapter5 DecisionMakingwithVBA. . . . . . . . . . . . . . . . . . . . . . . 94 If…ThenStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Multi-LineIf…ThenStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 DecisionsBasedonMoreThanOneCondition. . . . . . . . . . . . . . . . . . . . . . 98 If…Then…ElseStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 If…Then…ElseIfStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 NestedIf…ThenStatements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 SelectCaseStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 UsingIswiththeCaseClause . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 SpecifyingaRangeofValuesinaCaseClause. . . . . . . . . . . . . . . . . . . 108 SpecifyingMultipleExpressionsinaCaseClause . . . . . . . . . . . . . . . . . 110 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Chapter6 RepeatingActionsinVBA. . . . . . . . . . . . . . . . . . . . . . . 112 UsingtheDo…WhileStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 AnotherApproachtotheDo…WhileStatement. . . . . . . . . . . . . . . . . . . . . 114 Contents | v UsingtheDo…UntilStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 AnotherApproachtotheDo…UntilStatement . . . . . . . . . . . . . . . . . . . . . 116 For…NextStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 ForEach…NextStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 ExitingLoopsEarly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 NestedLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Chapter7 WorkingwithArrays . . . . . . . . . . . . . . . . . . . . . . . . . 124 DeclaringArrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 ArrayUpperandLowerBounds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 UsingArraysinVBAProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 ArraysandLoopingStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 UsingaTwo-DimensionalArray. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 StaticandDynamicArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 ArrayFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 TheArrayFunction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 TheIsArrayFunction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 TheEraseFunction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 TheLBoundandUBoundFunctions . . . . . . . . . . . . . . . . . . . . . . . . 137 ErrorsinArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 ParameterArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Chapter8 CustomCollectionsandClassModules. . . . . . . . . . . . . . . . 142 Terminology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 WorkingwithCollections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 DeclaringaCustomCollection. . . . . . . . . . . . . . . . . . . . . . . . . . . 144 AddingObjectstoaCustomCollection . . . . . . . . . . . . . . . . . . . . . . 144 RemovingObjectsfromaCustomCollection . . . . . . . . . . . . . . . . . . . 146 CreatingCustomObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 CreatingaClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 VariableDeclarations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 DefiningthePropertiesfortheClass . . . . . . . . . . . . . . . . . . . . . . . . 148 CreatingthePropertyGetProcedures. . . . . . . . . . . . . . . . . . . . . 150 CreatingthePropertyLetProcedures . . . . . . . . . . . . . . . . . . . . . 150 CreatingtheClassMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 CreatinganInstanceofaClass. . . . . . . . . . . . . . . . . . . . . . . . . . . 153 EventProceduresintheClassModule . . . . . . . . . . . . . . . . . . . . . . . 153 CreatingtheUserInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 RunningtheCustomApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 WatchingtheExecutionofYourVBAProcedures. . . . . . . . . . . . . . . . . . . . 164 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Chapter9 DebuggingVBAProceduresandHandlingErrors . . . . . . . . . . . 167 TestingVBAProcedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 StoppingaProcedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 UsingBreakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 RemovingBreakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 UsingtheImmediateWindowinBreakMode . . . . . . . . . . . . . . . . . . . 174 UsingtheStopStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 AddingWatchExpressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 vi | Contents RemovingWatchExpressions. . . . . . . . . . . . . . . . . . . . . . . . . 179 UsingQuickWatch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 UsingtheLocalsWindowandtheCallStackDialogBox. . . . . . . . . . . . . . . . 181 SteppingThroughVBAProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 SteppingOveraProcedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 SteppingOutofaProcedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 RunningaProceduretoCursor. . . . . . . . . . . . . . . . . . . . . . . . . . . 185 SettingtheNextStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 ShowingtheNextStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 StoppingandResettingVBAProcedures . . . . . . . . . . . . . . . . . . . . . . . . 186 UnderstandingandUsingConditionalCompilation . . . . . . . . . . . . . . . . . . . 186 NavigatingwithBookmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 TrappingErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 GeneratingErrorstoTestErrorHandling . . . . . . . . . . . . . . . . . . . . . . . . 193 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Part II — Access VBA Programming with DAO and ADO Chapter10 DataAccessTechnologiesinMicrosoftAccess . . . . . . . . . . . . 197 UnderstandingDatabaseEngines:Jet/ACE . . . . . . . . . . . . . . . . . . . . . . . 197 UnderstandingAccessVersionsandFileFormats . . . . . . . . . . . . . . . . . . . . 198 UnderstandingLibraryReferences. . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 OverviewofObjectLibrariesinMicrosoftAccess . . . . . . . . . . . . . . . . . . . 203 TheVisualBasicforApplicationsObjectLibrary(VBA) . . . . . . . . . . . . . 203 TheMicrosoftAccess12.0ObjectLibrary. . . . . . . . . . . . . . . . . . . . . 203 TheMicrosoftOffice12.0AccessDatabaseEngineObjectLibrary . . . . . . . . 203 TheMicrosoftAccessDAO3.6ObjectLibrary . . . . . . . . . . . . . . . . . . 204 TheMicrosoftActiveXDataObjects2.8Library(ADO) . . . . . . . . . . . . . 205 CreatingaReferencetotheADOLibrary . . . . . . . . . . . . . . . . . . . . . . . . 206 UnderstandingConnectionStrings. . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 UsingODBCConnectionStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 CreatingandUsingODBCDSNConnections . . . . . . . . . . . . . . . . . . . 209 CreatingandUsingDSN-lessODBCConnections. . . . . . . . . . . . . . . . . 213 UsingOLEDBConnectionStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 ConnectionStringviaaDataLinkFile . . . . . . . . . . . . . . . . . . . . . . . . . 215 OpeningMicrosoftAccessDatabases . . . . . . . . . . . . . . . . . . . . . . . . . . 218 OpeningaMicrosoftJetDatabaseinRead/WriteModewithDAO . . . . . . . . 218 OpeningaMicrosoftJetDatabaseinRead/WriteModewithADO . . . . . . . . 220 OpeningaMicrosoftAccessDatabaseinRead-OnlyModewithDAO . . . . . . 223 OpeningaaMicrosoftJetDatabaseinRead-OnlyModewithADO. . . . . . . . 224 OpeningaMicrosoftJetDatabaseSecuredwithaPassword. . . . . . . . . . . . 224 OpeningaMicrosoftJetDatabasewithUser-LevelSecurity. . . . . . . . . . . . 228 ConnectingtotheCurrentAccessDatabase . . . . . . . . . . . . . . . . . . . . . . . 230 OpeningOtherDatabases,Spreadsheets,andTextFilesfromAccess2007 . . . . . . . 232 ConnectingtoanSQLServerDatabase. . . . . . . . . . . . . . . . . . . . . . . 232 OpeningaMicrosoftExcelSpreadsheet . . . . . . . . . . . . . . . . . . . . . . 233 OpeningaTextFileUsingADO . . . . . . . . . . . . . . . . . . . . . . . . . . 237 CreatingaNewAccessDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 CreatingaDatabasewithDAO. . . . . . . . . . . . . . . . . . . . . . . . . . . 239 CreatingaDatabasewithADO. . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Contents | vii CopyingaDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 CopyingaDatabasewithDAO. . . . . . . . . . . . . . . . . . . . . . . . . . . 241 CopyingaDatabasewithFileSystemObject . . . . . . . . . . . . . . . . . . . . 242 DatabaseErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 CompactingaDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Chapter11 CreatingandAccessingDatabaseTablesandFields . . . . . . . . . 249 CreatingaMicrosoftAccessTableandSettingFieldProperties(DAOMethod) . . . . 249 CreatingaMicrosoftAccessTableandSettingFieldProperties(ADOMethod) . . . . 254 CopyingaTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 DeletingaDatabaseTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 AddingNewFieldstoanExistingTable. . . . . . . . . . . . . . . . . . . . . . . . . 260 RemovingaFieldfromaTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 RetrievingTableProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 RetrievingFieldProperties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 LinkingaMicrosoftAccessTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 LinkingadBASETable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 LinkingaMicrosoftExcelSpreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . 268 ListingDatabaseTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 ListingTablesandFields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 ListingDataTypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 ChangingtheAutoNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Chapter12 SettingUpPrimaryKeys,Indexes,andTableRelationships . . . . . . 275 CreatingaPrimaryKeyIndex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 CreatingaSingle-FieldIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 AddingaMultiple-FieldIndextoaTable . . . . . . . . . . . . . . . . . . . . . . . . 280 ListingIndexesinaTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 DeletingTableIndexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 CreatingTableRelationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Chapter13 FindingandReadingRecords . . . . . . . . . . . . . . . . . . . . 287 IntroductiontoDAORecordsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 OpeningVariousTypesofRecordsets . . . . . . . . . . . . . . . . . . . . . . . 288 OpeningaSnapshotandCountingRecords. . . . . . . . . . . . . . . . . . . . . 290 RetrievingtheContentsofaSpecificFieldinaTable . . . . . . . . . . . . . . . 292 MovingbetweenRecordsinaTable . . . . . . . . . . . . . . . . . . . . . . . . 292 FindingRecordsinaTable-TypeRecordset . . . . . . . . . . . . . . . . . . . . 293 FindingRecordsinDynasetsorSnapshots. . . . . . . . . . . . . . . . . . . . . 295 FindingthenthRecordinaSnapshot. . . . . . . . . . . . . . . . . . . . . . . . 297 IntroductiontoADORecordsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 CursorTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 LockTypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 CursorLocation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 TheOptionsParameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 OpeningaRecordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 OpeningaRecordsetBasedonaTableorQuery . . . . . . . . . . . . . . . 306 OpeningaRecordsetBasedonanSQLStatement . . . . . . . . . . . . . . 310 OpeningaRecordsetBasedonCriteria . . . . . . . . . . . . . . . . . . . . 311 viii | Contents OpeningaRecordsetDirectly. . . . . . . . . . . . . . . . . . . . . . . . . 312 MovingAroundinaRecordset. . . . . . . . . . . . . . . . . . . . . . . . . . . 312 FindingtheRecordPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 ReadingDatafromaField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 ReturningaRecordsetasaString. . . . . . . . . . . . . . . . . . . . . . . . . . 315 FindingRecordsUsingtheFindMethod. . . . . . . . . . . . . . . . . . . . . . 317 FindingRecordsUsingtheSeekMethod. . . . . . . . . . . . . . . . . . . . . . 318 FindingaRecordBasedonMultipleConditions . . . . . . . . . . . . . . . . . . 320 UsingBookmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 UsingBookmarkstoFilteraRecordset. . . . . . . . . . . . . . . . . . . . . . . 323 UsingtheGetRowsMethodtoFilltheRecordset . . . . . . . . . . . . . . . . . 324 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Chapter14 WorkingwithRecords. . . . . . . . . . . . . . . . . . . . . . . . 326 AddingaNewRecordwithDAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 AddingaNewRecordwithADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 ModifyingaRecordwithDAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 ModifyingaRecordwithADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 EditingMultipleRecordswithADO. . . . . . . . . . . . . . . . . . . . . . . . . . . 332 DeletingaRecordwithDAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 DeletingaRecordwithADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 CopyingRecordstoanExcelSpreadsheet. . . . . . . . . . . . . . . . . . . . . . . . 336 CopyingRecordstoaWordDocument . . . . . . . . . . . . . . . . . . . . . . . . . 339 CopyingRecordstoaTextFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 FilteringRecordsUsingtheSQLWHEREClause. . . . . . . . . . . . . . . . . . . . 344 FilteringRecordsUsingtheFilterProperty . . . . . . . . . . . . . . . . . . . . . . . 346 SortingRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Chapter15 CreatingandRunningQuerieswithDAO/ADO . . . . . . . . . . . 350 CreatingaSelectQueryManually. . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 CreatingaSelectQuerywithDAO . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 CreatingaSelectQuerywithADO . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 ExecutinganExistingSelectQuerywithADO . . . . . . . . . . . . . . . . . . . . . 358 ModifyinganExistingQuerywithADO . . . . . . . . . . . . . . . . . . . . . . . . 361 CreatingandRunningaParameterQuerywithDAO . . . . . . . . . . . . . . . . . . 362 CreatingandRunningaParameterQuerywithADO . . . . . . . . . . . . . . . . . . 364 CreatingandRunningaMake-TableQuerywithDAO . . . . . . . . . . . . . . . . . 367 CreatingandRunninganUpdateQuerywithDAO . . . . . . . . . . . . . . . . . . . 369 ExecutinganUpdateQuerywithADO . . . . . . . . . . . . . . . . . . . . . . . . . 370 RunninganAppendQuerywithDAO/ADO. . . . . . . . . . . . . . . . . . . . . . . 372 RunningaDeleteQuerywithDAO . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 CreatingandRunningaPass-ThroughQuerywithDAO . . . . . . . . . . . . . . . . 376 CreatingandExecutingaPass-ThroughQuerywithADO . . . . . . . . . . . . . . . 378 PerformingOtherOperationswithQueries . . . . . . . . . . . . . . . . . . . . . . . 382 RetrievingQueryPropertieswithDAO. . . . . . . . . . . . . . . . . . . . . . . 382 ListingAllQueriesinaDatabasewithDAO/ADO. . . . . . . . . . . . . . . . . 383 DeletingaQueryfromaDatabasewithDAO/ADO. . . . . . . . . . . . . . . . . . . 384 DeterminingifaQueryIsUpdatable . . . . . . . . . . . . . . . . . . . . . . . . . . 386 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Contents | ix Chapter16 UsingAdvancedADO/DAOFeatures . . . . . . . . . . . . . . . . 389 FabricatingaRecordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 DisconnectedRecordsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 SavingaRecordsettoDisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 CloningaRecordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 IntroductiontoDataShaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 WritingaSimpleSHAPEStatement . . . . . . . . . . . . . . . . . . . . . . . . 413 WorkingwithDataShaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 WritingaComplexSHAPEStatement . . . . . . . . . . . . . . . . . . . . . . . 418 ShapedRecordsetswithMultipleChildren . . . . . . . . . . . . . . . . . . 418 ShapedRecordsetswithGrandchildren . . . . . . . . . . . . . . . . . . . . 421 TransactionProcessing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 CreatingaTransactionwithADO . . . . . . . . . . . . . . . . . . . . . . . . . 431 CreatingaTransactionwithDAO . . . . . . . . . . . . . . . . . . . . . . . . . 433 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Chapter17 ImplementingDatabaseSecurity . . . . . . . . . . . . . . . . . . 437 TwoTypesofSecurityinMicrosoftAccess . . . . . . . . . . . . . . . . . . . . . . . 437 Share-LevelSecurity(inAccessACCDBandMDBFileFormats) . . . . . . . . 438 User-LevelSecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 UnderstandingWorkgroupInformationFiles . . . . . . . . . . . . . . . . . . . . . . 438 CreatingandJoiningWorkgroupInformationFiles. . . . . . . . . . . . . . . . . 441 CreatingandManagingGroupandUserAccounts . . . . . . . . . . . . . . . . . . . 449 DeletingUserandGroupAccounts. . . . . . . . . . . . . . . . . . . . . . . . . 452 ListingUserandGroupAccounts . . . . . . . . . . . . . . . . . . . . . . . . . 453 ListingUsersinGroups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 SettingandRetrievingUserandGroupPermissions. . . . . . . . . . . . . . . . . . . 456 DeterminingtheObjectOwner. . . . . . . . . . . . . . . . . . . . . . . . . . . 456 SettingUserPermissionsforanObject. . . . . . . . . . . . . . . . . . . . . . . 458 SettingUserPermissionsforaDatabase . . . . . . . . . . . . . . . . . . . . . . 461 SettingUserPermissionsforContainers . . . . . . . . . . . . . . . . . . . . . . 462 CheckingPermissionsforObjects . . . . . . . . . . . . . . . . . . . . . . . . . 464 SettingaDatabasePasswordUsingtheCompactDatabaseMethod . . . . . . . . 466 SettingaDatabasePasswordUsingtheNewPasswordMethod . . . . . . . . . . 468 ChangingaUserPassword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 EncryptingaSecuredMDBDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . 471 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 Chapter18 DatabaseReplication . . . . . . . . . . . . . . . . . . . . . . . . 474 CreatingaDesignMaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 CreatingaFullReplica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 CreatingaPartialReplica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 ReplicatingObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 KeepingObjectsLocal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 SynchronizingReplicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 RetrievingReplicaProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 SynchronizationConflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.