access: creare in automatico tanti record in base alle rate

Anonimo
2022-12-30T22:01:01+00:00

Salve, in una maschera ho una casella di testo (N_Rate) dove inserisco appunto il numero di rate poi una sottomaschera (rate) con i campi ID - NUMERO_RATA - DATA_RATA - IMPORTO_RATA collegate da ID_FINANZIAMENTO Uno a molti.

Avrei la necessità di creare tanti record (nella sottomaschera) quante sono le rate inserite nel campo (N_Rate), poi nella sottomaschera quando inserisco l'importo e la prima data dovrei incrementare le successive di 30 giorni e riportare lo stesso importo per ogni rata.

Spero di essere stato chiaro

Grazie in anticipo dell'attenzione.

Gianni

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-01-17T22:16:31+00:00

La riga dove il codice effettua l'aggiornamento delle date deve essere modificata nel seguente modo:

  • CurrentDb.Execute "UPDATE TbFattureFornitoriDataScadenza SET DataScadenzaPagFattForn = #" & Format(DateAdd("m", (intCiclo - 1) * 1, Me.DataScadenzaPagFattForn), "mm/dd/yyyy") & "# WHERE [ID_FATTURA_FORNITORI] = " & Me.ID_FATTURA_FORNITORI & " AND [NumeroRataFattForn] = " & intCiclo

rimane il fatto che la gestione dei dati all'interno della maschera e sottomachera è fatta veramente male per il fatto che che non effettua nessun controllo sulla corretteza dell'inserimento dei dati, come già esposto precedentemente per alcuni casi che l'altro non sono tutti.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-01-03T23:15:19+00:00

Per impostare automaticamente l'importo per ogni record nella sottomaschera, è possibile utilizzare un ciclo simile a quello utilizzato per impostare le date. Ecco come puoi modificare il codice per impostare l'importo per ogni record:

Sub privato AmountPagFattForn_AfterUpdate() Se Me.RataNumberFattForn = 1 allora Dim intRate As Integer Dim intCiclo As Integer intRate = DLookup("Max([RateNumberFattForn])", "TbSuppliersInvoicesDeadlineDate", "ID_FATTURA_FORNITORI=" & Me.ID_FATTURA_FORNITORI) Per intCiclo = 2 Per intRate CurrentDb.Execute "UPDATE TbVendorInvoicesExpirationDate SET ImportoPagFattForn = " & Me.AmountPagFattForn & " WHERE [RateNumberFattForn] = " & intCycle Prossimo Me.requery Fine Se Fine sub

Questo codice utilizza il metodo CurrentDb.Execute per aggiornare il campo ImportoPagFattForn nella tabella TbVendorInvoicesExpirationDate per tutti i record con un RateNumberFattForn maggiore di 1. Il valore del campo AmountPagFattForn del primo record viene utilizzato per impostare l'importo per gli altri record.

Spero che questo aiuti! Fammi sapere se hai domande.

Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

20 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-01-01T23:14:33+00:00

    La rata mensile deve avere sempre lo stesso giorno? perchè aggiungendo 30 per la successiva questo va a cambiare quando i mesi non sono di 30 giorni.

    No effettivamente deve scadere sempre nello stesso giorno es. 1/1 1/2 ecc.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-12-31T07:05:51+00:00

    La rata mensile deve avere sempre lo stesso giorno? perchè aggiungendo 30 per la successiva questo va a cambiare quando i mesi non sono di 30 giorni.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-12-31T00:05:23+00:00

    Ciao

    Sono Sneha e sarei felice di aiutarti con la tua domanda.

    Per creare record in una sottomaschera, è possibile utilizzare il metodo DoCmd.RunCommand con il comando acCmdRecordsGoToNew per aprire un nuovo record nella sottomaschera. È possibile utilizzare un ciclo per creare il numero desiderato di record, in questo modo:

    Dim i come intero Per i = 1 A N_Rate.Valore DoCmd.RunCommand acCmdRecordsGoToNew Avanti i

    Per impostare automaticamente la data e l'importo per ogni record nella sottomaschera, è possibile utilizzare la funzione DateAdd per incrementare la data di 30 giorni per ogni record e impostare il campo IMPORTO_RATA sull'importo desiderato. È possibile eseguire questa operazione nell'evento AfterUpdate del campo NUMERO_RATA, in questo modo:

    Sub privato NUMERO_RATA_AfterUpdate() Se Me.NewRecord allora Me.DATA_RATA = DateAdd("d", 30 * (Me.NUMERO_RATA - 1), Me.Parent.DATA_PRIMA_RATA) Me.IMPORTO_RATA = Me.Parent.IMPORTO_PRIMA_RATA Fine Se Fine sub

    Questo codice presuppone che tu abbia un campo chiamato DATA_PRIMA_RATA nel modulo principale che contiene la data della prima rata e un campo chiamato IMPORTO_PRIMA_RATA che contiene l'importo della prima rata. Il campo NUMERO_RATA è il campo ID nel sottomodulo e viene utilizzato per determinare il numero della rata. La proprietà NewRecord viene utilizzata per garantire che questo codice venga eseguito solo quando viene creato un nuovo record e non quando viene modificato un record esistente.

    Se hai altre domande o hai bisogno di assistenza con qualsiasi cosa, non esitare a farmelo sapere. Sono qui per aiutare al meglio delle mie capacità.

    Restituisci alla comunità. Aiuta la prossima persona che ha questo problema indicando se questa risposta ha risolto il tuo problema. Fai clic su Sì o No di seguito.

    Migliori saluti Sneha

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento