Newsgroup: it.comp.appl.access
Titolo: Ho scoperto perchè il mio programma in access non si chiude

Ciao a tutti
Finalmente ho capito il motivo perchè quando chiudo il mio programma rimane 
aperto nel tast manager MsAccess.exe.
E' colpa di una sottomaschera foglio dati: quando apro la maschera 
principale ridimensiono la larghezza delle colonne (ogni volta che esco 
salvo la larghezza in una tabella)
Credo che Access non si chiuda (anzi sono sicuro, ho tolto questa routine e 
funziona) perchè esco senza salvare queste impostazioni: uscendo però non mi 
chiede niente...
Come posso forzare di salvare la struttura di una sottomaschera? Oppure 
annullare le modifiche (della struttura, non dei dati)?
Tenete presente che poi il programma verrà distribuito in formato mde 
(Access 2003)
Grazie
Ciao
Luca 

 ha scritto nel messaggio 
news:494625bd$1...@news.x-privat.org...

In foglio dati, modificando la larghezza delle colonne, non modifichi la 
struttura della maschera...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ok, allora che può essere?
Se commento la funzione che mi imposta la larghezza delle colonne non mi da 
problemi
Grazie
Ciao
Luca 

 Luca
Cosa e perché succede, non lo so'; i casi (e le possibili soluzioni 
alternative) possono essere molteplici, sopratutto (come dici tu) con una 
funzione (perché non la indichi?) che imposta la larghezza colonna...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:494763de$0$11373$5fc...@news.tiscali.it...

Ecco la funzione:
Public Sub CaricaImpostazioni(Maschera As Form)
Dim ctl As Control
Dim Rs_C As DAO.Recordset
Dim Altezza As Integer  ' Height
Set Rs_C = CurrentDb.OpenRecordset("Select * from T_LayOut Where 
NomeMaschera = '" & Maschera.Name & "' order by Posizione", , dbReadOnly)
With Rs_C
    If .RecordCount > 0 Then
        On Error Resume Next
AltroRecord:
        Maschera.Controls(!NomeCampo).Height = !Altezza
        If err.Number = 2465 And .EOF = False Then
            err.Clear
            .MoveNext
            GoTo AltroRecord
        End If
        Maschera.DatasheetFontName = !FontName
        Maschera.DatasheetFontHeight = !fontsize
        Do While Not .EOF
            Maschera.Controls(!NomeCampo).ColumnOrder = !posizione
            If !Larghezza > 0 Then
                Maschera.Controls(!NomeCampo).ColumnHidden = False
                Maschera.Controls(!NomeCampo).ColumnWidth = !Larghezza
            Else
                Maschera.Controls(!NomeCampo).ColumnWidth = !Larghezza
            End If
            .MoveNext
        Loop
        On Error GoTo 0
    End If
    .Close
End With
End Sub
La richiamo qui (nella sottomaschera):
Private Sub Form_Load()
    CaricaImpostazioni Me
End Sub
Ciao
Luca 

 ha scritto nel messaggio 
news:4948dbb8$1...@news.x-privat.org...

Io proverei cosě:
'---
On error goto errori
Dim ctl As new Control
Dim Rs_C As new DAO.Recordset
Dim Altezza As Integer  ' Height
...
Set Rs_C = CurrentDb.OpenRecordset("Select * from T_LayOut Where
NomeMaschera = '" & Me.Name & "' order by Posizione", , dbReadOnly)
With Rs_C
   If .RecordCount > 0 Then
       On Error Resume Next
AltroRecord:
       Me.Controls(!NomeCampo).Height = !Altezza
       If err.Number = 2465 And .EOF = False Then
           err.Clear
           .MoveNext
           GoTo AltroRecord
       End If
       Me.DatasheetFontName = !FontName
       Me.DatasheetFontHeight = !fontsize
       Do While Not .EOF
           Me.Controls(!NomeCampo).ColumnOrder = !posizione
           If !Larghezza > 0 Then
               Me.Controls(!NomeCampo).ColumnHidden = False
               Me.Controls(!NomeCampo).ColumnWidth = !Larghezza
           Else
               Me.Controls(!NomeCampo).ColumnWidth = !Larghezza
           End If
           .MoveNext
       Loop
       On Error GoTo 0
   End If
   .Close
End With
Set ctl = nothing
Set Rs_C  = nothing
Exit sub
errori:
    Set ctl = nothing
    Set Rs_C  = nothing
    msgbox err.number & " " & err.description
End Sub
'---
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:giaqll$9vv$1...@tdi.cu.mi.it...

Niente da fare...
Per un attimo ci avevo creduto!
(La nuova routine non da errori)
Ti ringrazio comunque
Luca 

 Luca
Aspetta!
Ma tu disabiliti la gestione degli errori; commenta le righe:
On Error Resume Next
e
On Error GoTo 0
e riprova...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:gibes0$3a9$1...@tdi.cu.mi.it...

Caspita, funziona....
Sai, non ci credevo, ho provato solo ora da quando me l'hai detto: ho 
trovato un errore, risolto quello ora ho tolto la gestione degli errori (non 
serve più) e il file si chiude
L'errore, per la cronaca, era che avevo nella sottomaschera un campo nella 
sezione piè di pagina maschera, che usavo per calcolare un totale: il campo 
era nascosto, mi serviva solo perché nella form principale facevo 
riferimento a questo totale.
Grazie mille
Luca 

 Luca
Bene; ma una routine di gestione dell'errore serve sempre; almeno da 
prendere in considerazione quando utilizzi degli oggetti che se non 
distrutti all'uscita (o allo scatenarsi di un errore) della stessa.
es.
'---
on error goto errori
Dim ctl As Control
Dim Rs_C As DAO.Recordset
...
Set Rs_C=...
Set ctl=...
...tue istruzioni...
'--> finita l'esecuzione delle istruzioni distruggo gli oggetti creati
Set Rs_C=nothing
Set ctl=...nothing
'<--
exit sub
errori:
'--> con qualsiasi errore distruggo gli oggetti creati
Set Rs_C=nothing
Set ctl=...nothing
'<--


 ha scritto nel messaggio 
news:49509adc$0$11379$5fc...@news.tiscali.it...

Hai ragione, tante volte non la metto per pigrizia...
E poi i clienti mi chiamano chiedendomi "Cosa vuole dire l'espressione su 
click...."
:)
Ciao
Luca