Sulla comprensione di oggetti e attributi

di il
2 risposte

Sulla comprensione di oggetti e attributi

Giusto per debugare ho creato una routine fasulla e capire dove sbagliavo.
In verità non sbaglio. Il problema è che non so e che purtroppo non riesco a capire.
Spero ci sia qualcuno (e questo è certo) che questa canzone la sappia tutta e mi apra il teschio.

Io sto impazzendo, non so più cosa provare.

Ho una maschera che si chiama SM_Attori. Con un pulsante interno alla SM vado in routine e mi arriva sulla prima linea di programma : errore 424: Necessario oggetto.
Tolgo la riga e mi fa lo stesso sulla seconda.
Metto le quadre, tolgo le quadre, metto i punti e i punti esclamativi.
Metto forms e tolgo forms
... Gli errori passano dal "Propprietà o metodo non supportati" al "Necessario oggetto" al "Access non trova il campo a cui si fa riferimento", oppure "non si riesce a trovare la maschera SM_Attori".

Vi prego, vorrei leggere qualcosa di molto semplice per capire ma l'"Help" è ancora ostico per me.
Il mio gol è quello di:
- caricare un numero di record in una variabile (per esempio "posiz")
- di tornare, dopo una bella passeggiata nuovamente a "posiz + 1"
- testare la condizione di fine file
saluti
antonio cuomo

Private Sub Comando16_Click()
Dim posiz As Long
SM_Attori.SetFocus
posiz = SM_Attori.CurrentRecord
MsgBox SM_Attori.id_nom_pers
MsgBox posiz
DoCmd.GoToRecord , , acNext
posiz = SM_Attori.CurrentRecord
MsgBox SM_Attori.id_nom_pers
MsgBox posiz
End Sub

2 Risposte

  • Re: Sulla comprensione di oggetti e attributi

    La SM è un oggetto di tipo Maschera.
    Quando viene inserita una maschera come sottomaschera questa complica un po le cose, nel senso che l'oggetto prima della SM è un Contenitore nel quale c'è la sottomaschera.
    Quindi se dalla maschera vuoi leggere la proprietà CurrentRecord della SM devi esplicitare che ti riferisci all'oggetto Maschera contenuto nel contenitore....
    Lo so che sembra un poco complicato. ..

    Quindi:
    Recordcorrente=Me!SM_ATTORI.Form.CurrentRecord

    Così per tutte le proprietà, metodi ed eventi della SM.
    Dovresti sempre riportare il percorso gerarchico completo per completezza.
    C'è poi una differenza tra l'uso del punto e del puntovirgola. ..
    Il punto si usa per accedere ai membri dell'oggetto quindi proprietà, metodi ed eventi.
    Il puntovirgola si usa per accedere ad un oggetto.

    Sicché la SM essendo oggetto è riferita cosi:
    Me!NomeSM
    Se devi accedere alla proprietà backcolor del corpo della SM essendo questa una proprietà di una Section sarà cosi:
    Me!NomeSM.Form.Section(acDetail).Backcolor=255

    Spero di averti fatto chiarezza..
  • Re: Sulla comprensione di oggetti e attributi

    Mio caro Alex, ormai per come ti conosco tu sei come un faro per tanti di noi pseudo-programmatori quindi non solo hai fatto chiarezza ma addirittura luce.
    Il fatto è che spesso chi ti segue (come me) o è cieco o ha a che fare con un mulo cocciuto.
    So anche bene che non rientra nei tuoi piaceri fare debug dei progetti altrui, ma in questo caso ti chiedo, giusto per non buttare all'aria almeno un mese di lavoro, una rapida consulenza.
    Ho bisogno di uscire da questo buco nero in cui sono capitato. In pratica ti sto chiedendo di scrivermi la riga giusta in chiaro anche se ciò, lo so, contravviene ai tuoi principi.

    Direttamente da menù io carico una maschera che si chiama "M_Impegni".
    In questa M ci sono alcune SottoMaschere ma per nostra comodità consideriamone solo due: "SM_Lista" ed "SM_Attori"
    Fuori da queste due "SM" (ma sempre all'interno di "M"), ho inserito un controllo "opzioni".
    Una delle opzioni mi manda in una routine dove vado a lavorare sui record sia di "SM_Lista" che di "SM_Attori". Io ti chiedo per favore :

    - come passare con .Setfocus da una SM all'altra
    - come caricare nella variabile posiz il numero di record su cui mi trovo
    - come saltare al numero di record (posiz + n)

    P.S. Utilizzando i tuoi chiarimenti mi sono creato (per prova),un pulsantino all'interno di una di una "SM" ed ho appurato che sia
    posiz = Me. CurrentRecord che DoCmd.GoToRecord , , acGoTo, posiz + n funzionano bene. Ma solo se resto sulla stessa SM

    Alex: ..... a buon rendere (si fa per dire).
    Ciao antonio cuomo
Devi accedere o registrarti per scrivere nel forum
2 risposte