Newsgroup: it.comp.appl.access
Titolo: Re: Occorrenze

 ciao, grazie
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Alxx,
Quello che fa la procedura di Roberto è di creare una tabella contenente
tutte le  parole contenute nell'Anagrafica e per ogni parola dire quante
volte compaia in tutto l'archivio, una specie di Indice delle occorrenze.
Ora io non so a cosa ti serva questa tabella, ma molto probabilmente su 2
Milioni di record ci mette solo un tempo esagerato,  d'altronde fa una
scansione andandosi a prendere un carattere alla volta in ogni campo per
ricostruire le "parole distinte" non si può pretendere che sia un fulmine di
guerra!.
Sarò brutale! ma  ho l'impressione che dovresti usare qualcos'altro per fare
questa cosa.
Se mi spieghi cosa devi fare posso provare a darti dei suggerimenti, ho un
po' di esperienza sulle ricerche full-text.
Saluti
Cinzia

 grazie, ciao



Ciao Alxx,
dacci qualche dato in più.
Questa tabella su cui devi effettuare il conteggio, contiene Anagrafiche e
quindi solo Nomi e Cognomi o qualcos' altro? tanto pe capire se il
vocabolario è quello dei Nomi e Cognomi o se è tutto quello della lingua
italiana.
Che dimensione ha il db dopo averlo compattato e prima di iniziare il lavoro
di conteggio?
La procedura secondo me,  come ha detto Roberto, se non  fa superare al db
le dimensioni massime consentite potrebbe arrivare in fondo.
E' chiaro che con una elaborazione così lunga il minimo problema di non
rilascio corretto della memoria può portare il sistema al crash, la
procedura di suo fa tutto quello che serve per rilasciarla, ma quello che
succede dietro le quinte....
Che versione di Access stai usando?
Saluti
Cinzia

Ciao Cinzia e Roberto
il campo che e' interessato all'indagine e' uno solo, non si tratta di nomi
e cognomi (quello era per fare un esempio) ma di brevi frasi composte da cui
estrarre tutti i valori ripetuti. Non so se ho reso o meno l'idea. La
procedura suggerita da Roberto e' ottima perche' e' proprio quella che ci
vorrebbe solo che risulta incompatibile, a quanto pare, con un mdb con 2
milioni di records, (ma anche con 40mila non va, con 10 mila invece ci sono
riuscito). Il mio mdb parte da una grandezza di circa 100mila bytes.
La versione di access e' quella 2003.
avete qualche altra idea o dubbio?
Come si fa ad usare una barra di progressione? se non altro vedrei se
l'elaborazione procede o si e' boccata. Non credete?
grazie, ciao


In alternativa puoi indirizzare l'output in un file di testo? Risolveresti 
il problema del limite fisico...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao Sergio
mi sembra una buona idea, pero' bisogna modificare il codice immagino

 Sergio MAZZA


 Cinzia
grazie Cinzia
provero' appena posso perche' anch'io sono curioso
ciao 

 grazie, ciao


 ha scritto nel messaggio
news:2ta6rnF...@uni-berlin.de...

Non conosco il codice ma (sicuramente) Roberto e chi ne ha bisogno non credo
abbiano problemi a sostituire le istruzioni di scrittura su tabella con
quelle di scrittura su file di testo (vedi help alle voci: Open, Input
#,Print #, Close)...
Ciao.
-- 
Sergio MAZZA


 se mi facessi capire come fare potrei provare.
Sto cercando di venirne a capo ma l'unica cosa che sono riuscito a trovare, 
(dopo un pomeriggio di ricerche e di letture), riguardante la possibilita' 
d'indirizzare il risultato su di un file testo e' "OutpuSu".
Il problema e' che non so proprio come e dove usarlo.
ciao

Ciao
riguardo al codice (
news:2t7177F...@uni-berlin.de
) per estrarre i 
numeri di volte in cui compare un valore (roberto, cinzia e sergio docent) 
ho notato che spesso l'elaborazione s'interrompe e il debug si ferma su:
____________________________________________
rstParole.FindFirst "Parola =" _
                & Chr$(34) & Trim(MiaParola) & Chr$(34)
____________________________________________
ora, facendo una serie di prove mi e' venuta la sensazione che ci sia 
qualcosa nei dati della tabella da analizzare che fa "inceppare" il 
meccanismo. Che sia la presenza di simboli,di spazi o di cos'altro non so. 
E' una sensazione.
In ogni caso c'e' qualcuno che puo' spiegarmi cosa significa esattamente il 
codice sopra? Io sto cercando d'imparare piu' che posso ma ho molte lacune 
nel VB e vado a rilento.
Un'altra cosa: per dirigere l'output della tabella su un file testo (cosi' 
da superare il limite fisico) ho pensato ad "OutputSu" ma non so dove 
inserirlo ne' se sia la soluzione migliore. Qualcuno mi aiuta?
grazie, ciao 

 wrote in message
news:2thjuoF...@uni-berlin.de

Quanti 3D hai intenzione di aprire...??????
rstParole.FindFirst "Parola =" _
                    & Chr$(34) & Trim(MiaParola) & Chr$(34)
Questo significa:
Cerca nel Recordset rstParole nel Campo[Parola] il primo
Record in cui Parola="....."
Ora Chr(34) non è altro che il metodo per Formattare
correttamente le STRINGHE passate come Condizione.
Trim serve per eliminare Spazzi vuoti.
Quindi secondo me non c'è nulla di strano....!
Per il 2° punto butta quanto trovato su un File
esterno con la funzione OpenFile nomefile For OutPut as #Freefile
Ciao.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 esterno con la funzione OpenFile nomefile For OutPut as #Freefile
io ho gia' confessato la mia discreta ignoranza sul VB ed e' per me
difficilissimo mettere a posto i tasselli del mosaico quando voi "esperti"
date indicazioni che saranno pure tremendamente giuste ma che difficilmente 
vengono capite da chi non dico sia alle prime armi ma quasi.
hai scritto
-OpenFile nomefile For OutPut as #Freefile-
allora io ho dovuto "studiare" per capire cosa cacchio era sto nomefile, ora 
so che e' il percorso completo del file da aprire; ho dovuto capire cos'e' 
sto #Freefile ed ho imparato che restituisce il primo valore libero 
disponibile (non so di cosa).
Ora, giusto per scaricare il mio stress, non so se hai letto qual'era il mio 
problema e non so se sai che dal codice (suggerito da Roberto che ringrazio) 
dovrebbe uscir fuori una tabella dalla quale scaturiscono i valori ripetuti 
col numero delle ripetizioni. Ora Sergio ha avuto,bonta' sua, la geniale 
idea di indirizzare il risultato non verso la creazione di una tabella ma 
verso la creazione di un file testo. A questo punto mi sono fermata e, 
sebbene abbia cercato di capire di tutto e di piu', ho dovuto arrendermi 
alla mia incapacita' (spero temporanea) di modificare il codice secondo gli 
ultimi sviluppi che erano quelli della creazione di un .txt
ecco tutto, condensato in poche righe di getto.
Ora, se puoi, ma se non puoi e' lo stesso, scusa il mio sfogo ed il mio 
ennesimo thread in questo post.
ciao

 ha scritto nel messaggio 
news:2thjuoF...@uni-berlin.de...

Dovresti indicare l'esatto messaggio di errore che ti si presenta; 
probabilmente hai dei valori nulli, prova a sostituire l'istruzione in:
rstParole.FindFirst "Parola =" & Chr$(34) & Trim(Nz(MiaParola," ")) & 
Chr$(34)
ossia utilizzando la funzione Nz (vedi help) per sostituirli in una stringa 
contente uno spazio...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
ciao Sergio
__________________________________________
Errore di run-time '3077':
Errore di sintassi (operatore mancante) nell'espressione.
__________________________________________
questo e' esattamente il mess che appare quando l'elaborazione s'inceppa,
e poi c'e' la linea di debug del modulo che gia' sai

 ha scritto nel messaggio
news:2thqcgF...@uni-berlin.de...

Ciao Alxx,
probabilmente il problema è dovuto ad una parola con l'apostrofo,
l'algoritmo usato divide le parole sullo spazio per cui si trova qualcosa
del tipo: "l'ora"  viene considerata una parola intera e l'apostrofo fa
casino. Prova così:
rstParole.FindFirst "Parola =" & Chr$(34) & Replace(MiaParola, chr$(34),
chr$(34) & chr$(34)) & Chr$(34)
Saluti
Cinzia

 ha scritto nel messaggio 
news:2thqcgF...@uni-berlin.de...

Ma hai provato la modifica che ti ho suggerito?
Ciao.
-- 
Sergio MAZZA 

 Cinzia
ciao Cinzia
come avevo detto mi sembrava che ci fosse qualcosa, un simbolo, uno spazio 
(un dolore) ecc.. che impedisse la prosecuzione dell'elaborazione e tu hai 
trovato la "medicina". Per dirla papale e papele ora FUNZIONA, almeno con 
una tabella di 50.000 records. Non vedo l'ora di provare col malloppone da 
oltre 2 milioni di records, vediamo che succedera'. Grazie Cinzia e grazie 
anche a Sergio che ha dato credito a quelle che erano le mie sensazioni.

 Sergio MAZZA
 si' l'ho provata, il problema era l'apostrofo
anche se ancora devo provare se funziona col tabellone da 2 milioni e passa
ciao e grazie
ps.
se mi dici come dirigere l'output su un file testo a partire da quel codice 
o se mi indichi dove poterlo imparare....
;-)
ciao 

 ha scritto nel messaggio
news:2ti03oF...@uni-berlin.de...

Ciao Alxx,
io ho qualche perplessità su questa soluzione, perchè dirigendo l'output su
un file di testo esterno, anzichè su una tabella, non riesci più a
verificare se una parola è già presente nel file oppure no (o meglio riesci
a verificarlo, ma ogni volta dovresti scorrere l'intero file in modo
sequenziale ... !) questa soluzione potrebbe funzionare solo per esportare
in un mega elenco tutte le parole anche ripetute e poi reimportarle in
access per  fare successivamente una query di raggruppamento per vedere le
occorrenze di ciscuna parola, ma in pratica è quello che ti avevo suggerito
di fare io in un post  precedente (solo che invece di usare un file, ti
facevo usare direttamente una tabella, eri riuscito a provarla?)
Saluti
Cinzia

 Cinzia
Ciao Cinzia
mi pareva che nel file testo oltre alle occorrenze venisse indicato anche il 
numero delle ripetizioni delle stesse. In pratica un elenco tipo:
A      123221
AA   11342
xyz   1223221
..ecc... ecc...
invece tu mi dici che sarebbero state elencate solo le occorrenze e basta.
Per quanto riguarda il tuo metodo l'ho provato proprio ieri notte ma non mi 
ha dato risultati a causa di un errore che ora non ricordo. Questa sera 
spero di riprovare cosi' verifichiamo e ti comunichero' i risultati perche' 
come ti avevo gia' detto e' interessante.
Ciao e grazie di nuovo 

 ha scritto nel messaggio
news:2ti4ftF...@uni-berlin.de...

Ciao Alxx,
il metodo originale del sito comune indicava la parola e le occorrenze, se
però decidi di farlo lavorare su un file esterno di tipo testo cosa succede:
per verificare se la parola esiste già non puoi più fare rs.FindFirst ....,
dovresti scorrere il file una riga alla volta, cercare se la parola esiste
già e se esiste già dovresti incrementare il contatore delle occorrenze, ma
su un file di testo la cosa non è così semplice come su una tabella, perchè
in pratica dovresti, creare un altro file copiare tutto fino alla parola di
cui devi incrementare il contatore, scrivere il contatrore aumentato di 1 e
ricopiare tutta la restante parte del file. Sinceramente non mi pare una
strada percorribile.
Forse un'alternativa potrebbe essere quella di creare un file esterno ti
tipo testo contenente una parola qualsiasi e una occorrenza, collegarlo al
database come sorgente dati esterna e a quel punto continuare a comportarsi
come se fosse una tabella, con gli stessi metodi di prima. Però francamente
non so che limiti abbia il driver odbc  per i file di testo e comunque temo
che diventi di una lunghezza esagerata.
Se come mi hai detto il db completo è di 200 MB non credo che generando la
tabella con il codice del sito comune opportunamente miodificato per gestire
gli apici, raggiunga una dimensione superiore ai 4 GB; per cui prima di
esplorare la soluzione del file di testo rsplorerei le altre strade.
Saluti
Cinzia

 Cinzia
Ci sto' lavorando; ovviamente non essendo un mio codice non riesco ad
intervenire se prima non capisco il funzionamento.
Pensavo di utilizzare una matrice per contare le occorrenze + parola, alla
fine scrivo la riga di testo...
Ciao.
-- 
Sergio MAZZA