CIS 338: Using Queries in Access as a RecordSource Dr. Ralph D. Westfall May, 2011.

25
CIS 338: Using Queries in Access as a RecordSource Dr. Ralph D. Westfall May, 2011

Transcript of CIS 338: Using Queries in Access as a RecordSource Dr. Ralph D. Westfall May, 2011.

CIS 338: Using Queries in Access as a RecordSource

Dr. Ralph D. WestfallMay, 2011

What Is a Query

SQL code in a database that gets specific data based on selected fields (columns) selected records (rows) selected (one or more) table(s)

in contrast to getting all data from one table

Initial Database Set-Up

download dbquery2000.mdb file for demonstration, NOT for this

quarter's project

start Microsoft Access open dbquery2000.mdb file if prompted, follow directions to convert

database to latest version of Access might have to convert back later

Creating Queries for Totals

click Create tabclick Query Designselect Payments table, click Add Close the Show Table window

Creating Queries for Totals - 2

double click BldgNo, AcctNo and Payment from Payments table when double clicked, item should go into

query table (or can drag & drop)

click totals button (Greek letter sigma) on toolbar at top of screen (view effect) click 3rd (Total) line in Payment column and select Sum from drop down list

Creating Queries for Totals - 3

click 3rd (Total) line in AcctNo column and select Where from drop down list put 5401 in Criteria (6th row) of AcctNo column don't need to use a criterion for this

quarter's project

change to Group By in BldgNo column

Creating Queries for Totals - 4

make sure that Show is checked for all columns except AcctNo close and save as default, Q5401 or [ ]right-click to Open this query to make sure it is getting the data it should could calculate totals in Excel to verify make changes if necessary

Creating Queries for Totals - 5

repeat steps in the preceding 4 slidesor copy and paste Query1 twice change the Criteria to 5601 for the 2nd

query, and 5801 the 3rd query

you should now have 3 queries Query1, Query2 and Query3 (or

whatever you want to call them)

Setting Up a Combined Query

click on Create then click Query Designclick Both tab in Show Table window select Buildings table, click Add select the 3 queries you just created, click Add Close the Show Table window

Combined Query - 2

left click, drag and drop BldgNo from Buildings table to BldgNo on 1st query should result in a connecting line

repeat with Buildings table and 2nd query, and then with Buildings table and 3rd query click and drag query tables up and down should see separate connecting lines

from Buildings table to each query

Combined Query - 3

right click on line between the Buildings table and the 1st queryselect Join Propertiesclick the radio button for 2. (Include all records from 'Buildings' …), then OK left join: all buildings , even if no cost datarepeat for line between Buildings table and 2nd query, and then between Buildings table and 3rd query

Combined Query - 4

double click BldgNo, Building, and SquareFeet and anything else you need from Buildings table when double clicked, item should go

into query table (or can drag & drop)

double click SumOfPayment in 1st query, then in 2nd and 3rd queries items should go into query table

Create Calculated Columns

in 1st open column, type:LeasePSF: [Q5401].[SumofPayment]/[SquareFeet]

source needs to match query name

repeat named as TaxPSF and OtherPSF, using data from 2nd and 3rd queriesuncheck Show for all 3 SumofPayment columns

Create Calculated Columns - 2

run querynote that some cells are blank "null" instead of a zero value buildings where there is no data for

that account #

null values can cause problems with VB.NET calculations and elsewhere

Create Calculated Columns - 3

getting zeros from Null datacreate calculated columns with code like

LeaseCost: Nz([Q5401].[SumOfPayment], 0) Nz returns 0 for Null numeric data and a

zero-length string for a Null text value after this is coded, it is possible to divide

[SumOfPayment] by [SquareFeet] to get LeasePSF for all properties

run, close and save as Query4 or [ ]Notes

SQL Code

Microsoft Access generated SQL code based on the query you just createduse View>SQL View to see SQL code could copy and paste this code into

VB.NET when need to create SQL statement for Access (or modify to SQL Server syntax)

Ending Database Set-Up

if need to use an earlier version of Access in your VB.NET project, convert this database to the previous version under another name e.g., propmgt2.mdb

close the database

SQL Server Query Editor

third-party tools can provide capabilities for SQL Server similar to those in Accessalso see How do you use the Query Designer in SQL Server 2008?

Using Queries in VB.NET

open VB.NET, start a Windows project Data>Add New Data Source > Database

> Next > New Connection > Data source: Change > Microsoft Access Database File > OK > Database file name: Browse > dbquery2000.mdb > Test Connection >OK > OK> [like to copy?] > Next [save the connection?] > Yes > Next > expand Views > [select combined query] > Finish

Using Queries in VB.NET - 2

drag and drop the Combined Query View from Data Sources onto form expand form and DataGridView to

show all fields run the project

Query Data Doesn't Update

data in this type of query: come from multiple tables include calculated and summary

fields

changes entered by user in textbox do not go into database queries OK for viewing data, or

creating reports, but not good for data entry

Queries as a DataSource

add a ListBox to the form set the DataSourceName property browse to find the [query]Binding Source

set the DisplayMember property browse to find one of the fields in the

query

run the code and note how ListBox selections navigate in DataGridView

Expressions in DataSet Schema

VB.NET provides capabilities to create formulas inside the schema (.xsd file) arithmetic, concatenation, decoding,

etc. less efficient for larger volumes of

data, but provides more independence from data sources

Stop Here

following slide worked for a previous Visual Studio version

Using Queries in VB.NET - 3

right click [da]>Generate Dataset it may be helpful to rename it to ds be sure to check Add this dataset to the

designer, then OK

on Toolbox, click Data button then drag a DataView onto the designer in Properties window, rename it (dv1),

set its Table property to ds1.QueryCombined