As the number of records in this database has grown, we
have noticed a slow-down over time. Some things that used
to take only a second or two are now taking upwards of 10
seconds.
You don't mention how large your data sets are. A file with 100,000 records
is consider SMALL.
I repair and compact both the front and back
ends on a regular basis and since the slow-down is
gradually happening over time, I can only attribute this
to the increase in records. I have been able to speed
some things up by revising the programming, but overall
it's slower that it was when the number of records were
less that they are now.
Moving to sql server will not fix most performance problems. In fact, there
are weekly posts in the sql server newsgroup about how moving data from a
JET mdb file to sql server actually runs slower (and, in most cases it DOES
run slower). I repeat: sql server is slower then ms-access on the same
hardware box.
The only way you get better performance is to have good designs. If you try
and use sql sever with poor designs, you will NOT get a performance
increase. I cannot stress this point enough:
Using sql server will NOT fix performance problems on it own..you
DESIGNS must take advantage of sql server. SQL server will NOT fix
performance problems on its own!
One of those people is an individual
who is a part-time instructor/part-time consultant at the
training center where I took my Access VBA course. He
mentioned that I should start looking at converting the
front-end to VB and the back end to SQL to accomodate the
future growth of the system
Up to this, the above advice makes sense. But the above ONLY refers to the
data part...it should not refer to ms-access. If that person means that
ms-access is not up to future growth..then that person is dead wrong.
and increase the speed,
security, and stability.
Using VB is NOT any faster nor more secure then using ms-access with sql
server. After all, they are both using sql server...why would there be any
difference in performance? Further, the programming language and compiler
(p-code) for ms-access is the SAME as VB6 anyway. Further, as mentioned,
there is going to be no performance difference here at all. There are
companies right now with 1000 ms-access users all at the same time working
on the same database on sql server. VB on it own will NOT give your more
performance then does ms-access. The only advantage you can get in terms of
performance is if you go to a 3 tried design, and I don't think this is your
case yet.
After doing a little research, I
decided that this would probably be a good idea,
especially since converting the front end to VB would
allow me to reduce the overhead that Access takes for the
development environment that no one but I use.
The runtime package for vb.net is in excess of 20 megs in size also. There
is little difference in terms of the resources, and "size" of stuff
required. The runtime package and deployment kit for ms-access is about 33
megs in size on those pc's that don't have ms-access.
As far as VB vs. VB.Net, when I bought my software, VB6
was no longer available. VB.Net was, so I assumed it was
the natural upgrade to VB6. Is this not right?
Yes, VB.net is the "next" new thing, but it certainly is a complete paradigm
shift from VB6, or ms-access (both use the same syntax and development
approach). VB.net is different, and is not compatible with VB6. VB6 is thus
much closer to ms-access, and in fact as mentioned, shares the same
programming language.
I have not yet taken any VB courses, so I do not know what
VB.Net will and will not support in comparison to Access.
Obviously if VB.Net does not support Continuous Forms or
SubForms, I'm going to have a problem there. And not
knowing anything about VB, I wouldn't know how to work
around that yet.
As mentioned, it is question of a paradigm shift. For example, often people
need a tree like structure (in VB this called a treeView control). You see
this often on the "left" side where you an click on a "+" sign, and the
right side expands (the windows explore has a treeview). So, if you had been
developing in VB, or VB.net..you would used these things...and going to
ms-access, you would go...golly...no treeview...how horrible!. This same
concept and philosophy applies to your loss of continues forms (but, it
true..those other environments don't have that..so they use datagrid
controls).
Also, remember that ms-access is a program and system for data. VB is a
system that lets you write games, and all kinds of things. It is NOT
designed for editing and working just with data. As a result, you CAN user
VB to work with data..but it usually takes about 2 or 3 times as much work.
(thus, your 3 years of work would have taken 9 years).
I talk about what you use in VB vs. Ms-access here in terms of grids:
http://www.attcanada.net/~kallal.msn/Articles/Grid.htm
By the way, the first screen shot in the above shows what I used in place of
a treevfeiew control. So, you can get the same results...(a drill down), but
have to use a different design approach. I gong to repeat this lesson for
you, else it will cause you the most grief in your life:
You must change your ides and concepts of design when moving from one
development platform to another. You can achieve the same end results, but
the tools, and how you "think of" the design will have to change. So, if you
talk to a average VB, or VB.net developer, they don't miss, nor care much
that no such thing as a continues form is not available..since they never
had them!
Please read the above again to fix this in your mind. The #1 mistake
developers make when moving to a new set of tools is thinking of OLD ideas
and old concepts that they used in the old system will still work, and be
available in the new system. ...this does NOT work. I sure the first time
you learned about a sub-form it was strange concept..now you likely even
forget why it was strange!! Anyway, you don't have sub-=forms in those other
environments...yet all developers make lots of software with those other
tools....so, you have to change your ways...
My idea was to buy one of these conversion tools and let
it convert one of my smaller databases to see how it works
and what I must do to "fix" the things it couldn't
convert.
As mentioned, due to conceptual differences..things don't convert well. And,
converting to VB6 is complete different then is VB.net.
You also have not mentioned the size of some of the larger data tables
(number of records is import here).
So, using VB.net, or VB6 or c++ will not give you any more performance then
will ms-access being used with sql server. In other words, why does the
speed of sql server change (where all the data is) change when you use a web
page, c++, or ms-access to get that data? (answer: it does not change...and
sql server don't even know if you are using ms-access, or a web page....)