Problema di aggiornamento campi db

di il
9 risposte

Problema di aggiornamento campi db

Scusatemi riformulo il tutto su altra discussione.
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.

9 Risposte

  • Re: Problema di aggiornamento campi db

    Il problema quindi quale sarebbe?
    Perché con
    RS1("ImportoRataQuietanza") = Campopercalcolo * -1
    mi sembra normale che il numero inverta il segno, no?
  • Re: Problema di aggiornamento campi db

    Si ma quando inserisco un nuovo foglio cassa mi aggiorna il foglio cassa precedente i numeri negativi in numeri positivi.
    Grazie
  • Re: Problema di aggiornamento campi db

    Pare ovvio se esegui il codice su tutti i Records... se lo vuoi eseguire solo sul NUOVO RECORDS non devi assolutamente fare quello che fai, quella soluzione va bene per sistemare i dati pregressi, ma non la puoi lanciare tutte le volte.
    Quando inserisci un NUOVO RECORD, devi operare sull'evento BEFOREINSERT di maschera ed aggiornare il valore del Controllo associato, facendo il calcolo in quel momento, salvi e chiudi.
  • Re: Problema di aggiornamento campi db

    Buongiorno.
    Ho inserito il codice sul comando di maschera BEFOREINSERT
    Private Sub Form_BeforeInsert(Cancel As Integer)
    DoCmd.OpenQuery "QueryAccodamentoPerDettaglioFoglioCassa", , acReadOnly
    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("ImportoRataQuietanza") = Campopercalcolo
    RS1.Update
    Else
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.24
    RS1.Update
    End If
    End If
    RS1.Update
    RS1.MoveNext
    Loop
    RS1.Close
    Set RS1 = Nothing
    Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImportoRate
    Me!ImportoFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImportoRate
    Me!ImponibileFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImponibileRate
    Me!ProvvigioniFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaProvvigioniRate
    Me!NettoFoglioCassa = Forms!MascheraAgenzi
    End Sub
    MA appena inserisco un dato sulla maschera esegue il codice non permenttendomi di inserire la data inizio e data fine del prelievo delle quietanze.
    Ho poi provanto a inserire il codice sullevento BeforeUpdate:
    Private Sub Form_BefoUpdate(Cancel As Integer)
    DoCmd.OpenQuery "QueryAccodamentoPerDettaglioFoglioCassa", , acReadOnly
    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("ImportoRataQuietanza") = Campopercalcolo
    RS1.Update
    Else
    RS1("ImponibileRataQuietanza") = Campopercalcolo / 1.24
    RS1.Update
    End If
    End If
    RS1.Update
    RS1.MoveNext
    Loop
    RS1.Close
    Set RS1 = Nothing
    Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImportoRate
    Me!ImportoFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImportoRate
    Me!ImponibileFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaImponibileRate
    Me!ProvvigioniFoglioCassa = Forms!MascheraAgenziaGenerale!SottomascheraAccodamentoFoglioCassaAgenziaGenerale!SommaProvvigioniRate
    Me!NettoFoglioCassa = Forms!MascheraAgenzi
    End Sub
    Ma appena finisco di inserire i dati e salvo esegue il codice ma non inserisce nessuna quietanza.
    Aiutooo...
  • Re: Problema di aggiornamento campi db

    Scusa ma ragiona un secondo...!
    Su BeforeInsert sei sul Record che hai appena editato... secondo te serve tutto quel pippone...? (NO)
    Oltretutto ribadisco che ADO con MsAccess è veramente inutile.
    
    Private Sub Form_BeforeInsert(Cancel As Integer)
        If Len(Me!Controllo_ImponibileRataQuietanza & vbNullstring)=0 Then
            Cancel=True
            MsgBox "Valorizza il controllo [ImponibileRataQuietanza]"
            Me!Controllo_ImponibileRataQuietanza.SetFocus 
        Else
            If TuaCondizione1 Then Me!Controllo_ImponibileRataQuietanza=Me.Controllo_ImportoRataQuietanza / -1.26
            ElseIf TuaCondizione2 Then Me!Controllo_ImponibileRataQuietanza=Me.Controllo_ImportoRataQuietanza / -1.35
            ElseIf TuaCondizione3 Then Me!Controllo_ImponibileRataQuietanza=Me.Controllo_ImportoRataQuietanza / -1.57 
        End If
    End Sub
  • Re: Problema di aggiornamento campi db

    Grazie della risposta.
    Un solo chiarimento.
    Il codice che hai editato lo devo inserire nel Sub Form_BeforeInsert della sottomascherafogliocassa (dove edito la data di prelievo delle quietanze, o nel Sub Form_BeforeInsert della sottomascheraAccodamentofogliocassa dove la query di accodamento inserisce le quietanze selezionate in base alla data dalla sottomascherafogliocassa? Inoltre sul clik del pulsante inserisci quietanze posto sulla sottomascherafogliocassa devo far eseguire solo la query di accodamento? Allego foto maschere.
    grazie.
    [img]
  • Re: Problema di aggiornamento campi db

    Ok ho inserito il codice in Form_BeforeInsert nella sottomascheraAccodamentofogliocassa. ho inserito anche il pulsate di inserimento quietanze sulla stessa maschera dopo aver inserito la data nella sottomascheraFogliocassa. mi preleva quelle determinate quietanze nel limite della data specificata e infatti le inserisce in automatico tutte sempre nella sottomaschera accodamento fogliocassa (che poi sarebbe il dettaglio del foglio cassa quietanza per quietanza). il problema che non applica le condizioni. se invece vado a modificarle una per una sempre nella sottomascheraAccodamentoFoglioCassa applica le condizioni impostate.
    come far applicare le condizioni quando preleva in automatico tutte le quietanze?
    Aiuto......
    Grazie
  • Re: Problema di aggiornamento campi db

    Insomma Saverio, devi ragionare...!!!
    Distingui, come ti ho già detto, l'aggiornamento dei dati PRE-ESISTENTI, che eseguirai UNA SOLA VOLTA con una query di aggiornamento, poi la BUTTI VIA, ed userai il metodo che ti ho suggerito.
  • Re: Problema di aggiornamento campi db

    @Alex ha scritto:


    Insomma Saverio, devi ragionare...!!!
    Distingui, come ti ho già detto, l'aggiornamento dei dati PRE-ESISTENTI, che eseguirai UNA SOLA VOLTA con una query di aggiornamento, poi la BUTTI VIA, ed userai il metodo che ti ho suggerito.
    Ok grazie. Infatti ho fatto cosi e ora e tutto ok.
    Devi capire che sono alle prime armi in fatto di programmazzione percui ti prego di avere un po di pazienza.
    Grazie di nuovo.
Devi accedere o registrarti per scrivere nel forum
9 risposte