DAO Recordset su tabelle collegate

di il
25 risposte

25 Risposte - Pagina 2

  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - By65Franco ha scritto:


    Vai in Debug mettendo un punto di interruzione su DbEngine(0)(0)

    Quando si ferma l'esecuzione a tale istruzione apri finestra immediata e copia incolla tutta la stringa:

    CTRl-G per aprire finestra immediata, metti il ? e incolli quanto segue:

    
    ? "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _
                           "Pagata = IIf(Residuo-" & Me.Importo & "=0, True, False) " & _
                           "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Premi INVIO e vedi come risolve la stringa 
    Analizza e trova i valori non validi

    Ok, ho capito il problema.. praticamente l'istruzione gli piace solo nel caso in cui “me.importo” sia composto da “cifre tonde senza decimali”.. altrimenti prende la virgola dei decimali come fosse per passare al campo successivo..

    Esempio:

    UPDATE T_Scadenze SET Residuo = Residuo-102,85, Pagata = IIf(Residuo-102,85=0, True, False) WHERE IDScadenza=3802;
  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - @Alex ha scritto:


    Io non ne ho molta… quindi man mano che invecchio rispondo sempre meno… ;-)

    ;))  allora siamo in due ;))

    Ma dimmi una cosa, la stringa che gli ho proposto con DbEngine(0)(0) può andare bene secondo te? son passati anni dagli ultimi codici e non vorrei dire cose strane ;)))

    Si potrebbe anche avere una Query in Update da parametrizzare ? 

  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - DrJack89 ha scritto:


    04/05/2023 - By65Franco ha scritto:


    Vai in Debug mettendo un punto di interruzione su DbEngine(0)(0)

    Quando si ferma l'esecuzione a tale istruzione apri finestra immediata e copia incolla tutta la stringa:

    CTRl-G per aprire finestra immediata, metti il ? e incolli quanto segue:

    
    ? "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _
                           "Pagata = IIf(Residuo-" & Me.Importo & "=0, True, False) " & _
                           "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Premi INVIO e vedi come risolve la stringa 
    Analizza e trova i valori non validi

    Ok, ho capito il problema.. praticamente l'istruzione gli piace solo nel caso in cui “me.importo” sia composto da “cifre tonde senza decimali”.. altrimenti prende la virgola dei decimali come fosse per passare al campo successivo..

    Esempio:

    UPDATE T_Scadenze SET Residuo = Residuo-102,85, Pagata = IIf(Residuo-102,85=0, True, False) WHERE IDScadenza=3802;

    Bravo !!! e quindi cosa faresti ?

  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - By65Franco ha scritto:


    Bravo !!! e quindi cosa faresti ?

    Non so.. ho provato con la funzione format, ma non funziona comunque.. :(

  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - DrJack89 ha scritto:


    Non so.. ho provato con la funzione format, ma non funziona comunque.. :(

    e no !!!! la Format ti rimette la virgolo secondo la nostra lingua anche se al suo posto ci metti il punto…

    di primo acchitto farei una cosa del genere :

    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _
                           "Pagata = IIf(Residuo-" & Replace(Me.Importo, ",", ".") & "=0, True, False) " & _
                           "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Vedi e rivedi, prova e riprova, fai verifiche e fai sapere 
    Nel frattempo vediamo se altri usano metodi diversi…

  • Re: DAO Recordset su tabelle collegate

    Userei la funzione STR(valorenumerico) al posto del REPLACE, in qua to le impostazioni internazionali del SO meglio lasciarle funzioanti…

    Questa funzione formatta correttamente i decimali con il separatore previsto dalle impostazioni di sistema.

    Per il resto direi che va benissimo cosi.

  • Re: DAO Recordset su tabelle collegate

    04/05/2023 - @Alex ha scritto:


    Userei la funzione STR(valorenumerico) al posto del REPLACE, in qua to le impostazioni internazionali del SO meglio lasciarle funzioanti…

    Questa funzione formatta correttamente i decimali con il separatore previsto dalle impostazioni di sistema.

    Perfetto… in questi casi non ho mai usato STR, perfetto e anche meglio, grazie @Alex !!

    Quindi aggiorniamo la stringa per DbEngine in questo modo:

    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _
                           "Pagata = IIf(Residuo-" & Str(Me.Importo) & "=0, True, False) " & _
                           "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Poi DrJack89 devi implementare il codice prima di eseguire DBEngine se hai bisogno di ulteriori controlli e validazioni prima di eseguire l'Update

    Ariprova, verifica e ricontrolla …  fai sapere ;))

  • Re: DAO Recordset su tabelle collegate

    Grazie ad entrambi!

    04/05/2023 - By65Franco ha scritto:


    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _ "Pagata = IIf(Residuo-" & Str(Me.Importo) & "=0, True, False) " & _ "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Questa non gli andava ancora bene.. ho dovuto aggiungere STR anche per l'aggiornamento del campo “Residuo”.

    Così funziona:

    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Str(Me.Importo) & ", " & _
                          "Pagata = IIf(Residuo-" & Str(Me.Importo) & "=0, True, False) " & _
                          "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Grazie di nuovo!

  • Re: DAO Recordset su tabelle collegate

    Bravooo !!!! 

    mi raccomando guardati bene la function DBEngine e le stringhe Sql per le Select, Insert, Update, Delete etc.etc.. risolvi velocemente e facilmente molti aspetti nella programmazione. Agli inizi basta crearsi delle Query con le azioni che si vogliono eseguire… copiare ed incollare nel codice la stringa SQL che opportunamente richiede solo piccoli aggiustamenti e accorgimenti…. poi segui con molta attenzione i consigli di @Alex che lui è un eccellenza in materia.

    Buon lavoro

  • Re: DAO Recordset su tabelle collegate

    05/05/2023 - DrJack89 ha scritto:


    Grazie ad entrambi!

    04/05/2023 - By65Franco ha scritto:


    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Me.Importo & ", " & _ "Pagata = IIf(Residuo-" & Str(Me.Importo) & "=0, True, False) " & _ "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Questa non gli andava ancora bene.. ho dovuto aggiungere STR anche per l'aggiornamento del campo “Residuo”.

    Così funziona:

    DBEngine(0)(0).Execute "UPDATE T_Scadenze SET Residuo = Residuo-" & Str(Me.Importo) & ", " & _
                          "Pagata = IIf(Residuo-" & Str(Me.Importo) & "=0, True, False) " & _
                          "WHERE IDScadenza=" & Me.IDScadenza & ";"

    Grazie di nuovo!

    Quando esegui Query di Tipo Action, tutti i campi Numerici che potenzialmente con decimali devono avere la conversione.

    Saluti

  • Re: DAO Recordset su tabelle collegate

    05/05/2023 - @Alex ha scritto:


    Quando esegui Query di Tipo Action, tutti i campi Numerici che potenzialmente con decimali devono avere la conversione.

    Got it!

    Grazie di nuovo ad entrambi @Alex e By65Franco !

    Saluti

Devi accedere o registrarti per scrivere nel forum
25 risposte