Ok, from the range of answers I got back so far, all of which I appreciate
greatly, it is clear that I need to clarify my project and goals just a bit
in order to narrow the width of the discussion.
Here's the situation and the parameters:
1) I have a client that is still using a btrieve based dos system that
I created 20+ years ago to keep up with the names, addresses and activities
of in excess of 30k+ members. The system creates a lot of specialized
reports for the client and they have been unwilling to move to anything else
because of all the custom functionality built into the system. (In case you
are wondering, they are running the system on virtualized XP Pro systems as
the verision of btrieve they have dies on anything later.)
2) I want to upgrade them to a VFP9 + Windows user interface and
application in order to get them off the virtual machines, to take advantage
of a lot of the speed and features available in VFP9 and I could certainly
completely re-write this system in VFP using native dbf table if I chose to
do so. HOWEVER.
3) In the long term, I can see a future for this client where they have
a web-based front-end for members of their group to login remotely via the
web and maintain their demographic data themselves thereby de-centralizing a
lot of the data entry process currently done by the home office.
4) Plus, I want the best of both worlds. I want the users in the
central office to take advantage of all the functionality I can bring to
them with VFP9 as a networked desktop application AND at some point I want
to add a web-based front-end for remote users to update various data points.
The final requirement is not really a requirement but a desire on my part to
learn how to best handle the data entry process and build the user interface
functionality in VFP9 to create a desktop application using SQL as data
storage. I am used to creating a form with a tabbed pageframe on it,
creating a data grid on the first tab, adding some filter capabilities for
searches and then putting all the fields on the second or third or fourth or
however many detail tabs I need to conveniently display the data I want the
user to edit, add, delete or save through a sub-classed button bar that I
drop on the form and connect to the table in question. My sub-classed tools
use CURSORGETPROP to detect any changes and prompt the user to save the
buffered changes if necessary.
I have come to the understanding from all I've read that this method of
providing grid based data entry screens for users (while perfectly workable
in my data interface projects) will not be as efficient when it comes to
using SQL instead of native DBFs. I have also read lots of different
opinions on how best to let the user search for the specific record they
want to use and I have tried to review as many programs as I can to get some
sense of the generally accepted method that makes the most sense for a best
practices user interface but no joy so far. Once a user finds the record in
question, I need to figure out what code snippets I need to build to detect
changes and push the updates back to the SQL database and all the other
stuff that goes along with that.
My hope was that someone could point me toward some good VFP examples or
articles specific to VFP that outlines the best practices that seemed to
work best. I am not interested in moving to a development tool other than
VFP9, because my personal goal in doing the project is to give me a way to
learn to program the best user interface I can with VFP as the front-end and
SQL as the backend.
Hopefully that clarifies my original question just a bit.
Paul H. Tarver
Tarver Program Consultants, Inc.
--- StripMime Report -- processed MIME parts ---
multipart/alternative
text/plain (text body -- kept)
text/html
---
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/06f301d27e3d$92885a00$b7990e00$@tpcqpc.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Paul,
WRT to searching records and ergonomics, here is a sample VFP
application that works on either the LAN or the Web with a similar user
interface:
http://foxincloud.com/ip/ (test database, you can go ahead modifying
anything you want)
Login SG
Pass SG
Some data entry are made directly in the grid, some on sub-forms
Works with VFP data for now, ready for a migration to SQL server using
Cursor Adapters.
Thierry Nivelet
FoxInCloud
Give your VFP app a second life in the cloud
Le 03/02/2017 à 17:50, Paul H. Tarver a écrit :
> Ok, from the range of answers I got back so far, all of which I appreciate
> greatly, it is clear that I need to clarify my project and goals just a bit
> in order to narrow the width of the discussion.
>
>
>
> Here's the situation and the parameters:
>
>
>
> 1) I have a client that is still using a btrieve based dos system that
> I created 20+ years ago to keep up with the names, addresses and activities
> of in excess of 30k+ members. The system creates a lot of specialized
> reports for the client and they have been unwilling to move to anything else
> because of all the custom functionality built into the system. (In case you
> are wondering, they are running the system on virtualized XP Pro systems as
> the verision of btrieve they have dies on anything later.)
>
> 2) I want to upgrade them to a VFP9 + Windows user interface and
> application in order to get them off the virtual machines, to take advantage
> of a lot of the speed and features available in VFP9 and I could certainly
> completely re-write this system in VFP using native dbf table if I chose to
> do so. HOWEVER.
>
> 3) In the long term, I can see a future for this client where they have
> a web-based front-end for members of their group to login remotely via the
> web and maintain their demographic data themselves thereby de-centralizing a
> lot of the data entry process currently done by the home office.
>
> 4) Plus, I want the best of both worlds. I want the users in the
> central office to take advantage of all the functionality I can bring to
> them with VFP9 as a networked desktop application AND at some point I want
> to add a web-based front-end for remote users to update various data points.
>
>
>
>
> The final requirement is not really a requirement but a desire on my part to
> learn how to best handle the data entry process and build the user interface
> functionality in VFP9 to create a desktop application using SQL as data
> storage. I am used to creating a form with a tabbed pageframe on it,
> creating a data grid on the first tab, adding some filter capabilities for
> searches and then putting all the fields on the second or third or fourth or
> however many detail tabs I need to conveniently display the data I want the
> user to edit, add, delete or save through a sub-classed button bar that I
> drop on the form and connect to the table in question. My sub-classed tools
> use CURSORGETPROP to detect any changes and prompt the user to save the
> buffered changes if necessary.
>
>
>
> I have come to the understanding from all I've read that this method of
> providing grid based data entry screens for users (while perfectly workable
> in my data interface projects) will not be as efficient when it comes to
> using SQL instead of native DBFs. I have also read lots of different
> opinions on how best to let the user search for the specific record they
> want to use and I have tried to review as many programs as I can to get some
> sense of the generally accepted method that makes the most sense for a best
> practices user interface but no joy so far. Once a user finds the record in
> question, I need to figure out what code snippets I need to build to detect
> changes and push the updates back to the SQL database and all the other
> stuff that goes along with that.
>
>
>
> My hope was that someone could point me toward some good VFP examples or
> articles specific to VFP that outlines the best practices that seemed to
> work best. I am not interested in moving to a development tool other than
> VFP9, because my personal goal in doing the project is to give me a way to
> learn to program the best user interface I can with VFP as the front-end and
> SQL as the backend.
>
>
>
> Hopefully that clarifies my original question just a bit.
>
>
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
>
>
>
> --- StripMime Report -- processed MIME parts ---
> multipart/alternative
> text/plain (text body -- kept)
> text/html
> ---
>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/553e2f68-93dc-aabb-65cf-1c17559e9c32@foxincloud.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Hi Paul,
now it's much clear what you want. At first seemed to me like you wanted to
change technology.
Ok, so these are just some points about general good practices applied on
VFP and used in practice in my experience:
- Forget grids, or at least forget showing ALL the data to the user. This
do not work with C/S system, because do not scale. You will need predefined
filters on the search screens, so the user can change them, but never take
out all of them, so the query to the server brings a limited scope of
records. You can bring records in chunks if you need to show something with
"more records" or "next page" or similar, but never bring all the data.
That's fundamental.
- You can cache part of the data for those tables that are hevily used if
needed, maybe a view that updates from time to time based on a datetime
timestamp for synchronizing
- All logic that you can put on the database, is reusable by other fronts.
In some cases some processes are faster on the database
- Forget about locking records. There are no such thing on C/S systems
(well, technically you can, but it's really a bad idea)
- If going to web in some point, then Thierry's FoxInCloud could be a good
idea
- For local editing of data you can use a loca cursor if you want, so you
can use the same data modification detection techniques you already know
(getNextModified(), etc) but at the end the data must go to the server, so
no need to have a real table in local. Another approach is using an object
whose properties are bound to the ControlSources (we use this approach in
one of our apps), but in this case all the change-detection is by code
- This seems a big project, so Source Control is very important. You have
many options here, I suggest using a DVCS (Distributed Version Control
System)
If using git, then you have these projects available:
Lutz Scheffler's "Bin 2 Text extension" at VFPx:
http://vfpx.codeplex.com/wikipage?title=Bin%202%20Text%20Extension
Mike Potjer's "Git Utils" at github:
https://github.com/mikepotjer/vfp-git-utils
If using Plastc, then you can use the "Plastic tools for Visual FoxPro 9":
https://github.com/fdbozzo/plasticscm-tools-for-visual-foxpro-9
If using another SCM/DVCS like SourceSafe, Mercurial or similar, then you
can use FoxBin2Prg because of the two-way conversion between binaries and
text:
http://vfpx.codeplex.com/wikipage?title=FoxBin2Prg
On the server side, you mentioned SQLServer. I suppose your client have a
license, but if not, there is no need to buy one, you can use any DB, like
PostgreSQL, MariaDB, etc, for free.
Finally, if you want to test your code (more good practices:) in an
automated or semi-automated way, then you can use the excellent Eric
Selje's FoxUnit:
http://vfpx.codeplex.com/wikipage?title=FoxUnit&referringTitle=Home
May be others can add more on the SQL topic, articles or more resources.
Fernando D. Bozzo
2017-02-03 17:50 GMT+01:00 Paul H. Tarver <paul@tpcqpc.com>:
> Ok, from the range of answers I got back so far, all of which I appreciate
> greatly, it is clear that I need to clarify my project and goals just a bit
> in order to narrow the width of the discussion.
>
>
>
> Here's the situation and the parameters:
>
>
>
> 1) I have a client that is still using a btrieve based dos system that
> I created 20+ years ago to keep up with the names, addresses and activities
> of in excess of 30k+ members. The system creates a lot of specialized
> reports for the client and they have been unwilling to move to anything
> else
> because of all the custom functionality built into the system. (In case you
> are wondering, they are running the system on virtualized XP Pro systems as
> the verision of btrieve they have dies on anything later.)
>
> 2) I want to upgrade them to a VFP9 + Windows user interface and
> application in order to get them off the virtual machines, to take
> advantage
> of a lot of the speed and features available in VFP9 and I could certainly
> completely re-write this system in VFP using native dbf table if I chose to
> do so. HOWEVER.
>
> 3) In the long term, I can see a future for this client where they
> have
> a web-based front-end for members of their group to login remotely via the
> web and maintain their demographic data themselves thereby de-centralizing
> a
> lot of the data entry process currently done by the home office.
>
> 4) Plus, I want the best of both worlds. I want the users in the
> central office to take advantage of all the functionality I can bring to
> them with VFP9 as a networked desktop application AND at some point I want
> to add a web-based front-end for remote users to update various data
> points.
>
>
>
>
> The final requirement is not really a requirement but a desire on my part
> to
> learn how to best handle the data entry process and build the user
> interface
> functionality in VFP9 to create a desktop application using SQL as data
> storage. I am used to creating a form with a tabbed pageframe on it,
> creating a data grid on the first tab, adding some filter capabilities for
> searches and then putting all the fields on the second or third or fourth
> or
> however many detail tabs I need to conveniently display the data I want the
> user to edit, add, delete or save through a sub-classed button bar that I
> drop on the form and connect to the table in question. My sub-classed tools
> use CURSORGETPROP to detect any changes and prompt the user to save the
> buffered changes if necessary.
>
>
>
> I have come to the understanding from all I've read that this method of
> providing grid based data entry screens for users (while perfectly workable
> in my data interface projects) will not be as efficient when it comes to
> using SQL instead of native DBFs. I have also read lots of different
> opinions on how best to let the user search for the specific record they
> want to use and I have tried to review as many programs as I can to get
> some
> sense of the generally accepted method that makes the most sense for a best
> practices user interface but no joy so far. Once a user finds the record in
> question, I need to figure out what code snippets I need to build to detect
> changes and push the updates back to the SQL database and all the other
> stuff that goes along with that.
>
>
>
> My hope was that someone could point me toward some good VFP examples or
> articles specific to VFP that outlines the best practices that seemed to
> work best. I am not interested in moving to a development tool other than
> VFP9, because my personal goal in doing the project is to give me a way to
> learn to program the best user interface I can with VFP as the front-end
> and
> SQL as the backend.
>
>
>
> Hopefully that clarifies my original question just a bit.
>
>
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
>
>
>
> --- StripMime Report -- processed MIME parts ---
> multipart/alternative
> text/plain (text body -- kept)
> text/html
> ---
>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/CAGQ_JunvPg9eRwX8Ad8o1G82-i2B66o7H6VkWFdqO=zGn5ahkQ@mail.gmail.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
I read that you are doing a 100% rewrite and none of it is in fox-anything?
That new system will also have a data and a lot of reports.
In the future you want to go and redo it again for the web, but not now.
Looks like twice the work in reality unless you process most of the data on
the backend and just about every request gives you a dataset back, updates
and edits don't return a lot of data yeah I know.
Here at work the word twice would get the project killed. Do it once for
now and the future.
You may not know anything about programming UI for the web and that is why
you'll do it first and then maybe come back. How long do you think it will
take just to port it into Fox? 3 months or 6?
On Fri, Feb 3, 2017 at 10:50 AM, Paul H. Tarver <paul@tpcqpc.com> wrote:
> Ok, from the range of answers I got back so far, all of which I appreciate
> greatly, it is clear that I need to clarify my project and goals just a bit
> in order to narrow the width of the discussion.
>
>
>
> Here's the situation and the parameters:
>
>
>
> 1) I have a client that is still using a btrieve based dos system that
> I created 20+ years ago to keep up with the names, addresses and activities
> of in excess of 30k+ members. The system creates a lot of specialized
> reports for the client and they have been unwilling to move to anything
> else
> because of all the custom functionality built into the system. (In case you
> are wondering, they are running the system on virtualized XP Pro systems as
> the verision of btrieve they have dies on anything later.)
>
> 2) I want to upgrade them to a VFP9 + Windows user interface and
> application in order to get them off the virtual machines, to take
> advantage
> of a lot of the speed and features available in VFP9 and I could certainly
> completely re-write this system in VFP using native dbf table if I chose to
> do so. HOWEVER.
>
> 3) In the long term, I can see a future for this client where they
> have
> a web-based front-end for members of their group to login remotely via the
> web and maintain their demographic data themselves thereby de-centralizing
> a
> lot of the data entry process currently done by the home office.
>
> 4) Plus, I want the best of both worlds. I want the users in the
> central office to take advantage of all the functionality I can bring to
> them with VFP9 as a networked desktop application AND at some point I want
> to add a web-based front-end for remote users to update various data
> points.
>
>
>
>
> The final requirement is not really a requirement but a desire on my part
> to
> learn how to best handle the data entry process and build the user
> interface
> functionality in VFP9 to create a desktop application using SQL as data
> storage. I am used to creating a form with a tabbed pageframe on it,
> creating a data grid on the first tab, adding some filter capabilities for
> searches and then putting all the fields on the second or third or fourth
> or
> however many detail tabs I need to conveniently display the data I want the
> user to edit, add, delete or save through a sub-classed button bar that I
> drop on the form and connect to the table in question. My sub-classed tools
> use CURSORGETPROP to detect any changes and prompt the user to save the
> buffered changes if necessary.
>
>
>
> I have come to the understanding from all I've read that this method of
> providing grid based data entry screens for users (while perfectly workable
> in my data interface projects) will not be as efficient when it comes to
> using SQL instead of native DBFs. I have also read lots of different
> opinions on how best to let the user search for the specific record they
> want to use and I have tried to review as many programs as I can to get
> some
> sense of the generally accepted method that makes the most sense for a best
> practices user interface but no joy so far. Once a user finds the record in
> question, I need to figure out what code snippets I need to build to detect
> changes and push the updates back to the SQL database and all the other
> stuff that goes along with that.
>
>
>
> My hope was that someone could point me toward some good VFP examples or
> articles specific to VFP that outlines the best practices that seemed to
> work best. I am not interested in moving to a development tool other than
> VFP9, because my personal goal in doing the project is to give me a way to
> learn to program the best user interface I can with VFP as the front-end
> and
> SQL as the backend.
>
>
>
> Hopefully that clarifies my original question just a bit.
>
>
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
>
>
>
> --- StripMime Report -- processed MIME parts ---
> multipart/alternative
> text/plain (text body -- kept)
> text/html
> ---
>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/CAJidMY+GYbNTcVH9yQ_8C-ykZQia=BHj7SaWrtqkN-edAie=pA@mail.gmail.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
> forget grids showing ALL the data to the user
FWIW, FoxInCloud comes with a paged grid with sorting & filtering
capability: just drop an existing grid at design time into the container
class supplied by FoxInCloud and it'll get paged in Web mode. User can
set the number of items per page and it'll persist across sessions.
> Thierry's FoxInCloud could be a good idea
could also be a real opportunity; doesn't the video I recently posted
showing a responsive Web App from a 'regular' VFP app look terrific? ;)
Thierry Nivelet
FoxInCloud
Give your VFP app a second life in the cloud
Le 03/02/2017 à 20:11, Fernando D. Bozzo a écrit :
> Hi Paul,
>
> now it's much clear what you want. At first seemed to me like you wanted to
> change technology.
>
> Ok, so these are just some points about general good practices applied on
> VFP and used in practice in my experience:
>
> - Forget grids, or at least forget showing ALL the data to the user. This
> do not work with C/S system, because do not scale. You will need predefined
> filters on the search screens, so the user can change them, but never take
> out all of them, so the query to the server brings a limited scope of
> records. You can bring records in chunks if you need to show something with
> "more records" or "next page" or similar, but never bring all the data.
> That's fundamental.
>
> - You can cache part of the data for those tables that are hevily used if
> needed, maybe a view that updates from time to time based on a datetime
> timestamp for synchronizing
>
> - All logic that you can put on the database, is reusable by other fronts.
> In some cases some processes are faster on the database
>
> - Forget about locking records. There are no such thing on C/S systems
> (well, technically you can, but it's really a bad idea)
>
> - If going to web in some point, then Thierry's FoxInCloud could be a good
> idea
>
> - For local editing of data you can use a loca cursor if you want, so you
> can use the same data modification detection techniques you already know
> (getNextModified(), etc) but at the end the data must go to the server, so
> no need to have a real table in local. Another approach is using an object
> whose properties are bound to the ControlSources (we use this approach in
> one of our apps), but in this case all the change-detection is by code
>
> - This seems a big project, so Source Control is very important. You have
> many options here, I suggest using a DVCS (Distributed Version Control
> System)
>
> If using git, then you have these projects available:
>
> Lutz Scheffler's "Bin 2 Text extension" at VFPx:
> http://vfpx.codeplex.com/wikipage?title=Bin%202%20Text%20Extension
>
> Mike Potjer's "Git Utils" at github:
> https://github.com/mikepotjer/vfp-git-utils
>
> If using Plastc, then you can use the "Plastic tools for Visual FoxPro 9":
> https://github.com/fdbozzo/plasticscm-tools-for-visual-foxpro-9
>
> If using another SCM/DVCS like SourceSafe, Mercurial or similar, then you
> can use FoxBin2Prg because of the two-way conversion between binaries and
> text:
> http://vfpx.codeplex.com/wikipage?title=FoxBin2Prg
>
> On the server side, you mentioned SQLServer. I suppose your client have a
> license, but if not, there is no need to buy one, you can use any DB, like
> PostgreSQL, MariaDB, etc, for free.
>
> Finally, if you want to test your code (more good practices:) in an
> automated or semi-automated way, then you can use the excellent Eric
> Selje's FoxUnit:
> http://vfpx.codeplex.com/wikipage?title=FoxUnit&referringTitle=Home
>
>
> May be others can add more on the SQL topic, articles or more resources.
>
>
> Fernando D. Bozzo
>
>
> 2017-02-03 17:50 GMT+01:00 Paul H. Tarver <paul@tpcqpc.com>:
>
>> Ok, from the range of answers I got back so far, all of which I appreciate
>> greatly, it is clear that I need to clarify my project and goals just a bit
>> in order to narrow the width of the discussion.
>>
>>
>>
>> Here's the situation and the parameters:
>>
>>
>>
>> 1) I have a client that is still using a btrieve based dos system that
>> I created 20+ years ago to keep up with the names, addresses and activities
>> of in excess of 30k+ members. The system creates a lot of specialized
>> reports for the client and they have been unwilling to move to anything
>> else
>> because of all the custom functionality built into the system. (In case you
>> are wondering, they are running the system on virtualized XP Pro systems as
>> the verision of btrieve they have dies on anything later.)
>>
>> 2) I want to upgrade them to a VFP9 + Windows user interface and
>> application in order to get them off the virtual machines, to take
>> advantage
>> of a lot of the speed and features available in VFP9 and I could certainly
>> completely re-write this system in VFP using native dbf table if I chose to
>> do so. HOWEVER.
>>
>> 3) In the long term, I can see a future for this client where they
>> have
>> a web-based front-end for members of their group to login remotely via the
>> web and maintain their demographic data themselves thereby de-centralizing
>> a
>> lot of the data entry process currently done by the home office.
>>
>> 4) Plus, I want the best of both worlds. I want the users in the
>> central office to take advantage of all the functionality I can bring to
>> them with VFP9 as a networked desktop application AND at some point I want
>> to add a web-based front-end for remote users to update various data
>> points.
>>
>>
>>
>>
>> The final requirement is not really a requirement but a desire on my part
>> to
>> learn how to best handle the data entry process and build the user
>> interface
>> functionality in VFP9 to create a desktop application using SQL as data
>> storage. I am used to creating a form with a tabbed pageframe on it,
>> creating a data grid on the first tab, adding some filter capabilities for
>> searches and then putting all the fields on the second or third or fourth
>> or
>> however many detail tabs I need to conveniently display the data I want the
>> user to edit, add, delete or save through a sub-classed button bar that I
>> drop on the form and connect to the table in question. My sub-classed tools
>> use CURSORGETPROP to detect any changes and prompt the user to save the
>> buffered changes if necessary.
>>
>>
>>
>> I have come to the understanding from all I've read that this method of
>> providing grid based data entry screens for users (while perfectly workable
>> in my data interface projects) will not be as efficient when it comes to
>> using SQL instead of native DBFs. I have also read lots of different
>> opinions on how best to let the user search for the specific record they
>> want to use and I have tried to review as many programs as I can to get
>> some
>> sense of the generally accepted method that makes the most sense for a best
>> practices user interface but no joy so far. Once a user finds the record in
>> question, I need to figure out what code snippets I need to build to detect
>> changes and push the updates back to the SQL database and all the other
>> stuff that goes along with that.
>>
>>
>>
>> My hope was that someone could point me toward some good VFP examples or
>> articles specific to VFP that outlines the best practices that seemed to
>> work best. I am not interested in moving to a development tool other than
>> VFP9, because my personal goal in doing the project is to give me a way to
>> learn to program the best user interface I can with VFP as the front-end
>> and
>> SQL as the backend.
>>
>>
>>
>> Hopefully that clarifies my original question just a bit.
>>
>>
>>
>> Paul H. Tarver
>> Tarver Program Consultants, Inc.
>>
>>
>>
>>
>>
>> --- StripMime Report -- processed MIME parts ---
>> multipart/alternative
>> text/plain (text body -- kept)
>> text/html
>> ---
>>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/5c7543a8-fda7-e33d-9461-4d403a4fb8f9@foxincloud.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
> redo it again for the web
Sounds old school! FoxInCloud can save you that pain… ;)
Thierry Nivelet
FoxInCloud
Give your VFP app a second life in the cloud
Le 03/02/2017 à 20:22, Stephen Russell a écrit :
> I read that you are doing a 100% rewrite and none of it is in fox-anything?
>
>
> That new system will also have a data and a lot of reports.
>
> In the future you want to go and redo it again for the web, but not now.
>
> Looks like twice the work in reality unless you process most of the data on
> the backend and just about every request gives you a dataset back, updates
> and edits don't return a lot of data yeah I know.
>
> Here at work the word twice would get the project killed. Do it once for
> now and the future.
>
> You may not know anything about programming UI for the web and that is why
> you'll do it first and then maybe come back. How long do you think it will
> take just to port it into Fox? 3 months or 6?
>
> On Fri, Feb 3, 2017 at 10:50 AM, Paul H. Tarver <paul@tpcqpc.com> wrote:
>
>> Ok, from the range of answers I got back so far, all of which I appreciate
>> greatly, it is clear that I need to clarify my project and goals just a bit
>> in order to narrow the width of the discussion.
>>
>>
>>
>> Here's the situation and the parameters:
>>
>>
>>
>> 1) I have a client that is still using a btrieve based dos system that
>> I created 20+ years ago to keep up with the names, addresses and activities
>> of in excess of 30k+ members. The system creates a lot of specialized
>> reports for the client and they have been unwilling to move to anything
>> else
>> because of all the custom functionality built into the system. (In case you
>> are wondering, they are running the system on virtualized XP Pro systems as
>> the verision of btrieve they have dies on anything later.)
>>
>> 2) I want to upgrade them to a VFP9 + Windows user interface and
>> application in order to get them off the virtual machines, to take
>> advantage
>> of a lot of the speed and features available in VFP9 and I could certainly
>> completely re-write this system in VFP using native dbf table if I chose to
>> do so. HOWEVER.
>>
>> 3) In the long term, I can see a future for this client where they
>> have
>> a web-based front-end for members of their group to login remotely via the
>> web and maintain their demographic data themselves thereby de-centralizing
>> a
>> lot of the data entry process currently done by the home office.
>>
>> 4) Plus, I want the best of both worlds. I want the users in the
>> central office to take advantage of all the functionality I can bring to
>> them with VFP9 as a networked desktop application AND at some point I want
>> to add a web-based front-end for remote users to update various data
>> points.
>>
>>
>>
>>
>> The final requirement is not really a requirement but a desire on my part
>> to
>> learn how to best handle the data entry process and build the user
>> interface
>> functionality in VFP9 to create a desktop application using SQL as data
>> storage. I am used to creating a form with a tabbed pageframe on it,
>> creating a data grid on the first tab, adding some filter capabilities for
>> searches and then putting all the fields on the second or third or fourth
>> or
>> however many detail tabs I need to conveniently display the data I want the
>> user to edit, add, delete or save through a sub-classed button bar that I
>> drop on the form and connect to the table in question. My sub-classed tools
>> use CURSORGETPROP to detect any changes and prompt the user to save the
>> buffered changes if necessary.
>>
>>
>>
>> I have come to the understanding from all I've read that this method of
>> providing grid based data entry screens for users (while perfectly workable
>> in my data interface projects) will not be as efficient when it comes to
>> using SQL instead of native DBFs. I have also read lots of different
>> opinions on how best to let the user search for the specific record they
>> want to use and I have tried to review as many programs as I can to get
>> some
>> sense of the generally accepted method that makes the most sense for a best
>> practices user interface but no joy so far. Once a user finds the record in
>> question, I need to figure out what code snippets I need to build to detect
>> changes and push the updates back to the SQL database and all the other
>> stuff that goes along with that.
>>
>>
>>
>> My hope was that someone could point me toward some good VFP examples or
>> articles specific to VFP that outlines the best practices that seemed to
>> work best. I am not interested in moving to a development tool other than
>> VFP9, because my personal goal in doing the project is to give me a way to
>> learn to program the best user interface I can with VFP as the front-end
>> and
>> SQL as the backend.
>>
>>
>>
>> Hopefully that clarifies my original question just a bit.
>>
>>
>>
>> Paul H. Tarver
>> Tarver Program Consultants, Inc.
>>
>>
>>
>>
>>
>> --- StripMime Report -- processed MIME parts ---
>> multipart/alternative
>> text/plain (text body -- kept)
>> text/html
>> ---
>>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/ac65dd54-bc70-afec-4026-f6fba46630f2@foxincloud.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Now we are getting to hear to the heart of what I'm looking for,
specifically your first point, Fernado: Changing my VFP grid mentality into
something that is scalable for a client server approach for the data
storage. Fundamentally, the questions I have are: What does the best
practices user interface for updating data look like in a client/server
environment vs native VFP desktop, and what are the general things required
to make that work. In my standard environment it works like this:
1) open a table in buffered mode
2) let the user browse that data
3) user choices record to edit
4) user edits field and when field loses focus, we check to see if there
were any changes.
5) If changes detected, we enable a "save" button and if the user tries to
exit the screen without clicking "save" we prompt them to save or discard.
6) If 'save' option made by clicking button or confirming save query, then
new data is written to table.
I am aware that this outline of procedure would necessarily be different in
the client/server configuration and that is exactly what I'm trying to
determine and what are the best ways to implement that client/server
approach.
Your information was very helpful and answered a couple of questions for me
already.
Do you know of any applications out there that are written in VFP with a
client/server backend that might have a demo that I can review or try in
order to get some ideas?
Thanks again!
Paul H. Tarver
Tarver Program Consultants, Inc.
-----Original Message-----
From: Fernando D. Bozzo [mailto:fdbozzo@gmail.com]
Sent: Friday, February 03, 2017 1:11 PM
To: profoxtech@leafe.com
Subject: Re: SQL Backend Question - Part Deux
Hi Paul,
now it's much clear what you want. At first seemed to me like you wanted to
change technology.
Ok, so these are just some points about general good practices applied on
VFP and used in practice in my experience:
- Forget grids, or at least forget showing ALL the data to the user. This do
not work with C/S system, because do not scale. You will need predefined
filters on the search screens, so the user can change them, but never take
out all of them, so the query to the server brings a limited scope of
records. You can bring records in chunks if you need to show something with
"more records" or "next page" or similar, but never bring all the data.
That's fundamental.
- You can cache part of the data for those tables that are hevily used if
needed, maybe a view that updates from time to time based on a datetime
timestamp for synchronizing
- All logic that you can put on the database, is reusable by other fronts.
In some cases some processes are faster on the database
- Forget about locking records. There are no such thing on C/S systems
(well, technically you can, but it's really a bad idea)
- If going to web in some point, then Thierry's FoxInCloud could be a good
idea
- For local editing of data you can use a loca cursor if you want, so you
can use the same data modification detection techniques you already know
(getNextModified(), etc) but at the end the data must go to the server, so
no need to have a real table in local. Another approach is using an object
whose properties are bound to the ControlSources (we use this approach in
one of our apps), but in this case all the change-detection is by code
- This seems a big project, so Source Control is very important. You have
many options here, I suggest using a DVCS (Distributed Version Control
System)
If using git, then you have these projects available:
Lutz Scheffler's "Bin 2 Text extension" at VFPx:
http://vfpx.codeplex.com/wikipage?title=Bin%202%20Text%20Extension
Mike Potjer's "Git Utils" at github:
https://github.com/mikepotjer/vfp-git-utils
If using Plastc, then you can use the "Plastic tools for Visual FoxPro 9":
https://github.com/fdbozzo/plasticscm-tools-for-visual-foxpro-9
If using another SCM/DVCS like SourceSafe, Mercurial or similar, then you
can use FoxBin2Prg because of the two-way conversion between binaries and
text:
http://vfpx.codeplex.com/wikipage?title=FoxBin2Prg
On the server side, you mentioned SQLServer. I suppose your client have a
license, but if not, there is no need to buy one, you can use any DB, like
PostgreSQL, MariaDB, etc, for free.
Finally, if you want to test your code (more good practices:) in an
automated or semi-automated way, then you can use the excellent Eric Selje's
FoxUnit:
http://vfpx.codeplex.com/wikipage?title=FoxUnit&referringTitle=Home
May be others can add more on the SQL topic, articles or more resources.
Fernando D. Bozzo
2017-02-03 17:50 GMT+01:00 Paul H. Tarver <paul@tpcqpc.com>:
> Ok, from the range of answers I got back so far, all of which I
> appreciate greatly, it is clear that I need to clarify my project and
> goals just a bit in order to narrow the width of the discussion.
>
>
>
> Here's the situation and the parameters:
>
>
>
> 1) I have a client that is still using a btrieve based dos system
that
> I created 20+ years ago to keep up with the names, addresses and
> activities of in excess of 30k+ members. The system creates a lot of
> specialized reports for the client and they have been unwilling to
> move to anything else because of all the custom functionality built
> into the system. (In case you are wondering, they are running the
> system on virtualized XP Pro systems as the verision of btrieve they
> have dies on anything later.)
>
> 2) I want to upgrade them to a VFP9 + Windows user interface and
> application in order to get them off the virtual machines, to take
> advantage of a lot of the speed and features available in VFP9 and I
> could certainly completely re-write this system in VFP using native
> dbf table if I chose to do so. HOWEVER.
>
> 3) In the long term, I can see a future for this client where they
> have
> a web-based front-end for members of their group to login remotely via
> the web and maintain their demographic data themselves thereby
> de-centralizing a lot of the data entry process currently done by the
> home office.
>
> 4) Plus, I want the best of both worlds. I want the users in the
> central office to take advantage of all the functionality I can bring
> to them with VFP9 as a networked desktop application AND at some point
> I want to add a web-based front-end for remote users to update various
> data points.
>
>
>
>
> The final requirement is not really a requirement but a desire on my
> part to learn how to best handle the data entry process and build the
> user interface functionality in VFP9 to create a desktop application
> using SQL as data storage. I am used to creating a form with a tabbed
> pageframe on it, creating a data grid on the first tab, adding some
> filter capabilities for searches and then putting all the fields on
> the second or third or fourth or however many detail tabs I need to
> conveniently display the data I want the user to edit, add, delete or
> save through a sub-classed button bar that I drop on the form and
> connect to the table in question. My sub-classed tools use
> CURSORGETPROP to detect any changes and prompt the user to save the
> buffered changes if necessary.
>
>
>
> I have come to the understanding from all I've read that this method
> of providing grid based data entry screens for users (while perfectly
> workable in my data interface projects) will not be as efficient when
> it comes to using SQL instead of native DBFs. I have also read lots of
> different opinions on how best to let the user search for the specific
> record they want to use and I have tried to review as many programs as
> I can to get some sense of the generally accepted method that makes
> the most sense for a best practices user interface but no joy so far.
> Once a user finds the record in question, I need to figure out what
> code snippets I need to build to detect changes and push the updates
> back to the SQL database and all the other stuff that goes along with
> that.
>
>
>
> My hope was that someone could point me toward some good VFP examples
> or articles specific to VFP that outlines the best practices that
> seemed to work best. I am not interested in moving to a development
> tool other than VFP9, because my personal goal in doing the project is
> to give me a way to learn to program the best user interface I can
> with VFP as the front-end and SQL as the backend.
>
>
>
> Hopefully that clarifies my original question just a bit.
>
>
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
>
>
>
> --- StripMime Report -- processed MIME parts --- multipart/alternative
> text/plain (text body -- kept)
> text/html
> ---
>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/090a01d27e63$2e978630$8bc69290$@tpcqpc.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Stephen,
You mis-understood my plan. The plan is for the networked desktop VFP
application to remain in place indefinitely. The web portion, if it ever
comes into being would be written in something other than VFP but would
access the same SQL database used by the VFP.
VFP Desktop Backend <-----> {SQL, MySQL, Firebird, Postgres,etc}
<------> Web Application Frontend
I've already build a similar setup building on a VFP backend desktop
application with native DBF files that synchronizes with a FirebirdSQL
database which is used by a web front running on a Java server. There are
two problems with that configuration: 1) even though we are close to
real-time updates, we still aren't really real-time because a synch process
must be run to refresh the data on both sides (not a bad or long process but
definitely not real-time), and 2) it was built several years ago in Java and
I won't repeat that process. Most likely in the future I will use a much
friendlier development tool to build the front-end.
I have even considered using MySQL as the database so I could potentially
use Wordpress as the frontend platform, let Wordpress handle the login
security, and write a plugin to give the user access to their data after
they login. Just a thought.
Hope this helps!
Paul H. Tarver
Tarver Program Consultants, Inc.
Tel: 601-483-4404
Email: paul@tpcqpc.com
-----Original Message-----
From: Stephen Russell [mailto:srussell705@gmail.com]
Sent: Friday, February 03, 2017 1:22 PM
To: profoxtech@leafe.com
Subject: Re: SQL Backend Question - Part Deux
I read that you are doing a 100% rewrite and none of it is in fox-anything?
That new system will also have a data and a lot of reports.
In the future you want to go and redo it again for the web, but not now.
Looks like twice the work in reality unless you process most of the data on
the backend and just about every request gives you a dataset back, updates
and edits don't return a lot of data yeah I know.
Here at work the word twice would get the project killed. Do it once for
now and the future.
You may not know anything about programming UI for the web and that is why
you'll do it first and then maybe come back. How long do you think it will
take just to port it into Fox? 3 months or 6?
On Fri, Feb 3, 2017 at 10:50 AM, Paul H. Tarver <paul@tpcqpc.com> wrote:
> Ok, from the range of answers I got back so far, all of which I
> appreciate greatly, it is clear that I need to clarify my project and
> goals just a bit in order to narrow the width of the discussion.
>
>
>
> Here's the situation and the parameters:
>
>
>
> 1) I have a client that is still using a btrieve based dos system
that
> I created 20+ years ago to keep up with the names, addresses and
> activities of in excess of 30k+ members. The system creates a lot of
> specialized reports for the client and they have been unwilling to
> move to anything else because of all the custom functionality built
> into the system. (In case you are wondering, they are running the
> system on virtualized XP Pro systems as the verision of btrieve they
> have dies on anything later.)
>
> 2) I want to upgrade them to a VFP9 + Windows user interface and
> application in order to get them off the virtual machines, to take
> advantage of a lot of the speed and features available in VFP9 and I
> could certainly completely re-write this system in VFP using native
> dbf table if I chose to do so. HOWEVER.
>
> 3) In the long term, I can see a future for this client where they
> have
> a web-based front-end for members of their group to login remotely via
> the web and maintain their demographic data themselves thereby
> de-centralizing a lot of the data entry process currently done by the
> home office.
>
> 4) Plus, I want the best of both worlds. I want the users in the
> central office to take advantage of all the functionality I can bring
> to them with VFP9 as a networked desktop application AND at some point
> I want to add a web-based front-end for remote users to update various
> data points.
>
>
>
>
> The final requirement is not really a requirement but a desire on my
> part to learn how to best handle the data entry process and build the
> user interface functionality in VFP9 to create a desktop application
> using SQL as data storage. I am used to creating a form with a tabbed
> pageframe on it, creating a data grid on the first tab, adding some
> filter capabilities for searches and then putting all the fields on
> the second or third or fourth or however many detail tabs I need to
> conveniently display the data I want the user to edit, add, delete or
> save through a sub-classed button bar that I drop on the form and
> connect to the table in question. My sub-classed tools use
> CURSORGETPROP to detect any changes and prompt the user to save the
> buffered changes if necessary.
>
>
>
> I have come to the understanding from all I've read that this method
> of providing grid based data entry screens for users (while perfectly
> workable in my data interface projects) will not be as efficient when
> it comes to using SQL instead of native DBFs. I have also read lots of
> different opinions on how best to let the user search for the specific
> record they want to use and I have tried to review as many programs as
> I can to get some sense of the generally accepted method that makes
> the most sense for a best practices user interface but no joy so far.
> Once a user finds the record in question, I need to figure out what
> code snippets I need to build to detect changes and push the updates
> back to the SQL database and all the other stuff that goes along with
> that.
>
>
>
> My hope was that someone could point me toward some good VFP examples
> or articles specific to VFP that outlines the best practices that
> seemed to work best. I am not interested in moving to a development
> tool other than VFP9, because my personal goal in doing the project is
> to give me a way to learn to program the best user interface I can
> with VFP as the front-end and SQL as the backend.
>
>
>
> Hopefully that clarifies my original question just a bit.
>
>
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
>
>
>
> --- StripMime Report -- processed MIME parts --- multipart/alternative
> text/plain (text body -- kept)
> text/html
> ---
>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/090f01d27e64$97f1c7c0$c7d55740$@tpcqpc.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
You can just use a parameterized remote view or cursor adapter :
procedure form.load()
use removeView nodata
procedure form.Init()
viewParm = someValue
requery(remoteView)
FOR EACH loCntl IN this.Controls FOXOBJECT
BindEvent(m.loCntl, 'LostFocus', m.this.cmdCancel, 'Refresh’)
BindEvent(m.loCntl, 'LostFocus', m.this.cmdSave, 'Refresh')
BindEvent(m.loCntl, 'LostFocus', m.thisForm.cmdOK, 'Refresh')
ENDFOR
procedure cmdCancel.Refresh
this.Enabled = thisForm.lCustomerModified()
procedure lCustomerModified
* Has customer been modified?
LOCAL lnRecno, llResult
lnRecno = Recno('v_customer') && Buffering 5
GO TOP IN v_customer
llResult = GetNextModified(0, 'v_customer', .T.) > 0
IF m.lnRecno < 0 OR Between(m.lnRecno, 1, Reccount('v_customer'))
GO m.lnRecno IN v_customer
ENDIF
RETURN m.llResult
Thierry Nivelet
FoxInCloud
Give your VFP app a second life in the cloud
http://foxincloud.com/ <http://foxincloud.com/>
Le 03/02/2017 à 22:19, Paul H. Tarver a écrit :
> Now we are getting to hear to the heart of what I'm looking for,
> specifically your first point, Fernado: Changing my VFP grid mentality into
> something that is scalable for a client server approach for the data
> storage. Fundamentally, the questions I have are: What does the best
> practices user interface for updating data look like in a client/server
> environment vs native VFP desktop, and what are the general things required
> to make that work. In my standard environment it works like this:
>
> 1) open a table in buffered mode
> 2) let the user browse that data
> 3) user choices record to edit
> 4) user edits field and when field loses focus, we check to see if there
> were any changes.
> 5) If changes detected, we enable a "save" button and if the user tries to
> exit the screen without clicking "save" we prompt them to save or discard.
> 6) If 'save' option made by clicking button or confirming save query, then
> new data is written to table.
>
> I am aware that this outline of procedure would necessarily be different in
> the client/server configuration and that is exactly what I'm trying to
> determine and what are the best ways to implement that client/server
> approach.
>
> Your information was very helpful and answered a couple of questions for me
> already.
>
> Do you know of any applications out there that are written in VFP with a
> client/server backend that might have a demo that I can review or try in
> order to get some ideas?
>
> Thanks again!
>
> Paul H. Tarver
> Tarver Program Consultants, Inc.
>
>
> -----Original Message-----
> From: Fernando D. Bozzo [mailto:fdbozzo@gmail.com <mailto:fdbozzo@gmail.com>]
> Sent: Friday, February 03, 2017 1:11 PM
> To: profoxtech@leafe.com <mailto:profoxtech@leafe.com>
> Subject: Re: SQL Backend Question - Part Deux
>
> Hi Paul,
>
> now it's much clear what you want. At first seemed to me like you wanted to
> change technology.
>
> Ok, so these are just some points about general good practices applied on
> VFP and used in practice in my experience:
>
> - Forget grids, or at least forget showing ALL the data to the user. This do
> not work with C/S system, because do not scale. You will need predefined
> filters on the search screens, so the user can change them, but never take
> out all of them, so the query to the server brings a limited scope of
> records. You can bring records in chunks if you need to show something with
> "more records" or "next page" or similar, but never bring all the data.
> That's fundamental.
>
> - You can cache part of the data for those tables that are hevily used if
> needed, maybe a view that updates from time to time based on a datetime
> timestamp for synchronizing
>
> - All logic that you can put on the database, is reusable by other fronts.
> In some cases some processes are faster on the database
>
> - Forget about locking records. There are no such thing on C/S systems
> (well, technically you can, but it's really a bad idea)
>
> - If going to web in some point, then Thierry's FoxInCloud could be a good
> idea
>
> - For local editing of data you can use a loca cursor if you want, so you
> can use the same data modification detection techniques you already know
> (getNextModified(), etc) but at the end the data must go to the server, so
> no need to have a real table in local. Another approach is using an object
> whose properties are bound to the ControlSources (we use this approach in
> one of our apps), but in this case all the change-detection is by code
>
> - This seems a big project, so Source Control is very important. You have
> many options here, I suggest using a DVCS (Distributed Version Control
> System)
>
> If using git, then you have these projects available:
>
> Lutz Scheffler's "Bin 2 Text extension" at VFPx:
> http://vfpx.codeplex.com/wikipage?title=Bin%202%20Text%20Extension <http://vfpx.codeplex.com/wikipage?title=Bin%202%20Text%20Extension>
>
> Mike Potjer's "Git Utils" at github:
> https://github.com/mikepotjer/vfp-git-utils <https://github.com/mikepotjer/vfp-git-utils>
>
> If using Plastc, then you can use the "Plastic tools for Visual FoxPro 9":
> https://github.com/fdbozzo/plasticscm-tools-for-visual-foxpro-9 <https://github.com/fdbozzo/plasticscm-tools-for-visual-foxpro-9>
>
> If using another SCM/DVCS like SourceSafe, Mercurial or similar, then you
> can use FoxBin2Prg because of the two-way conversion between binaries and
> text:
> http://vfpx.codeplex.com/wikipage?title=FoxBin2Prg <http://vfpx.codeplex.com/wikipage?title=FoxBin2Prg>
>
> On the server side, you mentioned SQLServer. I suppose your client have a
> license, but if not, there is no need to buy one, you can use any DB, like
> PostgreSQL, MariaDB, etc, for free.
>
> Finally, if you want to test your code (more good practices:) in an
> automated or semi-automated way, then you can use the excellent Eric Selje's
> FoxUnit:
> http://vfpx.codeplex.com/wikipage?title=FoxUnit&referringTitle=Home <http://vfpx.codeplex.com/wikipage?title=FoxUnit&referringTitle=Home>
>
>
> May be others can add more on the SQL topic, articles or more resources.
>
>
> Fernando D. Bozzo
>
>
> 2017-02-03 17:50 GMT+01:00 Paul H. Tarver <paul@tpcqpc.com> <mailto:paul@tpcqpc.com>:
>
>> Ok, from the range of answers I got back so far, all of which I
>> appreciate greatly, it is clear that I need to clarify my project and
>> goals just a bit in order to narrow the width of the discussion.
>>
>>
>>
>> Here's the situation and the parameters:
>>
>>
>>
>> 1) I have a client that is still using a btrieve based dos system
> that
>> I created 20+ years ago to keep up with the names, addresses and
>> activities of in excess of 30k+ members. The system creates a lot of
>> specialized reports for the client and they have been unwilling to
>> move to anything else because of all the custom functionality built
>> into the system. (In case you are wondering, they are running the
>> system on virtualized XP Pro systems as the verision of btrieve they
>> have dies on anything later.)
>>
>> 2) I want to upgrade them to a VFP9 + Windows user interface and
>> application in order to get them off the virtual machines, to take
>> advantage of a lot of the speed and features available in VFP9 and I
>> could certainly completely re-write this system in VFP using native
>> dbf table if I chose to do so. HOWEVER.
>>
>> 3) In the long term, I can see a future for this client where they
>> have
>> a web-based front-end for members of their group to login remotely via
>> the web and maintain their demographic data themselves thereby
>> de-centralizing a lot of the data entry process currently done by the
>> home office.
>>
>> 4) Plus, I want the best of both worlds. I want the users in the
>> central office to take advantage of all the functionality I can bring
>> to them with VFP9 as a networked desktop application AND at some point
>> I want to add a web-based front-end for remote users to update various
>> data points.
>>
>>
>>
>>
>> The final requirement is not really a requirement but a desire on my
>> part to learn how to best handle the data entry process and build the
>> user interface functionality in VFP9 to create a desktop application
>> using SQL as data storage. I am used to creating a form with a tabbed
>> pageframe on it, creating a data grid on the first tab, adding some
>> filter capabilities for searches and then putting all the fields on
>> the second or third or fourth or however many detail tabs I need to
>> conveniently display the data I want the user to edit, add, delete or
>> save through a sub-classed button bar that I drop on the form and
>> connect to the table in question. My sub-classed tools use
>> CURSORGETPROP to detect any changes and prompt the user to save the
>> buffered changes if necessary.
>>
>>
>>
>> I have come to the understanding from all I've read that this method
>> of providing grid based data entry screens for users (while perfectly
>> workable in my data interface projects) will not be as efficient when
>> it comes to using SQL instead of native DBFs. I have also read lots of
>> different opinions on how best to let the user search for the specific
>> record they want to use and I have tried to review as many programs as
>> I can to get some sense of the generally accepted method that makes
>> the most sense for a best practices user interface but no joy so far.
>> Once a user finds the record in question, I need to figure out what
>> code snippets I need to build to detect changes and push the updates
>> back to the SQL database and all the other stuff that goes along with
>> that.
>>
>>
>>
>> My hope was that someone could point me toward some good VFP examples
>> or articles specific to VFP that outlines the best practices that
>> seemed to work best. I am not interested in moving to a development
>> tool other than VFP9, because my personal goal in doing the project is
>> to give me a way to learn to program the best user interface I can
>> with VFP as the front-end and SQL as the backend.
>>
>>
>>
>> Hopefully that clarifies my original question just a bit.
>>
>>
>>
>> Paul H. Tarver
>> Tarver Program Consultants, Inc.
>>
>>
>>
>>
>>
>> --- StripMime Report -- processed MIME parts --- multipart/alternative
>> text/plain (text body -- kept)
>> text/html
>> ---
>>
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/F74EF33E-64C4-415E-A684-674428A5993C@foxincloud.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
According to Wikipedia the latest offering from Btrieve is backwards
compatible and runs on Win10
https://en.wikipedia.org/wiki/Btrieve#Pervasive_PSQL_v9
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/fce3a2a1-1472-f6bb-0022-22d4d1e6641d@hawthorncottage.com
** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.