Newsgroup: it.comp.lang.visual-basic
Titolo: Compattare database (DB3)

Quando si cancellano record da un database,  vengono fisicamente eliminati
con l'istruzione
compatta x access, shrink x SQL o pack per i DBF .
Come posso richiamare tale funzionalità con VB ?
Ho provato con l'oggetto jro, ma va bene solo x access (jet)
io ho bisogno di farlo con i DBF !!!
Grazie
Federico Manfrin
Intesys Srl
via Pasubio 3/A
36030 CALDOGNO (Vicenza) ITALY
ph. 
+39 0444 905440
  fax 
+39 0444 905441
www.intesys-srl.it
in...@intesys-srl.it

 io ho bisogno di farlo con i DBF !!!
Ma Jet non va bene anche per i DBF?
Ciao
Alberto

 Ma Jet non va bene anche per i DBF?
ne dubito fortemente. non gestisce neanche set dele on/off, e i record
li vede comunque, anche quelli marcati deleted. il che rende il pack
piu' necessario.
ho l'impressione che vada usato dbase.

 ha scritto nel messaggio
news:asla4k$sg4lg$1...@ID-51318.news.dfncis.de...

Ho provato con jet, ma mi dice espressamente (non posso riportare la scritta
corretta xchè fortunatamente non sono al lavoro adesso ...) che il jet non
riesce a manipolare
il DBF (una cosa come l'oggetto non è adatto a fare cio che gli hai chiesto)
Potresti gentilmente essere più preciso su dbase , cos'è ? un oggetto ?
grazie

 grazie
bei tempi, un millennio fa :)
ti prego di scusarmi, ma faccio fatica a sintetizzare.
dBase III+ e' stato direi il programma che ha diffuso i dbf. fa' conto
un access a interfaccia carattere, e a onor del vero molto piu'
rudimentale. potevi strutturare le tabelle, modificarle, metterle in
relazione, e farci della programmazione. come nel caso di access, per
far girare i .prg avevi bisogno del runtime, cioe' dbase stesso.
potevi usare gli indici, con un limite mi sembra di 100 caratteri
sulla chiave. pero' erano valide formule come
    inde on subs(cognome,100) to cognome[.ndx]
sempre che mi ricordi la sintassi :)
dbase IV era piu' pesante ma con alcune migliorie. indici con
estensione .mdx. in ogni caso la compattazione la facevi con "pack".
in ufficio lo debbo usare ancora, per legacy, diciamo cosi'.
in genere, pero', quando devo ciappinare su un dbf, per fortuna sempre
piu' di rado, mi tiro dietro un floppy da 720, db3 ci sta.
dbase e' stato in genere abbandonato a favore di clipper (nantucket,
poi c.a.), che e' nato come compilatore dei .prg, poi si e' evoluto
come linguaggio a se', rimanendo sempre fortemente orientato ai .dbf.
(non parlo di foxpro perche' non l'ho mai usato sul serio. ha avuto
molti estimatori).
il linguaggio e' molto simile, ma clipper permette qualche astrazione.
miracolo, ho ancora qualche clipper sul pc: il codice sotto lo usavo
per stampare a video, e, con poche modifiche, a 80 colonne:
@ cr,00 clea to 21,79
setcolor( COL[4] )
sayfond()
setcolor( COL [1] )
if !empty( sayinte() )
 showtxt( sayinte(), 65 )
 cr++ // in dbase sarebbe come in vb: cr=cr+1
endi
setcolor( COL [3] )
showtxt( trim(TIT) + "*" + trim(TITGEN), 65 )
cr++
con un uso un po' intelligente degli indici e sprecando qualche mb
(quando i dischi erano di 60-120mb, non gb...) avevi tempi di risposta
strepitosi, inarrivabili per qualunque runtime. un seek da record1 a
record 100k su un 286 era impercettibile. e 100k righe erano molte.
sele 5
use akLUO inde LuoN, LuoLDPN, LuoDLPN, LuoPLDN, LuoPDLN, LuoMitL,
LuoMitD
//              1     2        3        4        5        6        7
chiamata:
    sele 5
    set inde to 3
    seek "..."
nb: clipper creava indici .ntx. vb/jet direi che veda solo, nei limiti
che hai riscontrato, gli ndx e mdx. per gli ntx si devono usare
librerie apposta. il che ha spinto quasi tutti quelli che non dovevano
mantenere vive applicazioni dbase/clipper, a importarsi le tabelle in
un mdb e a lavorare con questo.
(che e' poi quello che volevano in ms <g>).
nel tuo caso, guarda che indici ci sono.
se sono .ndx, dovresti mettere su un db3-4 (erano ashton tate, poi
borland, ma dubito che esistano ancora nella versione dos) e al prompt
fare
    .use tabella
    .pack
dovrebbe dirti
    ... -> nnn record copiati
eventualmente, se gia' non te lo fa un programma esterno, usando un
dbase potresti farti anche un .prg tu che cicla sulle tabelle, le
compatta e ricostruisce gli indici. prima pero' mi accerterei su quali
indici siano. ogni programma della famiglia xbase aveva i suoi
preferiti. ndx, mdx, ntx, cdx... se li mandi in casino non so cosa
gira, poi...
se sono ntx, il pack devi farlo fare a un clipper. qui il pack veniva
fatto su tutte le tabelle usate:
for ARK := 1 to 13
   sele ( ARK )
   set inde to
   R1 := recc()
   pack
   R2 := recc()
   TOTPAK += ( R1 - R2 )
   quadra( "Schede eliminate: " + ltrim(str(TOTPAK)), 11,, "W+/R" )
   quadra( elaptime( T1, time() ), 18 )
   inkey(1)
next
hth, e scusa il dilungo :)
ciao, j.

 > Potresti gentilmente essere più preciso su dbase , cos'è ? un


 * FeDe *
ciao, j.
non so se ti puo' servire: ci sono capitato adesso del tutto
casualmente:
http://www.whitetown.com/cdbf/
mi sa che i russi hanno ancora dei 386, e le notti siberiane devono
essere lunghette... mica puoi sempre giocare a scacchi :) chi si
ricorda volkov commander, clone assembly molto piu' veloce di nc ? :)

 ha scritto nel messaggio
news:asn7a8$stpeq$1...@ID-51318.news.dfncis.de...
