Sono un modestissimo utilizzatore di Access 2007.
Ho scritto un codice per il VBA di Acess 2007 per creare sottocartelle in una cartella di destinazione prelevando i dati per comporre il nome da assegnare alle sottocartelle da una tabella.
Il programma funziona bene e fa quanto previsto.
Ho poi scritto un programma che nelle intenzioni dovrebbe aprire la tabella che contiene i dati partendo dal primo record con un .MoveFirst creare la relativa sottocartella e poi passare via via ai recoed successivi con un .MoveNext ma non funziona.
Creata la prima sottocartella salta il comando Tabella.MoveNext ed esce dal Do Until ... loop.
C'è qualcuno che mi può aiutare a trovare l'errore?
Il codice è abbastanza commentato e quindi dovrebbe essere chiaro.
Mi scuso per ogni eventuale errore nel postare questa richiesta, ma è la prima volta che accedo.
Grazie a tutti.
LuiseP
'COMANDO VerificaFS - Verifica archivio fascicoli
'Verifica per tutti gli studenti in Studenti Matricola la presenza della sottocartella personale nella cartella GeABAV-StudentiArchivioFascicoli
'Se non la trova la crea
Private Sub VerificaFS_Click()
Dim DBCOrrente As DAO.Database 'DBcorrente o altra variabile
Dim strMatricola, strStudente, strStCog, strStNom, InizialiN, LetteraN, strCartella, Msg1, Msg3, Msg4, Style, Help, Ctxt, Percorso As String
Dim NumMat, Studente, Percorso1, Cartella As String
Dim i, LunMat, LunCar, PosizioneL As Long
Title = "Cartella Studente"
'Help = "DEMO.HLP"
'Ctxt = 1000
Set DBCOrrente = CurrentDb 'per aprire un collegamento sul dbcorrente
Set Tabella = DBCOrrente.OpenRecordset("Studenti Matricola", dbOpenDynaset)
Tabella.MoveFirst
Do Until Tabella.EOF 'inizia il ciclo
'prepara il nome della cartella composto dal Cognome e iniziali del Nome
'prima fase: converte cognome e nome nella stringa strStudente composta dal Cognome e iniziali del Nome
strMatricola = Me.Matricola
strCog = Me.StCog
strNom = Me.StNom
InizialiN = Left(Me.StNom, 1)
For i = 2 To Len(strNom)
LetteraN = Mid(strNom, i, 1)
PosizioneL = i
If LetteraN = " " Or LetteraN = "" Then
PosizioneL = i + 1
LetteraN = Mid(strNom, PosizioneL, 1)
InizialiN = InizialiN & LetteraN
i = i + 1
End If
Next i
strStudente = Me.StCog & "_" & InizialiN
'seconda fase: crea la strCartella composta da strStudente & NumBat (numero di matricola trasformato
'in una stringa di 4 cifre facendolo precedere dalla cifra "0" per quante volte necessario se le cifre sono <4)
LunMat = Len(strMatricola)
NumMat = Left("0000", 4 - LunMat) & strMatricola
strCartella = strStudente & "_" & NumMat
'sostrituisce in strCartella gli spazi " " con "_"
LunCar = Len(strCartella)
For i = 1 To LunCar
If Mid(strCartella, i, 1) = " " Then
Mid(strCartella, i, 1) = "_"
End If
Next
Msg4 = "Presenti in archivio le cartelle di tutti gli studenti."
'Style = vbYesNoCancel + vbCritical + vbDefaultButton2 'Percorso1 = C:\Users\Luigi_S\Desktop\GeABAV-StudentiArchivioFascicoli\" & strCartella & "\"
Percorso1 = "C:\Users\Luigi_S\Desktop\GeABAV-StudentiArchivioFascicoli\" & strCartella & "\"
Esiste = Dir(Percorso1, vbDirectory)
If Esiste = "" Then 'Controlla la presenza della cartella strCartella nella cartella C:\Users\Luigi_S\Desktop\GeABAV-StudentiArchivioFascicoli\
MkDir (Percorso1) ' Crea la cartella per strStudente
End If
Tabella.MoveNext 'QUESTO E' IL COMANDO CHE SEMBRA IGNORARE
Loop
MsgBox Msg4
'Chiusura Tabella
Tabella.Close
'Chiusura DB
DBCOrrente.Close
End Sub