Creare un ciclo con numero di ripetizioni definite

di il
4 risposte

Creare un ciclo con numero di ripetizioni definite

Salve a tutti dovrei fare un ciclo determinando di volta in volte il numero dei cicli stessi. mi spiego meglio:

in una maschera ho una casella di testa dove determino il numero di Assegnifamiliari da mettere denominata txtNumAssegni

ho predisposto un ciclo che verrei far ripetere n volte quante quanto sono i numeri di assegni:
Dim rsAdo1 As ADODB.Recordset
Set rsAdo1 = New ADODB.Recordset
rsAdo1.Open "SELECT * FROM TabAnf WHERE (Matricola = " & Me.matricola & ")", cnG, 3, 3

    i = 1
    For i = 1 To Me.TxtNumAssegni
    'AGGIORNO i valori
    rsAdo2.Update ("importoANFMensile" & i), Me.TxtImportoAssegno
    i = i + 1
Next
ovviamente non funziona

in questo modo funziona ma mi da errore al 3 loop e mi carica solo gli importi nei mesi dispari come se ne saltasse uno
Dim rsAdo1 As ADODB.Recordset
Set rsAdo1 = New ADODB.Recordset
Dim rsAdo2 As ADODB.Recordset
Set rsAdo2 = New ADODB.Recordset

rsAdo1.Open "SELECT Matricola FROM TabAnf WHERE (Matricola = " & Me.matricola & ")", cnG
rsAdo2.Open "SELECT * FROM TabAnf WHERE (Matricola = " & Me.matricola & ")", cnG, 3, 3

    i = 1
    rsAdo1.MoveFirst
    Do Until rsAdo1.EOF = True
    For i = 1 To Me.TxtNumAssegni
    'AGGIORNO i valori
    rsAdo2.Update ("importoANFMensile" & i), Me.TxtImportoAssegno
    i = i + 1
rsAdo1.MoveNext
Next
Loop
grazie sempre i consigli

4 Risposte

  • Re: Creare un ciclo con numero di ripetizioni definite

    Perché aumenti i

    i = i + 1

    se lo fa già la For ??
  • Re: Creare un ciclo con numero di ripetizioni definite

    Direi che il codoce presenta errori tecnici importanti ed una anomalia da capire...

    ANOMALIA
    Perche usi ADO con Access...? Hai un motivo valido...?
    Se non c'è, e credo non ci sia, è inutile sapendo che DAO è nativo r già reverenziali.

    ERORRE
    Apri 2 rs inutilmente... ne basta 1 dal momento che sono sostanzialmente identici... e se non fossero MONORECORD staresti scrivendo sempre sul primo...
    Insomma io ci guarderei in modo più attento.

    Non dico nulla ma mi lascia perplesso il fatto tu abbia N campi importoANFMensile(N).... molto strano...
    Non è che hai 2 tabelle relazionare 1 M con i Ratei....?
    Se fosse così....
  • Re: Creare un ciclo con numero di ripetizioni definite

    Allora Buona Sera a tutti.
    Giustamente il fatto che mi saltava un ciclo l' ho risolto togliendo l i=i+1

    Rispondendo ad Alex uso l ado perchè le tabelle sono in sql server e con ado ho natato che i cicli sono più veloci

    si è un monorecord

    nella tabella ho 12 campi importoANFMensile cioè il numero massimo di assegni da poter dare in un anno vorrei inserire solo importo per i mesi che li prende quindi mettiamo caso che il dipendente fà la richiesta ad aprile lui li deve prendere fino a luglio sono tre mesi quindi io vorrei inseire l' importo degli assegni nei primi 3 campi importoAnfMensile
    rsAdo1.Open "SELECT * FROM TabAnf WHERE (Matricola = " & Me.matricola & ")", cnG, 3, 3
        i = 1
        rsAdo1.MoveFirst
        Do Until rsAdo1.EOF = True
        For i = 1 To Me.TxtNumAssegni
        rsAdo1.Update ("importoANFMensile" & i), Me.TxtImportoAssegno
        rsAdo2.MoveNext
        Next
        Loop
    
    se io lo faccio con un solo recordset mi dice che il record corrispnde all' inizio o alla fine o è stato eliminato
    PS questo codice è dopo aggiornamento della casella di testo TxtImportoAssegno
  • Re: Creare un ciclo con numero di ripetizioni definite

    Hai le Linked table...?
    Non credo proprio tu possa minimamente dimostrare su un ciclo di 12 iterazioni una differenza prestazionali...
    Se poi facessi come fanno gli utilizzatori più avanzati, ovvero mantenere aperta una connessione nel Pool le possibili differenze si azzererebbero...

    Detto questo... il fatto tu abbia 12 campi corrispondenti al mese mi continua a non convincere.

    Scusa ma se il recordset contiene solo 1 record a cosa serve Movefirst ed il Loop...?
    L'errore restituito non ha senso... se non che essendo appunto solo 1 record devi togliere le cose che non servono...
Devi accedere o registrarti per scrivere nel forum
4 risposte