|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
03-07-2004, 17.16.02 | #1 |
Hero Member
Registrato: 02-09-2002
Messaggi: 1.313
|
Cancellazione discriminata dati da dbf
Database pippo.dbf Al suo interno una parte di records vanno cancellati perche obsoleti. La struttura prevede un campo data cioe' field D grandezza 8 programmo (clipper) cosi': set date italian use pippo delete all for data < ctod("01/05/04") pack close databases puo' essere? c'e' qualcuno tanto "vecchio" da aiutarmi? Grassie |
03-07-2004, 17.20.53 | #2 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Ora sono sotto Xp Pro ed ho difficoltà a tirare su il TSR delle vecchie Norton Guides di Ca-Clipper.. ma non mi sembra che il tuo programma possa essere scorretto.. al limite, se non ti fidi della sintassi della "query" puoi farti una function che prelevi tutti i record dal database e poi li cancelli uno per uno controllandoli come fai tu con la "CTOD"...
Ti suggerirei di provare il programma, al limite se hai problemi posso darti una mano in settimana. Bye |
03-07-2004, 17.23.52 | #3 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Ah se non ricordo male, la sintassi di "USE", prevedeva il NEW....
USE database NEW Sempre se non ricordo male, in questo modo sei sicuro di lavorare su una nuova area di memoria. Bye |
03-07-2004, 17.31.53 | #4 |
Hero Member
Registrato: 02-09-2002
Messaggi: 1.313
|
ma allora sei vecchissimo anche tu P8257. In effetti non ci avevo pensato alla funzione... mumble mumble saranno 50.000 record, speriamo non vada in overflow. Vabbe' casomai ci si rivede per aggiornamenti. stasera a casa guardo se mi e' rimasto qualche manuale
Eppure ci si faceva le notti su cose cosi' . Bei tempi... Ciao |
03-07-2004, 17.42.19 | #5 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Sono un nostalgico pure io ..
pensa che avevo fatto un programma meglio del DBU .. .... Comunque tranquillo, non dovrebbe andare in overflow, non è un linguaggio lentissimo, in più la DELETE come ricordi, non cancella effettivamente i record, li segna solo come eliminati, quindi non dovrebbe metterci molto, nel ciclo di scansione del db. fai attenzione al record "fantasma"... alla fine fai un bel PACK (come hai fatto) ed è tutto ok... Bye |
05-07-2004, 16.43.50 | #6 |
Hero Member
Registrato: 02-09-2002
Messaggi: 1.313
|
mah, non ci sto capendo niente il comando delete all for sembra non funzionare (ma sbaglio io sicuramente) con le date.
Faccio un breve riassunto: Database pippo.dbf i campi sono: DATA formato D caratteri 8 TIPO formato C caratteri 3 al suo interno o NOT o JIN altri campi ora io da quello che mi ricordo il comando delete all for dice prorpio di cancellate tutti i record di un database se corrispondono a un dato di confronto. Imposto quanto segue clear store ctod(" - - ") to rifgiorno @10,10 say"Fino a che giorno vuoi cancellare " get rifgiorno read use pippo delete all for DATA <= rifgiorno pack close databases quit Ebbene NON FUNZIONA se metto invece delete all for TIPO = "NOT" Funziona e cancella tutti i records che contengono la scritta NOT Quindi qualcosa non va sulle date ... ma cosa? |
05-07-2004, 17.09.27 | #7 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Guarda, a me funziona .. l'ho risolto in questo modo .. vedi se può andarti bene ..
NOTA: per prova ho usato un database chiamato Prova con due campi, uno carattere e uno data, il campo data l'ho chiamato DATA1, se vuoi utilizzare il codice devi naturalmente cambiare i nomi dei campi e del db (lo dico solo per chiarezza). Codice:
FUNCTION main() LOCAL GetList := {} LOCAL dDate := SPACE(10) SET DATE ITALIAN @10,10 SAY "Inserire la data (dd-mm-aaaa): " GET dDate READ DeleteByDate(CTOD(dDate)) RETURN nil // DeleteByDate - Cancella selettivamente i record secondo la data indicata FUNCTION DeleteByDate(ByDate) USE prova NEW DO WHILE RECNO() != (LASTREC()+1) IF prova -> DATA1 == ByDate DELETE ENDIF DBSKIP() ENDDO PACK CLOSE DATABASES RETURN nil Bye |
05-07-2004, 17.28.32 | #8 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Aggiungo:
se vuoi seguire il mio metodo e vuoi cancellare i record prima di una certa data, basta che controlli "manualmente" se la data è minore di quella indicata.. puoi farlo in due modi: - Spezzandola in 3 tronconi e controllando con "if" innestati la validità del fatto che sia <= alla data limite - Utilizzandola come data e ricorrendo agli appositi operatori. Poi passi tutto alla DeleteByDate oppure implementi direttamente in essa i controlli di cui sopra. Bye |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
cancellazione sicura dati | volley_3 | Sicurezza&Privacy | 5 | 22-01-2009 00.18.17 |
mi è caduto per terra l'hd portatile !!! | zen67 | Hardware e Overclock | 63 | 10-01-2008 17.12.50 |
[Vista Backup] Non si trovano i dati salvati | taniservice | Windows 7/Vista/XP/ 2003 | 1 | 25-09-2007 10.29.57 |
ADSL su linea solo dati: canone in arrivo? | handyman | Segnalazioni Web | 4 | 13-06-2005 16.48.21 |
Help!! Cancellazione dati Pen Drive | Sabba | Hardware e Overclock | 3 | 17-09-2004 23.42.39 |