Alternate, more graphical, help facilities?

  • Thread starter Thread starter ITMA
  • Start date Start date
I

ITMA

I've been trying to get my head around Access for years and always always
hit problems with Queries within the first few minutes or hours or trying to
put together a database. Its almost a lottery or mystical long forgotten
art as to whether it will throw up an obscure error message or just not do
what you want it to or not. This group is useful but a picture tells a
thousand words and I therefore wondered if there was any website or other
alternate forum where screen shots can be uploaded for comment?
 
ITMA said:
I've been trying to get my head around Access for years and always always
hit problems with Queries within the first few minutes or hours or trying to
put together a database. Its almost a lottery or mystical long forgotten
art as to whether it will throw up an obscure error message or just not do
what you want it to or not. This group is useful but a picture tells a
thousand words and I therefore wondered if there was any website or other
alternate forum where screen shots can be uploaded for comment?

Sorry, I don't know of one -- have you tried using AltaVista or Google
or similar search engine?

Pictures are discouraged on Usenet, as you know. People have emailed me
screen shots of their Datasheets (for Queries or Tables), and I've not
found them to be any more informative than a list of the contents. If
you wish to upload your own screen shots, why? Did you get
unsatisfactory answers if you didn't do that?

If you'd like to see other people's screen shots, first of all I assume
that you've read the relevant parts of Access Help, studied the
illustrations, etc. (Even if you have done that, it doesn't hurt to do
it again.) I think you might do well to play around with the "Northwind
Traders" database, which contains lots of Queries of various types. In
a copy of "Northwind Traders" or one of the blank databases set up by
the Database Wizard, you can open the Database Window, choose the
Queries tab, and run "Create query by using wizard" to create a Query
that you can then examine in Query Design View to see how it's constructed.

Having done all that, if you want to produce a Query that isn't working
as you'd like it to, you know that there are many people here who will
be happy to answer your questions. It will help if, when you describe
what you'd like the Query to do, you include a list of example contents
of the Tables it depends on and maybe a list of the specific results
you'd like to see based on your example data. For the contents of the
Tables, you can display them by opening a Table in Datasheet View,
selecting the whole thing by clicking in the upper left corner, copying
it to the Clipboard using control-C, and pasting it into your message
using control-V. For Queries, you can open a Query in SQL View, select
the entire SQL, and copy that and paste it into your message. That
should be enough for others to analyze. Good luck.

-- Vincent Johns <[email protected]>
Please feel free to quote anything I say here.
 
If you wish to upload your own screen shots, why? Did you get
unsatisfactory answers if you didn't do that?

Describing what you want to achieve, or what others are trying to explain,
just seems so clumsy and unfathonable in words.

Having done all that, if you want to produce a Query that isn't working as
you'd like it to, you know that there are many people here who will be
happy to answer your questions.

The biggest single question I've been struggling with all this time is how
to get information from forms into tables without messages like 'cannot
update recordset', or 'join key of such-and-such is not in the query'. What
are the golden rules behind this that no person or book seems to explain?!

It seems the simplest way out in pure relational database terms is to have
intricate subform based forms that have to completed in a certain order,and
which become so laborious that you have to wonder why you're bothereing with
a database at all. The best alternateive seems to me to have a completley
unbound form which you then use code to manually disect into the relvealt
tables, but again that gets me wondering why bother with a database at all
because you might as well just program the whole thing yourself from
scratch. In any case, you need a good knowledge of databases befor you can
use vba.

Does anyone know why sometimes you can get away without the key and foreign
field in a query that is the basis of a form and sometimes you do need them?

It just seems the conventional training methods for Access - a follow the
leader 1-2-3 step course, or else the similar format in books - are so
lacking. Does anyone know of places, ideally here in London / UK where you
can have more of an informal classroom environment and you can call people
over to help you with things you're stuck with?
 
ITMA said:
Describing what you want to achieve, or what others are trying to
explain, just seems so clumsy and unfathonable in words.



The biggest single question I've been struggling with all this time
is how to get information from forms into tables without messages
like 'cannot update recordset', or 'join key of such-and-such is not
in the query'. What are the golden rules behind this that no person
or book seems to explain?!
It seems the simplest way out in pure relational database terms is to
have intricate subform based forms that have to completed in a
certain order,and which become so laborious that you have to wonder
why you're bothereing with a database at all. The best alternateive
seems to me to have a completley unbound form which you then use code
to manually disect into the relvealt tables, but again that gets me
wondering why bother with a database at all because you might as well
just program the whole thing yourself from scratch. In any case, you
need a good knowledge of databases befor you can use vba.

Does anyone know why sometimes you can get away without the key and
foreign field in a query that is the basis of a form and sometimes
you do need them?
It just seems the conventional training methods for Access - a follow
the leader 1-2-3 step course, or else the similar format in books -
are so lacking. Does anyone know of places, ideally here in London /
UK where you can have more of an informal classroom environment and
you can call people over to help you with things you're stuck with?

My advice would be to simply never use a multi-table query as the RecordSource
for a form that you want make edits in. In over a decade of using Access I have
done that only once or twice and I could just as easily NOT have done so on
those occassions.

If this causes a lot of grief or added complexity in your apps then that
suggests that your table structures are not set up very well in the first place.

Many think that they should create all of these separate normalized table
structures and then use queries to simply combine them all back together again.
Well that is fine for reporting, but not for doing edits to the data.
 
ITMA said:
Describing what you want to achieve, or what others are trying to explain,
just seems so clumsy and unfathonable in words.

That's sometimes true, but in Access, much of the time you'll get
results in the form of a list of names and numbers (Datasheet view),
which is not difficult to express in a text message.

The biggest single question I've been struggling with all this time is how
to get information from forms into tables without messages like 'cannot
update recordset', or 'join key of such-and-such is not in the query'. What
are the golden rules behind this that no person or book seems to explain?!

In general, such messages mean "Something's wrong here." Specifically,
if you get such a message, posting the stuff I mentioned, such as the
Query's SQL and the Datasheet View of the Tables you use, may be enough
to let us give you a suitable answer. And of course, the next time the
same thing happens, it's less mysterious.

It seems the simplest way out in pure relational database terms is to have
intricate subform based forms that have to completed in a certain order,and
which become so laborious that you have to wonder why you're bothereing with
a database at all. The best alternateive seems to me to have a completley
unbound form which you then use code to manually disect into the relvealt
tables, but again that gets me wondering why bother with a database at all
because you might as well just program the whole thing yourself from
scratch. In any case, you need a good knowledge of databases befor you can
use vba.

These are good points. Sometimes there are easy ways around the "you
must enter the data in this order" rules. For example, you might enter
them into an Excel worksheet (with headers on the columns in the Excel
list) and then just import that, after you've entered everything, into
Access for storage and analysis.

Some things you can do in VBA without necessarily knowing, for example,
how to use a Crosstab Query or Update Query. But Access provides so
many other ways to do commonly needed tasks, that I agree that you
probably won't often need to use any VBA code.

Does anyone know why sometimes you can get away without the key and foreign
field in a query that is the basis of a form and sometimes you do need them?

I don't know all the rules here, but I imagine it's obvious that if the
Form uses only one Table, there is no need for any keys linking the
Table to other Tables.

Here's another example where you might not need to formally identify a
linking key: Your Query could simply specify a condition that requires
the value in some field to be present in a given field of another Table.
Let's say it's the 2-letter abbreviation of the name of a country
(such as "CA" for Canada). Your Query can check the value based on a
list in the SQL, or it could go to a Table, and the Table would not need
to be linked to anything else.

Having said that, let me suggest that defining an Autonumber key in a
Table doesn't consume many resources and can be helpful, so I suggest
you do that unless you are pretty sure you won't need it.
It just seems the conventional training methods for Access - a follow the
leader 1-2-3 step course, or else the similar format in books - are so
lacking. Does anyone know of places, ideally here in London / UK where you
can have more of an informal classroom environment and you can call people
over to help you with things you're stuck with?

I taught a class like that some time ago, and I wasn't happy with the
format. I thought it didn't give the students lots of time to practice
or experiment (basically, to play around with Access to gain a good
feeling for how it works). But except that Usenet is somewhat slower
than getting together with friends, as you might do in college, I think
that it's possible to get pretty good answers here. You might also look
for chat rooms or blogs dealing with database stuff.

-- Vincent Johns <[email protected]>
Please feel free to quote anything I say here.
 
Many think that they should create all of these separate normalized table
structures and then use queries to simply combine them all back together
again. Well that is fine for reporting, but not for doing edits to the
data.

So does that mean users of your databases need to open separate forms for
each table ?? Sounds to me like they've be better of having the text all
saved in a spreadsheet or word processor!
 
ITMA said:
So does that mean users of your databases need to open separate forms
for each table ?? Sounds to me like they've be better of having the
text all saved in a spreadsheet or word processor!

I use forms with subforms or in somes cases have popup forms that show records
related to the main form's record. Then again I have rarely had master/detail
type relationships that involved more than 3 or 4 tables which means I am not
dealing with more than 3 or 4 forms.

There are still database systems out there that NEVER allow updates in a view or
query that join multiple tables. Access is actually one of the most flexible
in this regard but there are still limits.

Besides if you join tables with one-to-many relationships (the most common) then
the record on the "one" side will have its data duplicated as many times as
there are child records. I fail to see how that would work on a form. Do you
want Record 1 to show the same parent fields as Records 2, 3, 4, 5 and 6 with
only the fields for the related table to be changing? Seems really
counter-intuitive to me.
 
ITMA,

At least some of the rules you are talking about are explained in this
Access Help topic:
"When can I update data from a query?"
 
ITMA said:
Describing what you want to achieve, or what others are trying to explain,
just seems so clumsy and unfathonable in words.

ITMA,

Yes, I agree completely, ordinary english language discussions are
generally of the lowest order of usefulness in conveying ideas.

This is the world of relations database systems, and that language
is spoken in SQL and data.

The most useful things are well-formatted table descriptions (DDL is
best), well-formatted SQL code, well-formatted comma-delimited lists
of sample data, and well-formatted comma-delimited lists of desired
results.

These four things are the grand slam of providing the right
information to getting your questions answered.

As regards your other questions, you can post specifics in new
threads at will.

More on the above, below.

-------------------------------

Formatting:

Please use a monospace font (Courier New, etc.) when writing out
your examples (all descriptions, charts, SQL, etc.).

-------------------------------

Process Description:

Please only include the shortest possible narrative of what is going
on with the query. (Include all that is necessary, and nothing
more.)

When parts of your query make calculations, show the exact code or
nearest readable plain-text math formula you can create.

When you are done with this section, re-read it several times before
posting to assure yourself that you are accurately describing the
situation in a way you believe others will understand.

-------------------------------

Table Structures/Description:

Post a description of your table structures.

Although it can be a source of information, please do not copy and
paste information directly from MS Access' Documenter. It is
virtually unreadable. Please distill down and legibly format only
the relevant table information.

If reading the information in MS Access' Documenter is too
intimidating (I know what its output says, myself, and I still
dislike going over its output listings), open your table in Design
View, view the column names and data types in it, and then type out
the column names and data types *that are necessary* (do not include
columns that are not absolutely necessary for the query). Use the
Index dialog box (you can get at it by clicking on the "lightning
bolt and stacked lines" icon on the toolbar) to locate information
on primary and foreign keys and other indexes and type out that
information, as well.

Note: For table descriptions (or DDL) lining up the column names,
data type names, and key/index information in neat columns is quite
helpful.

Note: If you know how to write DDL SQL (CREATE TABLE), please post
that (including constraints) instead of text descriptions. (Please
post only the portion of the DDL that is relevant.)


Example (text description):

MyTableOne
MyTableOneID AUTOINCREMENT PK
ColTwo INTEGER NOT NULL
ColThree TEXT(10)

MyTableTwo
MyTableTwoID AUTOINCREMENT PK\
MyTableOneID INTEGER PK/-- Composite Primary Key
FK -- MyTableOne MyTableOneID
ColThree INTEGER
ColFour DATETIME
ColFive CURRENCY
ColSix BIT
ColSeven TEXT(1)
ColEight TEXT(1)

etc., etc., etc.


Example (DDL SQL/CREATE TABLE):

CREATE TABLE MyTableOne
(MyTableOneID AUTOINCREMENT
,ColTwo INTEGER NOT NULL
,ColThree TEXT(10)
,CONSTRAINT pk_MyTableOne
PRIMARY KEY (MyTableOneID)
)

CREATE TABLE MyTableTwo
(MyTableTwoID AUTOINCREMENT
,MyTableOneID INTEGER
,ColThree INTEGER
,ColFour DATETIME
,ColFive CURRENCY
,ColSix BIT
,ColSeven TEXT(1)
,ColEight TEXT(1)
,CONSTRAINT pk_MyTableTwo
PRIMARY KEY (MyTableTwoID)
,CONSTRAINT fk_MyTableTwo_MyTableOne_MyTableOneID
FOREIGN KEY (MyTableOneID)
REFERENCES MyTableOne (MyTableOneID)
)

The Primary Key and Foreign Key notes (or constraints in the DDL
SQL) are *critical*.

-------------------------------

Sample Data (using comma delimited lists):

Note: If your sample data is "wide" across the screen, and you can't
trim out any columns because they are needed, make *two* (or more)
charts, and then clearly note that the second chart is the
continuation of the first chart for the same table. It is far
easier to convert a comma delimited chart into a table in MS Word or
import it directly into MS Excel (where the data can be copied and
pasted into a new table in MS Access) or even MS Access than it is
to manually undo the line-break on *every* row of a line-wrapped
chart (in fact, manually undoing the line-breaks caused by newsgroup
posting is a huge pain in the neck).

Note: In a comma delimited list, it is not absolutely necessary
(although it is nice) to have the data in the columns lined straight
up and down, like I have in my examples below. When the data is
finally imported into MS Access, a quick glance at the table in
datasheet view will show things lined up straight. It is not
necessary to expend extra effort on your chart here. (The right
data does have to be in the right position of each row of the chart,
of course.)

Note: Use the real table and column names whenever possible. Use
invented table names and column names (like I use below in my
example) only when you absolutely have to.

Note: When naming the columns on this chart, use the same column
names as is the table structures above. Using shortened names (or
completely different names, for whatever reason) may save space and
prevent line-wraps, but it can be severely confusing. If the chart
gets too "wide", make two (or more) charts if you have to, as noted
above in Table Structures.

Note: Please include just enough rows of sample data so that
sufficient tests of the various possibilities ("test cases") can be
made.

Note: Please do not attempt to post endless rows of data. 3-5 rows
are probably the minimum, and 10-20 row are probably the normal
maximum. (Post only what is necessary, and no more.)

Note: Please try and use real data when possible. However, real
people's personal information, or private information (banking,
proprietary, etc.), should never be posted. When you have
information that cannot be posted, you will have to invent test data
that can produce results similar to what the real data would
produce.


MyTableOne
MyTableOneID, ColTwo, ColThree
1, 2, a
3, 4, b
5, 6, c

MyTableTwo (Part One)
MyTableTwoID, MyTableOneID, ColThree, ColFour, ColFive
1, 5, 1, 01/01/06, 1.01


MyTableTwo (Part Two)
ColSix, ColSeven, ColEight
-1, g, h

-------------------------------

Desired Results

.. . . <whatever it is you want your query to produce; "the right
stuff", if you will forgive the pun>

(Same chart style as found in the Sample Data section.)

-------------------------------

Query:

Your SQL query code attempts to date. (If "SQL code" throws you for
a loop, open your Query in Design View, and then use the menus, View
SQL View, to switch to a window that will show the SQL code. Copy
and paste that into your new post to the newsgroup.)

Note: There is a huge temptation to merely copy and past the SQL
code. Usually, this is completely unreadable, and whoever reads it
must re-align the code in order to make heads or tails of it (yes,
there are a few out there who can read endless unbroken streams of
code packed together, but I am not one of them). If you know how,
spend some time straightening out and aligning the SQL before
posting it.

Note: In some situations, of course, you will have no query or SQL
code at all.

-------------------------------

Current Results:

.. . . <the incorrect results the current query(s) is producing>

You may not have any current results if your query is not working or
if you have not been able to create a query so far.

(Same chart style as found in the Sample Data section.)

-------------------------------

Lots Of Work:

Does all this sound like a lot of work?

Remember, whatever work you haven't done will have to be done by
whoever tries to answer your question.

Any information that is not included may have to be asked for,
necessitating additional posts (sometimes many) before someone can
begin answering your question.

Time spent doing these things is time spent not answering your
question.

-------------------------------

I hope that the above can be of assistance in helping you receive an
answer to your various MS Access questions.


Sincerely,

Chris O.
 
Back
Top