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

Errore sintassi in sottomaschera

  1. #1
    Rinaldino23 non  in linea Scolaretto
    Buongiorno a tutti,
    questo breve codice mi restituisce un errore (Tipo non corrispondente) solamente quando aggiungo la riga riguardante la sottomaschera "Appuntamenti2", evidentemente sbaglio qualcosa nella sintassi, o mi sfugge altro?

    Grazie

    Buona giornata

    Private Sub txtGoToData_AfterUpdate()
       CalcParam FirstDayInWeek(Me.txtGoToData)
       Me!Appuntamenti2.Form.CalcParam FirstDayInWeek(Me!txtGoToData)
    End Sub
    

  2. #2
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    questo breve codice mi restituisce un errore (Tipo non corrispondente)
    Che cos' CalcParam?

  3. #3
    Rinaldino23 non  in linea Scolaretto
    Public Function CalcParam(newData As Date)
       
       DATADA = Fix(newData)
       DATAAL = DateAdd("d", 6, DATADA)
    
       Me.lblSettimanale.Caption = "Settimana da " & _
                                   StrConv(Format(DATADA, "dddd dd mmmm"), vbProperCase) & " a " & _
                                   StrConv(Format(DATAAL, "dddd dd mmmm"), vbProperCase)
                                   
    
       Call RefreshDataControl
       
       Call ReBuildRS
    
       If ctlOld <> "" Then
          Me.Controls(ctlOld).Selected(Me.Controls(ctlOld).ListIndex) = False
          Me.Controls(ctlOld).BackColor = cBK_NOW
          ctlOld = ""
       End If
       Call RefreshDay
    End Function
    

    allego anche firstdayinweek

    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
        ' ------------------------------------------------------
        If IsMissing(dtmDate) Then dtmDate = Date
          
        FirstDayInWeek = Fix(dtmDate - Weekday(dtmDate, vFirstDayInWeek) + 1)
          
    End Function
    

  4. #4
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    Public Function CalcParam(newData As Date)
    
    Dove scritta? in un modulo standard? nella sottomaschera?
    Perch qui la chiami
    CalcParam FirstDayInWeek(Me.txtGoToData)
    
    e dopo la chiami con questa sintassi?
    Me!Appuntamenti2.Form.CalcParam ...
    
    Sembra dichiarata a livello di maschera, in quel modo l, come se fosse una metodo della stessa.
    Sintassi strana.
    Ultima modifica di Phil_cattivocarattere; 03-04-2021 06:04 

  5. #5
    Rinaldino23 non  in linea Scolaretto
    si dichiarata a livello della maschera principale, la chiamo in due modi diversi perch uno si riferisce agli oggetti della maschera principale e il secondo CalcParam deve agire nella sottomaschera.
    evidentemente sbaglio qui?

  6. #6
    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    si dichiarata a livello della maschera principale,
    Quindi questa cosa
    Me!Appuntamenti2.Form.CalcParam
    
    cos'? Hai un'altra funzione che si chiama nello stesso modo in Appuntamenti2? un controllo che si chiama CalcParam?
    Prima bisogna chiarire questo.

    Quote Originariamente inviato da Rinaldino23 Visualizza il messaggio
    la chiamo in due modi diversi perch uno si riferisce agli oggetti della maschera principale e il secondo CalcParam deve agire nella sottomaschera.
    evidentemente sbaglio qui?
    Esatto. Se quella funzione pu agire su pi maschere, a mio avviso dovresti scriverla in un modulo standard, ovviamente sempre Public (esplicito, meglio) passando come parametro anche la maschera sulla quale agire.
    Vedo che nel codice usi variabili che non sono dichiarate quindi immagino che siano dichiarate a livello di modulo (della maschera), ecco... serve qualche aggiustamento.
    (preparo 3 righe di esempio stupido)

  7. #7
    Codice che funziona solo nella maschera in cui si trova.
    Option Compare Database
    Option Explicit
    
    Public Function CambiaControlli()
    
    	Me.txtBox1.Value = 1
    	Me.Controls("txtBox2").Enable = False
    
    End Function
    
    Private Sub cmdButton_Click()
    
    	CambiaControlli
    
    End Sub
    
    Codice che pu agire su qualsiasi maschera (che ovviamente contenga due controlli che si chiamano txtBox1 e txtBox2)
    Questo si scrive in modulo standard
    Option Compare Database
    Option Explicit
    
    Public Function CambiaControlli(ByVal NomeForm as String)
    Dim frm As Form
    Set frm = Forms(NomeForm)
    
    	frm.txtBox1.Value = 1
    	frm.Controls("txtBox2").Enable = False
    
    Set frm = Nothing
    End Function
    
    Questo lo scrivi nelle varie maschere in cui vuoi far fare quelle stesse operazioni sui due controlli txtBox1 e txtBox2

    Private Sub cmdButton_Click()
    
    	CambiaControlli Me.Name
    
    End Sub
    
    ( codice scritto al volo, prendine il concetto, non il funzionamento reale perch una funzione stupida)
    Ultima modifica di Phil_cattivocarattere; 02-04-2021 13:28 

  8. #8
    Rinaldino23 non  in linea Scolaretto
    ti ringrazio per l'aiuto innanzitutto.
    Ho provato a spostare la funzione CalcParam in un modulo a parte, ma il risultato non cambia.

    Quando ricevo l'errore il debug mi evidenza in realt la funzione Firstdayinweek dandomi il messaggio "tipo non corrispondente"

  9. #9
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Fai debug passo passo di quella funzione... la cosa strana dal momento che passi una data.
    Mi viene il dubbio che nella textbox non ci sia una data ma del testo...
    Prova a passare la textbox con cdate(me.nometextbox)
    ℹ️ Leggi di pi su @Alex ...

  10. #10
    Rinaldino23 non  in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Fai debug passo passo di quella funzione... la cosa strana dal momento che passi una data.
    Mi viene il dubbio che nella textbox non ci sia una data ma del testo...
    Prova a passare la textbox con cdate(me.nometextbox)
    Con Cdate funziona correttamente anche nelle sottomaschere.

    Il problema nasce solo con FirstDayInWeek nelle due sottomaschere, se mi limito solo alla principale funziona correttamente.

    Facendo Print firstdayinweek nella finestra immediata del debug, quando ricevo lerrore 00:00:00

+ Rispondi al messaggio
Pagina 1 di 3 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