Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Errore sintassi in sottomaschera

  1. #11
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Il dato non è valorizzato correttamente mi pare evidente.
    ℹ️ Leggi di più su @Alex ...

  2. #12
    Rinaldino23 non è in linea Scolaretto
    Si me ne sono accorto.
    Non capisco perchè non lo valorizza correttamente solo quando al codice aggiungo la parte riguardante la sottomaschera

  3. #13
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    Con Cdate funziona correttamente anche nelle sottomaschere.
    Il problema nasce solo con FirstDayInWeek nelle due sottomaschere
    Sottomaschere? sono due? nel codice che avevi postato era una, con quella chiamata strana
    ...Form.CalcParam FirstDayInWeek...
    
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    Facendo Print firstdayinweek nella finestra immediata del debug, quando ricevo l’errore 00:00:00
    Che caos! non capisco più niente.
    Proviamo a ripartire?
    Se le due funzioni, CalcParam e FirstDayInWeek sono inalterate rispetto a quelle pubblicate in precedenza, non postarle nuovamente, però specifica dove sono scritte: modulo generale? le hai lasciate nella maschera principale? sono scritte anche nelle sottomaschere?
    Metti però il codice completo dell'evento, della sub o quello che è mai, in cui compare l'errore, specificando dove si trova (maschera principale, sottomaschera eccetera) e usa il nome reale delle maschere, così da riferirsi a quello che hai lì davvero.
    Immediatamente prima di ogni chiamata alle funzioni metti un
    Debug.Print variabiledelparametrodiFirstDayInWeek
    
    che può essere Me!txtGoToData o altro.

  4. #14
    Rinaldino23 non è in linea Scolaretto
    Si perdona la confusione, faccio chiarezza:
    La maschera principale si chiama Appuntamenti, mentre la sottomaschera si chiama Appuntamenti2.

    La funzione FirstDayinWeek è presente nel codice della maschera princiapele "Appuntamenti" e anche nella sottomaschera "Appuntamenti 2", la stessa cosa vale per la funzione CalcParam.
    Sono entrambe "Public Function"

    L'errore si presenta a livello della FirstDayinWeek presente nella maschera principale "Appuntamenti".

    Ho aggiunto il debug.print come segue:

    Function FirstDayInWeek(Optional dtmDate As Variant, Optional vFirstDayInWeek As VBA.VbDayOfWeek = VBA.VbDayOfWeek.vbMonday) As Date
        ' ------------------------------------------------------
        ' Restituisce il primo gg della settimana passando la Data
        ' ------------------------------------------------------
        Debug.Print Me!txtGoToData
        If IsMissing(dtmDate) Then dtmDate = Date
          
        FirstDayInWeek = Fix(dtmDate - Weekday(dtmDate, vFirstDayInWeek) + 1)
          
    End Function
    
    Me!txtgotodata viene valorizzato nel modo corretto, passandoci sopra il cursore ottengo il valore da me impostato nella maschera, tuttavia il debug evidenzia l'ultima riga della funzione dandomi come errore appunto "tipo non corrispondente"

    Grazie per l'aiuto e per la pazienza

  5. #15
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    Si perdona la confusione, faccio chiarezza:
    Ohhh... finalmente un po' di luce.

    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    La funzione FirstDayinWeek è presente nel codice della maschera princiapele "Appuntamenti" e anche nella sottomaschera "Appuntamenti 2", la stessa cosa vale per la funzione CalcParam.
    Sono entrambe "Public Function"
    Due funzioni identiche, Public, in due maschere aperte contemporaneamente. Non ti sembra che tutto questo sia "contrario al buon senso", che nella maggiorparte dei casi corrisponde anche alle regole di scrittura di buon codice? Correre subito, ma subito subito, a dichiararle in un modulo standard, passando il riferimento alla maschera come avevo indicato, eliminadole dalle maschere.
    Quando hai sistemato in quel modo guardiamo per quale controllo e per quale maschera si verifica l'errore, mettendo un punto di interruzione nelle maschere ad ogni chiamata della funzione CalcParm (che prevede l'uso di FirstDayinWeek)
    (togli dalla funzione Debug.Print Me!txt... perché quando è in un modulo standard non si può usare Me!)

  6. #16
    Rinaldino23 non è in linea Scolaretto
    Hai ragione, prima scrivendo mi sono accorto di quanto fosse ridodontante.
    Tuttavia, ho spostato in un nuovo modulo la funzione FirstDayinWeek cancellandola dalle maschere.
    Se provo a fare lo stesso con CalcParam si genera un errore all'apertura della maschera dovuto al fatto che nella funzione ci sono alcuni riferimenti per la maschera "Me!..." posso rendela privata e lasciarla all'interno della maschera?

    p.s. se può essere utile, commentando il calcparam della maschera princiapale, in questo modo:

    Private Sub txtGoToData_AfterUpdate()
       'CalcParam FirstDayInWeek(Me.txtGoToData)
       Me!Appuntamenti2.Form.CalcParam FirstDayInWeek(Me.txtGoToData)
    End Sub
    
    funziona correttamente nella sottomaschera, quindi è come se non funzionasse solo quando li attivo entrambi, a prescindere da quale sia.
    Ultima modifica di Rinaldino23; 04-04-2021 12:00 

  7. #17
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    ...ci sono alcuni riferimenti per la maschera "Me!..." posso rendela privata e lasciarla all'interno della maschera?
    Prova, se ti senti "più sicuro" così, male che vada non funziona (già non funzionava prima). Sta di fatto che quand'anche si risolvesse con questo sistema della funzione Private nella maschera non c'è motivo perché non debba funzionare con una funzione unica scritta in un modulo standard e Public, dicendo su quale maschera deve agire.
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    ...funziona correttamente nella sottomaschera, quindi è come se non funzionasse solo quando li attivo entrambi, a prescindere da quale sia.
    Come ti ho scritto in un post precedente, prima di ogni chiamata della funzione CalcParam metti il Debug.Print di Me.txtGoToData
    Private Sub txtGoToData_AfterUpdate()
       Debug.Print "Prima chiamata = " & Me.txtGoToData
       CalcParam FirstDayInWeek(Me.txtGoToData)
       Debug.Print "Seconda chiamata = " & Me.txtGoToData
       Me!Appuntamenti2.Form.CalcParam FirstDayInWeek(Me.txtGoToData)
    End Sub
    
    Guarda cosa compare nella finestra immediata.
    Comunque1: a meno che CalcParam non vada a modicare anche txtGoToData, non ha senso invocare due volte FirstDayInWeek due volte, per calcolare la data da passare a CalcParam. Si dichiara una variabile di tipo data, si assegna a questa il risultato di FirstDayinWeek(Me.txtGoToData) chiamata da sola e si passa la variabile alle due chiamate di CalcParam. Ripeto: se CalcParam non va a modificare txtGoToData.
    Comunque2: solo quando hai detto che CalcParam è scritta in entrambe le maschere questa sintassi ha avuto senso
    Me!Appuntamenti2.Form.CalcParam FirstDayInWeek(Me.txtGoToData)
    
    (penso di aver trovato tutti i modi di scrivere sbagliato CalcParam, spero di aver corretto dappertutto)

  8. #18
    Rinaldino23 non è in linea Scolaretto
    ho inserito il debug.print, e inserendo come data, ad esempio in txtgotodata 29/05/2021, ottengo:

    Prima chiamata = 29/05/21
    Seconda chiamata = 24/05/2021

    Per quanto riguarda il Comunque 1, confermo che CalcParam non va a modificare il txtgotodata, di conseguenza vorrei come dici tu assegnare una variabile di tipo data e assegnarla poi, ma ho difficoltà nella sintassi, avevo pensato a questo :

    Private Sub txtGoToData_AfterUpdate()
      Dim GiornataScelta As Date
      
      GiornataScelta = FirstDayInWeek(Me.txtGoToData)
      
      Me.CalcParam (GiornataScelta)
      Me!Appuntamenti2.Form.CalcParam (GiornataScelta)
    
    End Sub
    
    così sembrerebbe funzionare, pensi possa andar bene?
    Ultima modifica di Rinaldino23; 04-04-2021 17:02 

  9. #19
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    ... in txtgotodata 29/05/2021, ottengo:
    Prima chiamata = 29/05/21
    Seconda chiamata = 24/05/2021
    e questo già è preoccupante, o no? A maggior ragione nel momento in cui prosegui dicendo
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    ... confermo che CalcParam non va a modificare il txtgotodata
    il debug.print ha appena dimostrato che tra una chiamata e l'altra Me.TxtGoToData cambia.
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    di conseguenza vorrei ...
    di conseguenza vorresti giustamente capire perché tra una chiamata e l'altra succede questo, che in teoria non dovrebbe succedere. Per questa cosa invece
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    assegnare una variabile di tipo data e assegnarla poi, ma ho difficoltà nella sintassi,
    Private Sub txtGoToData_AfterUpdate()
      Dim GiornataScelta As Date
      GiornataScelta = FirstDayInWeek(Me.txtGoToData)
    
    fin qui ci siamo. Aggiungi immediatamente dopo un Debug.Print GiornataScelta fino a quando non ne usciamo.
    E' qui che cade tutto.
      Me.CalcParam = GiornataScelta
      Me!Appuntamenti2.Form.CalcParam = GiornataScelta
    
    Anche se uno non si rendesse conto che la funzione CalcParam vuole una data quando viene chiamata e che quindi scrivere
    CalcParam = quellochetipare
    
    non potrà mai funzionare, andando di pura logica, terra terra:
    1) prima chiamavi due volte la funzione in questo modo
    CalcParam FirstDayInWeek(Me.txtGoToData)
    
    2) hai una variabile, adesso, che è già il risultato di
    FirstDayInWeek(Me.txtGoToData)
    
    3) basta sostituire FirstDayInWeek(Me.txtGoToData) con la variabile che ne contiene il risultato, ci si riusciva anche con un "Trova/Sostituisci" da menù, tanto per dire quanto fosse banale. Tradotto: perché hai sentito il bisogno di mettere un [=] dopo CalcParam?
    Rinaldino23... se non ne esci seguendo le indicazioni di questo post, l'unica è che pubblichi un file dimostrativo del tuo db perché ci stiamo perdendo in cose che sembrano non aver senso e tu ci metti del tuo a complicare la soluzione.
    Se si arriva a questo punto, mi raccomando: un file ridotto all'osso, non tutto il db (inutile aggiungere che non devono esserci dati sensibili/personali/identificativi), e con la situazione di partenza, quella di cui al post di apertura, verificando che il problema si presenti anche in quel file.

  10. #20
    Rinaldino23 non è in linea Scolaretto
    Perdonami ho modificato poi il codice nella mia ultima risposta ma mi sa che avevi già cominciato a scrivere, mi ero accordo dell'errore madornale.
    Ora riguardo con attenzione le tue indicazioni e cerco di uscirne per capire il senso di tutto.
    Grazie ancora

+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Errore di sintassi
    Da genespos nel forum PHP
    Risposte: 5
    Ultimo Post: 04-07-2014, 11:28
  2. errore di sintassi
    Da bordelloweb nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 13-06-2009, 23:32
  3. Errore Di sintassi
    Da Cis nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 09-01-2007, 18:44
  4. [C++] errore di sintassi
    Da killer0007 nel forum C/C++
    Risposte: 12
    Ultimo Post: 17-10-2005, 08:54
  5. Errore di sintassi
    Da Kovacevic83 nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 13-04-2005, 10:54