John Welch wrote:[color=blue]
> I have a potential client who wants an application with about 20,000 records
> and 5-8 users. I told him that Access would work fine, but he wants to go
> with an mdb front end linked to SQL Server tables. My experience is solely
> in Access (single user) and I'm trying to decide whether to take the job or
> pass. I assume I'd just create the tables in Access and then upsize them
> with the wizard to get started. After that I don't how much the development
> style would be different from just a normal Access application. What I'm
> looking for is something like "The top 10 (or 20) most important things to
> do differently when developing a multiuser mdb with a SQL Server backend."
> Can anyone point me to a relevant document or book or just give me some
> ideas to think about? I have the Access 2000 developer's handbook, which I
> love for single user stuff, but which I'm having a hard time following for
> the client/server stuff.[/color]
In addition to the very good points made by others:
- Timestamp Field in every table. OK, this point was already made, but
it is important enough to mention again.
- Getting Identity Field Value in Recordset Add. If you add a new record
to a recordset on an Access table, the Autonumber field value is
available before you Update (to save the record) so you can store it to
variable for later use. With SQL Server the Identity Field value is not
generated until you Update and so is not available until then.
- If opening a Recordset that doesn't need editing use dbOpenSnapshot
(good idea for Access backend too, but makes a bigger difference in SQL)
- If you use db.Execute use dbSeeChanges.
- Use Access queries for everything to begin with. Access will figure
out what requests need to be sent to the server and the processing will
happen on the server and the results will be returned to Access. If you
get a query that Access has decided it can't figure out what to send to
the server, then it will decide that it will perform the query locally
and will then pull all of the data to the client and then do the query.
If you come across one of these queries, then you have two choices: If
you want to retain the logic completely in the FE and do not need to
edit the query results then use a Passthrough Query, otherwise create a
View on the server or if a View is inadequate then a Stored Procedure. I
find that sometimes creating a View of just one part of the query is
enough to simplify the Access query so that it will be able to now pass
the request to the server. Remember that Passthrough queries, Views, and
SPs must be written in T-SQL not in Access's flavour of SQL. This is why
I suggest only worrying about them as a last resort.
- Visit Tony's page where he lists lots of tips and resources:
http://www.granite.ab.ca/access/sqlserverupsizing.htm
- For a good list of the differences between Access and SQL Server go
to:
http://www.aspfaq.com/show.asp?id=2214
--
Bri