Aggiornamento Campi db

di il
9 risposte

Aggiornamento Campi db

Buonasera.
Ho inserito nel campo ImportoRataQuietanza il codice:
Private Sub ImportoRataQuietanza_AfterUpdate()
If Me!NominativoCompagnia = "Allianz" Then
Me!ImponibileRataQuietanza = Me!ImportoRataQuietanza / 1.26
Else
Me!ImponibileRataQuietanza = Me!ImportoRataQuietanza / 1.22
End If
End Sub
Ora tutto funziona se vado a cancellare il dato nel campo ImportoRataQuietanza e inserisco di nuovo il dato.
Esiste un comando che aggiona in automatico tutti i campi ImponibileRataQuietanza in base alla nuova condizione inserita.
Grazie.

9 Risposte

  • Re: Aggiornamento Campi db

    Se come
    nuova condizione inserita.
    ti riferisci al nominativocompagnia ..... e in base a quello vuoi ricalcolare gli importi... puoi:

    Se le condizioni sono solo 2 : fare 2 query di aggiornamento e farle eseguire entrambe consecutivamente

    oppure puoi aggiornare i campi da codice leggendo i campi della tabella così puoi gestire anche più condizioni
    Dim Campodavalutare As String
    Dim Campopercalcolo
    Dim RS1 As ADODB.Recordset   
    Set RS1 = New ADODB.Recordset    
    RS1.Open "ilnomedellatuatabella", CurrentProject.Connection, adOpenKeyset, adLockOptimistic  
    Do Until RS1.EOF    
    Campodavalutare  = (RS1!nomedelcampodavalutare) 
    Campopercalcolo  = (RS1!ImponibileRataQuietanza) 
    "metti le tue condizioni
    If Campodavalutare = "Allianz" Then
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.26
    RS1.Update
    Else
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.22
    RS1.Update
    End If
    RS1.MoveNext
    Loop
    RS1.Close
    Set RS1= Nothing
    
    altrimenti non ho compreso la tua richiesta
  • Re: Aggiornamento Campi db

    Buonasera.
    Grazie della celere risposta.
    Provo con il codice che mi hai riportato e ti faccio sapere.
    Grazie di nuovo
    Ciao
  • Re: Aggiornamento Campi db

    Ok Mauro.
    Ho inserito il codice e va una meraviglia.
    Ho dovuto, dopo tante ricerche, abilitare alcune librerie vba
    ma alla fine ci siamo riusciti.
    Grazie di nuovo.

    ciao
  • Re: Aggiornamento Campi db

    Non avrei usato quel codice, primo proprio perchè serve ADO, e non si usa con Access... salvo per motivi specifici o se si lavora in Ubound con SQL_SERVER.

    In questo caso bastava una query UPDATE con 1 riga di codice...
    
    Dim sSQL As String
    sSQL="UPDATE T1 SET ImponibileRataQuietanza=ImponibileRataQuietanza*IIF(NomeCampo='Alianz',1.26,1.22)"
    DbEngine(0)(0).Execute sSQL, dbFailOnError
    Solitamente da inserire in ambito transazionale...
  • Re: Aggiornamento Campi db

    Buonasera.
    Eccomi di nuovo.
    Chiedevo aiuto sul codice sottostante. praticamente io ho due sottomaschere in un foglio di spostamento (MascheraAgenziaGenerale).
    Le due sottomaschere sono nello stesso foglio. la prima (SottomascheraFoglioCassaAgenziaGenerdaale) ha origine dati su dbFoglioCassa , la seconda (SottomascheraAccodamentoFoglioCassaAgenzia) ha origine dati su (dbAccodamentoFoglioCAssaAgenzia). Ho creato una query di accodamento che preleva i dati da vari db.
    Ora il tutto funziona solo che inserendo il secondo foglio cassa le somme in negativo del foglio cassa precedente vengono convertite in somme positive e quelle del foglio cassa precedente al precedente da posive diventano negative come erano in precedenza e cosi via.
    Allego il codice:

    Private Sub InserisciQuietanzeIncassate_Click()
    DoCmd.OpenQuery "QueryAccodamentoPerDettaglioFoglioCassa", , acReadOnly

    DataVersamentoFoglioCassa.Enabled = True
    ImportoFoglioCassa.Enabled = True
    AllegatoFoglioCassa.Enabled = True
    NoteFoglioCassa.Enabled = True

    InserimentoaScomparsa.Visible = False
    VisualizzazioneaScomparsa.Visible = False
    ModificaaScomparsa.Visible = True
    Salva.Enabled = True
    InserimentoNuovo.Enabled = False
    Elimina.Enabled = False
    Modifica.Enabled = False
    AnnullaInserimento.Enabled = True
    Chiudi.Enabled = False
    Controllo.Enabled = True
    InserisciQuietanzeIncassate.Enabled = False
    StampaFoglioCassa.Enabled = True
    AggiornaImportiFoglioCassa.Enabled = False

    Dim Campodavalutare As String
    Dim Campodavalutare1 As String
    Dim Campopercalcolo
    Dim RS1 As ADODB.Recordset
    Set RS1 = New ADODB.Recordset
    RS1.Open "dbAccodamentoFogliCassa", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Do Until RS1.EOF
    Campodavalutare = (RS1!NominativoCompagnia)
    Campodavalutare1 = (RS1!NominativoAgenziaGenerale)
    Campopercalcolo = (RS1!ImportoRataQuietanza)
    'metti le tue condizioni
    If Campodavalutare = "Allianz" And Campodavalutare1 = "Mussari Giovanni" Then
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.26 * -1
    RS1("ImportoRataQuietanza") = Campopercalcolo * -1
    RS1.Update
    Else
    If Campodavalutare1 = "Mussari Giovanni" Then
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.2
    RS1.Update
    Else
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.24
    RS1.Update
    End If
    End If
    RS1.MoveNext
    Loop
    RS1.Close
    Set RS1 = Nothing

    Forms![MascheraAgenziaGenerale]![SottomascheraAccodamentoFoglioCassaAgenziaGenerale].Form.Requery

    End Sub
    Inoltre chiedevo se era possibile da pulsante INSERISCI NUOVO RECORD su SottomascheraFoglioCassaAgenziaGenerale un comando che nell'inserire nuovo record non facesse visualizzare piu nella sottomascheraAccodamentoFoglioCassaAgenziaGenerale i dettagli del foglio cassa precedente (e schiacciando su (nuovo) della tabella dati lo fa) praticamente un comando VBE che fa la stessa operazione
    Vi ringrazio della vostra pazienza.
  • Re: Aggiornamento Campi db

    Saverio, il regolamento...
    Una domanda per discussione e il tag per il codice o si capisce poco e niente...
  • Re: Aggiornamento Campi db

    Ok Scusatemi.
  • Re: Aggiornamento Campi db

    Scusatemi riformulo il tutto.
    Chiedevo aiuto sul codice sottostante. praticamente io ho due sottomaschere in un foglio di spostamento (MascheraAgenziaGenerale).
    Le due sottomaschere sono nello stesso foglio. la prima (SottomascheraFoglioCassaAgenziaGenerale) ha origine dati su dbFogliCassa , la seconda (SottomascheraAccodamentoFoglioCassaAgenzia) ha origine dati su (dbAccodamentoFogliCassa) popolata dalla query di accodamento dove sono elencati i dettagli del fogli cassa stesso (Quietanze). Ho creato una query di accodamento che preleva i dati da vari db.
    Ora il tutto funziona solo che inserendo il secondo foglio cassa le somme in negativo del foglio cassa precedente vengono convertite in somme positive e quelle del foglio cassa precedente al precedente da posive diventano negative come erano in precedenza e cosi via.
    Allego il codice:
    DoCmd.OpenQuery "QueryAccodamentoPerDettaglioFoglioCassa", , acReadOnly
    
    DataVersamentoFoglioCassa.Enabled = True
    ImportoFoglioCassa.Enabled = True
    AllegatoFoglioCassa.Enabled = True
    NoteFoglioCassa.Enabled = True
    
    InserimentoaScomparsa.Visible = False
    VisualizzazioneaScomparsa.Visible = False
    ModificaaScomparsa.Visible = True
    Salva.Enabled = True
    InserimentoNuovo.Enabled = False
    Elimina.Enabled = False
    Modifica.Enabled = False
    AnnullaInserimento.Enabled = True
    Chiudi.Enabled = False
    Controllo.Enabled = True
    InserisciQuietanzeIncassate.Enabled = False
    StampaFoglioCassa.Enabled = True
    AggiornaImportiFoglioCassa.Enabled = False
    
    Dim Campodavalutare As String
    Dim Campodavalutare1 As String
    Dim Campopercalcolo As String
    Dim RS1 As ADODB.Recordset
    Set RS1 = New ADODB.Recordset
    RS1.Open "dbAccodamentoFogliCassa", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Do Until RS1.EOF
    Campodavalutare = (RS1!NominativoCompagnia)
    Campodavalutare1 = (RS1!NominativoAgenziaGenerale)
    Campopercalcolo = (RS1!ImportoRataQuietanza)
    'metti le tue condizioni
    If Campodavalutare = "Allianz" And Campodavalutare1 = "Mussari Giovanni" Then
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.26 * -1
    RS1("ImportoRataQuietanza") = Campopercalcolo * -1
    RS1.Update
    Else
    If Campodavalutare1 = "Mussari Giovanni" Then
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.2
    RS1.Update
    Else
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.24
    RS1.Update
    End If
    End If
    RS1.MoveNext
    Loop
    RS1.Close
    Set RS1 = Nothing
    
    Forms![MascheraAgenziaGenerale]![SottomascheraAccodamentoFoglioCassaAgenziaGenerale].Form.Requery
    
    End Sub
    Vi ringrazio della vostra pazienza.
  • Re: Aggiornamento Campi db

    Saverio, questo argomento non ha nulla a che vedere con il TEMA ORIGINALE dei Campi del DB.
    Come ti è stato detto si parla nel 3D degli argomenti legati al 3D, questo per avere una linea argomentativa che consente anche eventuali RICERCHE da parte dei lettori.

    Quindi Apri un nuovo 3D dandogli un titolo idoneo e riproponi il tema.

    P.S. ovviamente la domanda del PERCHE' fai tutta quella sbrodolata di roba quando con una Query si fa tutto... è un bel dilemma.
Devi accedere o registrarti per scrivere nel forum
9 risposte