PDA

Visualizza la versione completa : [VB6-Outlook] Eliminazione appuntamenti


ladyBlu
17-09-2002, 12:12
Buongiorno a tutti!

Ho un problema con Outlook e VB6.
Ho creato una procedura in vb per cancellare dal calendario di Outlook tutti gli appuntamenti che avessero come prima parola "Prova".
La procedura parte e cancella i primi 15-20 appuntamenti, dopodichè va in loop e io non capisco perchè.

questo è il codice:


Private Sub cmdEliminaProve_Click()

Dim mioItem
Set mioItem = CartellaAppuntamenti.Items.GetFirst

Do Until TypeName(mioItem) = "Nothing"
If Left(mioItem, 5) = "Prova" Then mioItem.Delete
Set mioItem = CartellaAppuntamenti.Items.GetNext
Loop

End Sub

dove
CartellaAppuntamenti: Cartella "Calendario" di Outlook

Praticamente, da quello che vedo durante il debug, non esegue l'istruzione "CartellaAppuntamenti.Items.GetNext";

voi avete suggerimenti?

Ringrazio tutti di cuore!
:ciauz:

darkblOOd
17-09-2002, 12:15
mwtti un punto di interruzione e vedi (con F8) se va avanti incrementando l'item.
potrebbe anceh essere che non trova l'item "Nothing" e che di conseguenza non esce mai dal loop

Wild78
17-09-2002, 12:16
Assicurati di aver istanziato bene l'oggetto...

ladyBlu
17-09-2002, 12:19
infatti Item non diventa nothing, ma non perchè non arriva alla fine degli appuntamenti, bensì per il fatto che non esegue più l'istruzione "CartellaAppuntamenti.Items.GetNext"; solo che questa stessa istruzione, quando avvio il prg la esegue senza problemi... dopo un po' però si stufa e va in loop il do. :bhò:

tieni presente che se io scrivo:


Do Until TypeName(mioItem) = "Nothing"
mioItem.Delete
Set mioItem = CartellaAppuntamenti.Items.GetNext
Loop


invece di:



Do Until TypeName(mioItem) = "Nothing"
If Left(mioItem, 5) = "Prova" Then mioItem.Delete
Set mioItem = CartellaAppuntamenti.Items.GetNext
Loop


il prg non da problemi, esegue tutto il ciclo ed esce per TypeName(mioItem) = "Nothing"

:confused: :bhò: :master:

vonkranz
17-09-2002, 12:21
...ma "Nothing" e' un valore stringa all'interno di MioItem?

...secondo me devi togliere le virgolette a Nothing... cosi' il ciclo termina quanto TypeName(mioItem) = Nothing (cioe' e' nullo).

ladyBlu
17-09-2002, 12:22
Originariamente inviato da vonkranz
...ma "Nothing" e' un valore stringa all'interno di MioItem?

...secondo me devi togliere le virgolette a Nothing... cosi' il ciclo termina quanto TypeName(mioItem) = Nothing (cioe' e' nullo).
no, la condizione x uscire dal do è corretta.
hai letto il post sopra il tuo?

vonkranz
17-09-2002, 12:30
Originariamente inviato da ladyBlu

no, la condizione x uscire dal do è corretta.
hai letto il post sopra il tuo?

.l'ho letto ora...;)

...non ho capito xke' "continui" a fare dei Set mioItem = CartellaAppuntamenti.Items.GetNext a ripetizione sulla stessa istanza di mioItem....

prova a fare:


Set mioItem = nothing
Set mioItem = CartellaAppuntamenti.Items.GetNext

...ammesso che mioItem nn ti serva da qualche altra parte

darkblOOd
17-09-2002, 12:34
non conosco quell'istruzione (GetNext) ma è sicuro che ci vuole il set? :master:

ladyBlu
17-09-2002, 12:35
no, vonkranz, non funziona.
il problema non è nell'istanza del mioItem, ma nel fatto che a un certo punto non scorre più gli appuntamenti.
ne elimina una ventina e si blocca, anche se nella cartella ce ne sono una marea in più.
accidenti che palle. tutto questo perchè per testare il prg che ho consegnato ho inserito appuntamenti fittizi in outlook e ora x cancellarli tutti mi ci vorrebbe una vita!!! :stordita: :stordita:





dark
CartellaAppuntamenti.Items.GetNext
equivale a dire:
Recordset.MoveNext

solo che qui si parla di appuntamenti di outlook e non di record.

vonkranz
17-09-2002, 12:37
....!!!!!!!!!!!!!.....

prova con


Do Until TypeName(mioItem) = "Nothing"
If ucase(Left(mioItem, 5)) = "PROVA" Then mioItem.Delete
Set mioItem = CartellaAppuntamenti.Items.GetNext
Loop

...chissa'...;)

Loading