S
Sylvain Lafontaine
Bit fields are often problematic with ADP; so maybe casting them to int will
give something.
S. L.
give something.
S. L.
Neil said:MImage and HImage are two of the new fields, and are bit. The other new
field was AdCode, which is varchar.
Sylvain Lafontaine said:First, what are these three fields that have slowed down your application
and are Invtry.MImage and Invtry.HImage image (binary) fields?
Second, you should really take a look with the profiler. Don't forget
that we don't have your database in front of us and that it is quite
possible that only you will have the possibility of solving this problem.
S. L.
Neil said:"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message TS = Terminal Server; you can also use Citrix. This is a quick fix
for getting a multi-user access to an Access' MDB file over the
Internet or to solve the possibility of corruption when you LAN network
is not rock solid. However, this solution come with a price ($).
Not an issue with connection. I'm using the db locally for development
with MSDE and have the same situation with the linked view being slow.
Definitely not a network issue.
With the use of unbound forms as the solution, you are responsible for
sending the modifications to the data back to the database. This will
give you the possibility to use the result of a read-only SQL
pass-through in a form but, obviously, with the obligation of having
more coding work to be done. Of course, some of this work can be
partially automated. You will find more information on that subject on
books dealing with Access and SQL-Server. (Personally, I prefer to use
ADP but it has many bugs.)
Yes, I'm familiar with the approach. It would just be better to save the
development overhead. And, if one were to use unbound forms, then one
might as well just use VB.
By using the profiler on the SQL-Server, it is also possible that you
will see something that will give you the possibility of resolving the
speed problem of you linked views by having a better understanding of
what Access is doing when it communicates with the server.
Yeah, perhaps. The strange thing, as noted elsewhere in this thread, is
that it was fine until I added three new fields. So I don't know if
something needs to be optimized, or going from 21 to 24 fields really
makes that much of a difference.
Neil
S. L.
You may try to add a virtual index on your linked view:
http://support.microsoft.com/kb/q209123/
Yes, these are added when you first attach the view or table. When the
object doesn't have a primary key (as with views) Access prompts you
for which field(s) to use as pk. It then stores that information. You
can't update the data otherwise. So it's already there.
If this doesn't help, then you will have to use an unbound form
coupled with SQL pass-through queries (or ADO objects) to resolve
your speed problem with MDB.
As noted, the reason for not using pass-through is because it needs to
be updatable.
Another solution could be to go with TS to simulate a high-speed LAN.
What is "TS"?
I don't know where you got the impression that MDB were about the
same as ADP in term of speed. It has been repeated a number of times
that the use of MDB' linked tables and views is only a workable
solution for small databases on a fast Lan.
From discussions in this newsgroup.
Neil
S. L.
I have a situation with an ODBC linked view in an Access 2000 MDB
with a SQL 7 back end. The view is scrolling very slowly. However, if
I open the view in an ADP file, it scrolls quickly.
I needed to use an ODBC link for the view because it needs to be
editable. Otherwise, I would have used a pass-through query.
In previous discussions about using an MDB file vs. an ADP file as a
front end for SQL Server, the impression I got was that both were
about the same, but that the MDB was a more mature technology and
less problematic than the ADP technology. However, the speed
difference I'm noticing with the ADP file in regards to this view is
significant and is very disconcerting re. using an MDB file.
Any thoughts/comments/suggestions would be appreciated. I've
reproduced the view's SQL below for reference.
Thanks,
Neil
SQL for view in question:
SELECT INVTRY.[Index], INVTRY.TITLE, INVTRY.AUTHILL1,
INVTRY.attFirstEdition, INVTRY.attSigned,
ISNULL(INVTRY.attSignedPD, ' ') SignedCond, INVTRY.YRPUB,
INVTRY.PRICE, INVTRY.Web, INVTRY.Status,
INVTRY.WebStatusPending, INVTRY.ActivateDate,
INVTRY.DeactivateDate, INVTRY.WebAddedBatchID,
INVTRY.AllowDuplicate, INVTRY.WebAction,
INVTRY.WebActionPending, INVTRY.DateModified,
INVTRY.DateWebActionApplied, INVTRY.JIT, INVTRY.MImage,
INVTRY.HImage, INVTRY.AdCode,
CASE WHEN INVTRY.WebAddedBatchID IS NOT NULL
THEN - 1 ELSE 0 END AS OnWeb
FROM vwInventory_Dupes INNER JOIN
(WebStatus INNER JOIN
(INVTRY INNER JOIN
tabStatus ON INVTRY.Status = tabStatus.Status) ON
WebStatus.WebStatus = INVTRY.Web) ON
(vwInventory_Dupes.YearPub = INVTRY.YRPUB) AND
(vwInventory_Dupes.SignedCond = ISNULL(INVTRY.attSignedPD,
' ')) AND (vwInventory_Dupes.Signed = INVTRY.attSigned) AND
(vwInventory_Dupes.FirstEd = INVTRY.attFirstEdition) AND
(vwInventory_Dupes.Author = INVTRY.AUTHILL1) AND
(vwInventory_Dupes.TITLE = INVTRY.TITLE)
WHERE (((tabStatus.ForWeb) = 1) AND ((WebStatus.IncludeDupe)
= 1))
SQL for vwInventory_Dupes, used as subquery:
SELECT INVTRY.TITLE, INVTRY.AUTHILL1 Author,
Cast(attFirstEdition AS tinyint) FirstEd,
Cast(attSigned AS tinyint) Signed,
ISNULL(INVTRY.attSignedPD, ' ') SignedCond,
INVTRY.YRPUB YearPub
FROM WebStatus INNER JOIN
(INVTRY INNER JOIN
tabStatus ON INVTRY.Status = tabStatus.Status) ON
WebStatus.WebStatus = INVTRY.Web
WHERE (((tabStatus.ForWeb) = 1) AND ((WebStatus.IncludeDupe)
= 1))
GROUP BY INVTRY.TITLE, INVTRY.AUTHILL1,
Cast(attFirstEdition AS tinyint), Cast(attSigned AS tinyint),
ISNULL(INVTRY.attSignedPD, ' '), INVTRY.YRPUB
HAVING (((COUNT(INVTRY.[INDEX])) > 1))