Newsgroup: it.comp.lang.vo-clipper
Titolo: OrderScope con gli NTX

Ciao a tutti,
avendo usato sempre files DBF con indici CDX, notavo in questi giorni
che usando invece gli indici NTX, i metodi OrderScope (e simili) non
funzionano.
La cosa risulta anche a voi ?
Saluti,
Antonello

,

Sent via Deja.com 
http://www.deja.com/
Before you buy.

A me hanno dato diversi problemi e li ho definitivamente mollati.
anch'io non li utilizzo più, però sto' lavorando su un'applicazione
vecchiotta e non posso quindi utilizzare i CDX.
Penso che farò un bel indice condizionale sul campo che mi interessa
e via :-))
Antonello.
Saluti,
Antonello

 La cosa risulta anche a voi ?
Si, certo. E' normale. Comunque anche con gli NTX c'è la possibilità di
creare degli scope con due tecniche:
1. Attraverso gli indici condizionali.
2. Attraverso la tecnica di real-time ranging (termine che mi sono
inventato sul momento, ma la tecnica esiste da molti anni).
EMG

inventato sul momento, ma la tecnica esiste da molti anni).
cosa sarebbe ? 
Antonello
--------------------------------------------------------------
The stolen bug
Antonello

ORDSETSCOPE() degli RDD piů evoluti, anche riguardo all'efficienza.
bello, non ci avevo mai pensato, effettivamente da un approccio di 
questo tipo si potrebbero addirittura fare dei JOIN e altre cose,
come ho fatto a non pensarci prima ? 
Grazie per la info,
Antonello.

 come ho fatto a non pensarci prima ?
Spesso le cose sfuggono fino a che qualcun'altro non te le fa vedere.
Comunque l'idea non č mia. E la realizzazione non č tanto semplice.
Pensa che quando ho scritto quella funzione č stata l'unica volta nella
mia quasi ventennale carriera di programmatore che ho dovuto utilizzare
un debugger (non lo usavo neanche per programmare in Assembly). E
inoltre ci sono dovuto tornare sopra diverse volte. Non č infatti facile
capire cosa fa il sistema in corrispondenza delle varie fasi di gestione
di un indice. Comunque se ti interessa dovrei averla ancora su un
dischetto (da quando uso NSX prima e Comix ora l'ho chiaramente
abbandonata).
EMG

 come ho fatto a non pensarci prima ?
Prova scaricare questo:
ftp://ftp.alaska-software.com/weblib/acsn/SCOPE.ZIP
E' scritto per Alaska xBase++, ma dovrebbe funzionare anche in clipper
non si appoggia a SET FILTER, sostituisce le funzioni skip, seek, go top
go bottom e dbeval con funzioni che tengono conto dello scope.
Ciao...
Claudio Driussi
http://www.swit.net/csoft
mailto:
cldr...@swit.net

abbandonata).
Anch'io non uso + gli NTX, tra l'altro il problema che avevo riportato
l'ho risolto in un altro modo, ma già penso ad utilizzi della
SetFilter() con i CDX e una funzione per eseguire JOIN su + tabelle
per ottenere prestazioni da paura...o almeno spero.
Tra l'altro ne approfitto per buttare un'idea di questi giorni, mi
piacerebbe cioè fare un motore di database residente su server, tipo
ADS, ma leggero e (soprattutto) free.
Ma forse è meglio cominciare un nuovo tread, "[VO - CL] MOTORE
DATABASE"
Antonello.

 go bottom e dbeval con funzioni che tengono conto dello scope.
La soluzione in se sembra buona ma temo che non possa funzionare con gli
NTX. All'inizio del sorgente c'è infatti scritto che usa alcune
particolarità tecniche dell'xBase++ e nell'esempio lo scope per il
Clipper è ottenuto semplicemente chiamando la funzione CmxSetScope()
delle Comix.
EMG

Enrico Maria Giordano ha scritto:

in xBase++ il trucco consiste nel rimappare le funzioni standard di Clipper,
ad esempio dbSkip diventa _dbSkip, non so se Clipper permette questo
ma comunque si puo' aggirare con il preprocessore, ad esempio in 
std.ch
skip viene tradotto in:
#command SKIP                   => dbSkip(1)
#command SKIP <n>               => dbSkip( <n> )
#command SKIP ALIAS <a>         => <a> -> ( dbSkip(1) )
#command SKIP <n> ALIAS <a>     => <a> -> ( dbSkip(<n>) )
e' sufficente trasformare in:
#command SKIP                   => _dbSkip(1)
#command SKIP <n>               => _dbSkip( <n> )
#command SKIP ALIAS <a>         => <a> -> ( _dbSkip(1) )
#command SKIP <n> ALIAS <a>     => <a> -> ( _dbSkip(<n>) )
certo non e' banale, ma e' una via percorribile.


 certo non e' banale, ma e' una via percorribile.
Bisognerebbe anche riprocessare le chiamate alle normali funzioni:
#translate dbSkip( nSkip ) => _dbSkip( nSkip )
e cosě via. Inoltre non sono convinto che questo copra tutte le
situazioni. Comunque il discorso č: ne vale la pena, dato che gli NTX
non valgono una cicca e gli RDD decenti offrono i comodi comandi
ORDSCOPE() e compagnia?
EMG

 ORDSCOPE() e compagnia?
Sono d'accordo con te, infatti a me non serve perche' uso gli NSX,
comunque potrebbe essere utile per i CDX standard di Clipper.


 comunque potrebbe essere utile per i CDX standard di Clipper.
Quelli del 5.3 hanno i normali comandi di scoping (sono esattamente i
Comix). Immagino ti riferissi a quelli del 5.2.
EMG

 Comix). Immagino ti riferissi a quelli del 5.2.
infatti, purtroppo sto ancora usando la 5.2, sto cercando di passare
a xBase++, ma ormai non sono piu' ottimista, quello che riesco a fare
con la 5.2 e' difficile da fare con altri sistemi di sviluppo.
So che usi FiveWin, e volevo chiederti un paio di cose:
Si usa il sistema Get, oppure si usano controlli windows? se e' cosi'
si riesce gestire validazioni di campi ecc...
si puo' fare il browsing di arrays come si riesce a fare con i TBrowse
di Clipper?
Grazie.


 mailto:
cldr...@swit.net
--
by(e) Doriano.
E-MAIL: doria~N~o@skyli~N~
k.it
PS: sostituisci  ~N~ con n per rispondere...
        To reply, replace ~N~ with n

 di Clipper?
Certo, e molto piů comodamente. Es.:
#include "Fivewin.ch"
FUNCTION MAIN()
    LOCAL oDlg
    USE CLIENTI INDEX CLIENTI
    DEFINE DIALOG oDlg;
           RESOURCE "PROVA";
           TITLE "Prova di finestra di dialogo con browser"
    REDEFINE LISTBOX FIELDS CLIENTI -> nome,;
                            CLIENTI -> indirizzo;
             HEADER "CLIENTE", "INDIRIZZO";
             ID 101 OF oDlg
    ACTIVATE DIALOG oDlg;
             CENTER
    CLOSE
    RETURN NIL
Le clausole che ti ho mostrato sono solo una minima parte di quelle
presenti. E se non bastano, proprio come in Clipper DOS, si puň scendere
a livello di variabili e metodi delle classi e, se ancora non basta, si
puň scendere ulteriormente al livello di API di Windows. Inoltre hai
tutti i sorgenti per cui puoi fare qualsiasi cosa ti passi per la testa.
EMG

 puň scendere ulteriormente al livello di API di Windows.
Pero' e' sempre un eseguibile a 16 bit, almeno finche' non decolla
Harbour Project.
Io ho Blinker 3.20 e' sufficente o devo prendere una versione nuova?
Ed i report?


 Ed i report?
C'è una splendida classe TReport, molto comoda, e, per le stampe più
complesse, la classe TPrinter, meno comoda ma più versatile, entrambe
dotate di anteprima di stampa automatica.
EMG

 dotate di anteprima di stampa automatica.
Non so, sono ancora indeciso (e' la mia sventura) e' bello anche xBase++
che ha molti pregi, ad esempio ha una bella gestione dei thread,
forse l'accoppiata migliore potrebbe essere proprio xBase++ + FiveWin,
staremo a vedere.


 se proprio uno ne ha necessita', puo' provare.
Ci sono le classi sulle quali è invece abbastanza facile intervenire
(sia modificandone direttamente i sorgenti e sia, meglio, ereditando
classi personalizzate). Non esiste il Get system nel senso di collante
che gestisce la navigazione tra un controllo e l'altro (a quello ci
pensa Windows stesso).
EMG