* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download CIS 338: Using Data Access Objects
Oracle Database wikipedia , lookup
Serializability wikipedia , lookup
Microsoft Access wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Functional Database Model wikipedia , lookup
Ingres (database) wikipedia , lookup
Concurrency control wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Versant Object Database wikipedia , lookup
Clusterpoint wikipedia , lookup
Relational model wikipedia , lookup
CIS 338: Using DAO (Data Access Objects) Dr. Ralph D. Westfall February, 2003 Data Access Objects VB objects that can be used in program code to work with databases can set properties in code can use methods " " can do more than with Data control e.g., input validation based on business rules handling data from automated sources Starting a DAO Project start a new VB standard EXE project select Project>References click Microsoft DAO 3.6 Object Library use 2.5/3.5 if will work with older databases Starting a DAO Project - 2 add code that will set up the database above Form_Load code (General): Dim db[Name] As Database in Form_Load code: Dim s[dbloc] As String s[dbloc] = App.Path & "\[file].mdb" 'or use actual physical path Set db[Name] = _ OpenDatabase(s[dbloc]) Recordset Type - Table gives direct access to table/all records can change sort order can see changes by other users above Form_Load code: Dim rs[name] As Recordset in Form_Load code: Set rs[name] = _ db[name].OpenRecordset("[table]", _ dbOpenTable) 'sample database Recordset Type - Dynaset fields/records from one table Set rs[name] = db[name].OpenRecordset_ ("[table]", dbOpenDynaset) can use SQL to get data from multiple tables Dim sSQL as String sSQl = "SELECT … FROM … WHERE …" Set rs[name] = db[name].OpenRecordset_ (sSQL, dbOpenDynaset) Recordset Type - Snapshot gets "read only" copies from one or more tables faster processing uses more memory can't change sort order Set rs[name] = db[name].OpenRecordset_ ("[table]", dbOpenSnapshot) 'table Set rs[name] = db[name].OpenRecordset_ (sSQL, dbOpenSnapshot) 'SQL string Recordset Syntax Set rs[name] = [object].OpenRecordset _ (source, type, options, lockedits) object: usually a database source (required): table, query in database, SQL string optional parameters: type: must be dbOpenTable for table source, can be dbOpenDynaset, etc. if from query or SQL options: dbReadOnly, dbForwardOnly, etc. Putting DAO Data in Form add controls (textboxes) to form write code to set property of control to field in database textboxes: set Text property txt[name].Text = _ rs[name].Fields("[name]") 'space prob txt[name].Text = rs[name]![name] could set label Caption similarly 'Notes Using Record Pointer record pointer identifies specific record positioning Move methods – moves pointer Find and Seek methods – goes to specific record Bookmark property – saves location AbsolutePosition – go to record # PercentPosition – go % to of total items Using Record Pointer - 2 Move MoveFirst, MoveNext, MovePrevious, MoveLast Move n e.g. Move 2, Move –35 (negative) rs[name].MoveFirst rs[name].Move 14 'Notes Using Record Pointer - 3 Find FindFirst, FindNext, FindPrevious, FindLast rs[name].FindFirst [criteria] criteria = string like in a SQL WHERE clause sCriteria = "State='CA'" rsCustomers.FindFirst sCriteria rs[name].NoMatch indicates if not found If rsCustomers.NoMatch = True 'not found Using Record Pointer - 4 Bookmark identifies a location (like a record number, but stored as string) sVariable = rs[name].Bookmark stores location of current record rs[name].Bookmark = sVariable moves to bookmarked record rs[name].PercentPosition = 10 Conditions in Strings need to get single quotes around strings in an SQL query or Find criteria sCriteria = "[field] = ' " & [string] & " ' " note ' " before string, " ' after sCriteria = "Title = '" & sTitle & "'" If sTitle = "Jaws" this evaluates to sCriteria = "Title like 'Jaws'" 'see p. 580 Conditions in Strings - 2 can store a single quote as a string variable to set up SQL strings as criteria SQ = "'" 'single quote in double quotes sCriteria = "Title = " & SQ & sTitle & SQ 'also mentioned on p. 580 Using Indexes indexes control sort order different indexes for different sorts indexes must be created before recordset can only use indexes with table recordsets, not dynasets or snapshots rs[name].Index = "[name of index]" 'existing index 'creating a new index (MSDN site) Filters work with dynasets, snapshots, not tables rs[name].Filter = [criterion] criterion = string like condition in a SQL WHERE clause, but without the word WHERE sCriterion = "Zip='90806'" rsStudents.Filter = sCriterion Sorting works with dynasets and snapshots, but not with tables rs[name].Sort = [field(s)] sorts according to "collating sequence" in ASCII: spaces first, followed by some quotation marks, numbers, capital letters, more quotation marks, then lower case rsCustomer.Sort = "City, Zip" Updating Database: AddNew adding a record rs[name].AddNew rs[name]![field1] = [value] rs[name]![field2] = [value] rs[name].Update Updating Database: Edit editing a record values replace data in current record rs[name].Edit rs[name]![field1] = [value] rs[name]![field2] = [value] rs[name].Update 'very similar to .Add in DAO Updating Database: Delete deleting a record current record is deleted can use record pointer positioning commands (like Find) to identify record to delete rs[name].Delete before other actions, need to be sure record is not on EOF or will not be on BOF Transaction Processing used when transaction (group of actions) all need to happen to database at same time all or none basis BeginTrans – starts transaction ws[name].BeginTrans 'ws = workspace object RollBack – removes all changes since BeginTrans CommitTrans – permanently saves (can't be rolled back afterwards)