Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Rushmore?
Message
From
10/01/2005 09:12:28
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Title:
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows XP SP2
Database:
Visual FoxPro
Miscellaneous
Thread ID:
00975618
Message ID:
00975630
Views:
13
>Is there any way to create Optimazible VFP local view. Current definition of the view is:
>
>CREATE SQL VIEW HonVed AS SELECT Hon.*, Homo.Ime;
>                FROM  honorar!hon  LEFT OUTER JOIN honorar!homo    ON  Hon.egn = Homo.egn+;
>                WHERE Hon.dataved = ?getdataved+;                  && Date field
>                AND IIF(hon_ved1,Hon.lev1==?get_lev1,.T.) = .T.+;  && Integer field
>                AND IIF(hon_ved2,Hon.lev2==?get_lev2,.T.) = .T.+;  && Integer field
>                AND IIF(hon_ved3,Hon.lev3==?get_lev3,.T.) = .T.    && Integer field
>
>
>I want this view to be optimazible
>User can change values of the hon_ved1,2,3
>How to Index Hon when some fields (Lev1, Lev2, Lev3) can contains Data # 0 but not take part in the view?
>i.e. Lev1 can contains Data # 0 but hov_ved1 can be .F. etc. so I can't index my Table (hon) on
>INDEX ON DTOS(DataVed)+STR(Lev1)+STR(Lev2)+STR(Lev3).
>Is there another way to make this View optimazable instead each time the user change values of hon_ved1,2,3 I regenerate the View?
>
>TIA

try
CREATE SQL VIEW HonVed AS SELECT Hon.*, Homo.Ime;
                FROM  honorar!hon  LEFT OUTER JOIN honorar!homo    ON  Hon.egn = Homo.egn;
                WHERE Hon.dataved = ?getdataved;                  && Date field
                AND (!m.hon_ved1 OR Hon.lev1==?get_lev1);  && Integer field
                AND (!m.hon_ved2 OR Hon.lev2==?get_lev2);  && Integer field
                AND (!m.hon_ved3 OR Hon.lev3==?get_lev3)   && Integer field
<PRE>

Next can do the job only if hon_vedN+1 =.T. => hon_vedN =.T.
<pre>
...
                WHERE DTOS(Hon.dataved)+STR(Hon.Lev1)+STR(Hon.Lev2)+STR(Hon.Lev3);
                       = ?getdataved+;
                   +IIF(m.hon_ved1,?STR(get_lev1),'') );
                   +IIF((m.hon_ved2,?STR(STget_lev2),''));
                   +IIF(!m.hon_ved3,?STR(get_lev3),''))
* OR
                WHERE DTOS(Hon.dataved)+STR(Hon.Lev1)+STR(Hon.Lev2)+STR(Hon.Lev3);
                       LIKE ?getdataved+;
                   +IIF(m.hon_ved1,?STR(get_lev1),'%') );
                   +IIF((m.hon_ved2,?STR(STget_lev2),'%'));
                   +IIF(!m.hon_ved3,?STR(get_lev3),'%'))
next can do the job without restrictions, but optimization ????
* VFP9
...
                WHERE DTOS(Hon.dataved)+STR(Hon.Lev1)+STR(Hon.Lev2)+STR(Hon.Lev3);
                       LIKE ?getdataved+;
                   +IIF(m.hon_ved1,?STR(get_lev1),'??????????') );
                   +IIF((m.hon_ved2,?STR(STget_lev2),'??????????'));
                   +IIF(!m.hon_ved3,?STR(get_lev3),'??????????'))
why not BINTOC() ?

fabio
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform