Newsgroup: it.comp.appl.access
Titolo: Problema di impostazione

Ho ripetuto di nuovo il post perchč sono disperato
Ho un report in froma tabellare dove nelle righe ci sono i record e nelle
colonni i campi.
Ecco il problema i campi che compongono le colonne sono 4:
1) N.Disegno
2) Descrizione
3) Documento
4) Codice interno
Se nella descrizione non supera una riga il mio report risulta ordine e
perfetto
Se la descrizione supera la dimensione da me assegnata, automaticamente va a
capo, automentando lo spazio di quel campo.
Ecco il problema: aumentando automaticamente il campo della descrizione gli
altri 3 campi rimangono invariati, quindi nel report avrň che la cella del
N.Disegno - Documento - Codice interno sono piů corte rispetto a quella
della descrizione.
C'č un modo che all'aumentare della cella della descrizione le altre celle
vicine automentino automaticamente, in modo che nel report avrň una cella
cella unica divise in 4 create dai 4 campi.
C'č un modo per avere una notifica di questo msg in posta senza che vengo a
vedere se qualcuno mi ha risposto.
Se volete vi mando un allegato per chiarire le idee

 Se volete vi mando un allegato per chiarire le idee
Ti ho anche scritto di mandarmi questo benedetto file... ebbene?
Ciao. Claudio.


Marco,
ho ricevuto il tuo file e ho capito il problema. Se cerchi su Internet troverai
che è un problema noto, del quale Microsoft ha scritto anche un articolo
(
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q208429
).
Il problema è riassumibile così: Permettendo a un campo di un report di
espandersi (proprietà Espandibile/CanGrow = Sì), l'eventuale bordo di altre
caselle di testo sulla stessa riga non viene modificato.
Io ho provato a guardarmi in giro ma tutte le soluzioni non mi soddisfacevano,
perché non erano generalizzate. Era sempre necessario, di fatto, impostare
manualmente nelle routine gli x e y delle linee da tracciare con il metodo
line. Se uno cambiava posizione a un campo nel report era rovinato, o peggio se
ne aggiungeva.
Allora mi sono ingegnato e ho trovato una soluzione generale, che funziona
indipendentemente dal numero di campi e dalla loro dimensione (basta con la
modestia!!! questa soluzione mi piace proprio!).
Basta aggiungere nell'evento Print del corpo questo codice:
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
    Dim Controllo As Control
    Me.ScaleMode = 1
    For Each Controllo In Me.Controls
        If Controllo.ControlType = acTextBox And Controllo.Section = acDetail
Then
'            Me.Line (Controllo.Left, Me.ScaleTop)-(Controllo.Left +
Controllo.Width, Me.Height), , B
            Me.Line (Me.ScaleLeft, Me.ScaleTop)-(Controllo.Left +
Controllo.Width, Me.Height), , B
        End If
    Next Controllo
End Sub
Nonostante la semplicità del codice risultante, ho lavorato parecchio per
produrlo :-)
Noterai che ci sono due metodi Line, di cui uno commentato. Nella soluzione
proposta il risultato è un rettangolo che circonda il record, diviso
verticalmente da linee tra un campo e l'altro (il tuo esempio). Utilizzando la
Line commentata si ottengono invece tanti rettangoli che circondano ciascuno
ogni campo del record.
Ricorda inoltre che dovrai togliere dal report qualunque altra linea tu possa
aver messo, e rendere trasparenti le linee intorno alle caselle di testo: ogni
linea viene creata dal codice.
Spero che tutto ciò ti possa essere utile.
Ciao. Claudio.

 > Ho ripetuto di nuovo il post perchè sono disperato


 mio report.
Bentornato!
Beh, prova a scriverle sulla stessa riga. Oppure, forse č meglio, incolla
questo codice al posto:
'            Me.Line (Controllo.Left, Me.ScaleTop)-(Controllo.Left + _
Controllo.Width, Me.Height), , B
            Me.Line (Me.ScaleLeft, Me.ScaleTop)-(Controllo.Left + _
Controllo.Width, Me.Height), , B
Ciao. Claudio.