Newsgroup: it.comp.appl.access
Titolo: Problema con report e caselle di testo

Nel corpo di un report (la cui origine dati è una tabella) ho una situazione
del genere:
CasellaTesto1
CasellaTesto2
CasellaTesto3
CasellaTesto4
CasellaTesto5
CasellaTesto6
Tutte le CaselleTesto contengono dati di testo.
CasellaTesto1,2 e 6  hanno sempre dati, mentre le altre possono averli
oppure no.
Tutte le caselle di testo hanno impostato a "Sì" la proprietà "Espandibile",
in quanto può capitare
di avere testo lungo e non voglio aumentare la dimensione orizzontale della
casella nella struttura
del report.
Il problema è questo:
quando non ho scritte nella CaselleTesto5, la CasellaTesto6 dovrebbe
sostituire il posto della 5.
Lo stesso dicasi se mancano le CaselleTesto3,4 e 5 (la CasellaTersto6 deve
prendere il posto della
3).
Ho trovato dei suggerimenti nell' ng che mi hanno aiutato, ma non riesco a
risolvere il problema
quando, ad esempio, nella CasellaTesto4 ho del testo che occupa 2 o più
righe mi capita che
la CasellaTesto6, non trovando la 5, prende il suo posto e mi sovrascrive la
seconda riga della
CasellaTesto4.
Se qualcuno può darmi una mano, ringrazio anticipatamente.
Ciao Mauro

 ha scritto nel messaggio
news:U0u77.30059$NZ6.1...@news.infostrada.it...

Potresti unire tutte le caselle o alcune. Ad esempio crei nel report
un campo testo non associato e metti come origine dei dati:
= [testo1] & Chr$(10) & Chr$(13) & [testo2] & Chr$(10) & Chr$(13) [testo3]
In questo caso però se manca testo1 il "Chr$(10) & Chr$(13)" ti fa saltare
una
riga, per ovviare dovresti impostare il testo della casella da codice "su
formattazione",
es.
dim strAcapo as string, strTesto as string
If not isnull(me!testo1) then strAcapo = Chr$(10) & Chr$(13) else: strAcapo
= ""
strTesto = me!testo1 & strAcapo & me!testo2
me!primo_testo = strTesto
I campi testo1 e testo2 devono essere presenti nel report con la proprietà
visibile = no, primo_testo è una casella di testo non associata.
Ciao
Arturo

 ha scritto nel messaggio
news:Glu77.30092$NZ6.1...@news.infostrada.it...



Ho risolto trovando un esempio sul sitocomune, molto simile all'indicazione
che mi hai dato.
Grazie lo stesso; ti chiedo però se sai aiutarmi su questo (posto quello
trovato sul sitocomune):
Option Compare Database
Option Explicit
Function AddressBlock(strName, strAddr1, strAddr2, strCity, strState,
strZip) As String
         Dim strFirstRow As String, strSecondRow As String, strThirdRow As
String
         Dim strFourthRow As String, strHardReturn As String
         strFirstRow = NulltoString(strName)  'Sending strName to usder
defined function NulltoString found in this module
         strSecondRow = NulltoString(strAddr1)  'Sending strAddr1 to usder
defined function NulltoString found in this module
         strThirdRow = NulltoString(strAddr2)   'Sending strAddr2 to usder
defined function NulltoString found in this module
         strFourthRow = strCity & ", " & strState & " " & strZip
         AddressBlock = strFirstRow & strSecondRow & strThirdRow &
strFourthRow   'Concatenate the strings.
 End Function
 Function NulltoString(Optional strCheckValue) As String
 'NtS or Null to String will return a Zero Length String if the CheckValue
is Null or if not null then
 'it will return the strCheckValue wiht a hard return
    If IsNull(strCheckValue) Then
        NulltoString = ""
    Else
        NulltoString = strCheckValue & Chr(13) & Chr(10)
    End If
Ecco a me servirebbe che la strFourthRow fosse sempre in grassetto e che
potesse gestire sia dati stringa che valuta (anche euro).
Puoi per caso aiutarmi?
Ciao Mauro

 Puoi per caso aiutarmi?
E' una routine per scrivere indirizzi ...  Alla fine ritorna un AddressBlock
che andrà asseganto ad un controllo di un Report (se ho ben capito).
All'interno dello stesso controllo o tutto il testo è in grassetto o non lo
è. Questa routine tratta stringhe di caratteri non gestisce nessuna valuta
se non come testo da stampare.
Se vuoi la possiamo adattare al tuo caso, ma non fa differenzia tra
grassetto e
non. Per distinguere il grassetto devi fare più blocchi e non uno.
Una soluzione INDOLORE può essere questa se tu fai i controlli MOOOOOLTO
sottili anche meno di un millimetro se c'è testo si espandono da soli, se
non c'è perdi un millimetro di foglio, il che non è grave. Ricordati di
mettere che anche il corpo del report sia ingrandibile che riducibile.
Altrimenti c'è sempre la stampa-unione da Word, che formatta come più ti
pare.
Ciao
Arturo

 ha scritto nel messaggio
news:YfG77.2038$0Z1....@news.infostrada.it...

Ho adottato questa soluzione:
Option Compare Database
Option Explicit
Function PreventiviBlock(strMateriale, strPose, strEsclusioni,
strPosaFornitura) As String
         Dim strFirstRow As String, strSecondRow As String, strThirdRow As
String
         Dim strHardReturn As String
         strFirstRow = NulltoString(strMateriale)  'Sending strName to usder
defined function NulltoString found in this module
         strSecondRow = NulltoString(strPose)  'Sending strAddr1 to usder
defined function NulltoString found in this module
         strThirdRow = NulltoString(strEsclusioni)   'Sending strAddr2 to
usder defined function NulltoString found in this module
         PreventiviBlock = strFirstRow & strSecondRow & strThirdRow
'Concatenate the strings.
 End Function
 Function NulltoString(Optional strCheckValue) As String
 'NtS or Null to String will return a Zero Length String if the CheckValue
is Null or if not null then
 'it will return the strCheckValue wiht a hard return
    If IsNull(strCheckValue) Then
        NulltoString = ""
    Else
        NulltoString = strCheckValue & Chr(13) & Chr(10)
    End If
End Function
Nel corpo del Report ho, in sequenza, due CaselleTesto associate a campi,
poi ho inserito una casella di testo che si collega a questa funzione
(quindi analizza le prime tre righe), quindi una casellatesto1 che mi svolge
la funzione di quarta riga la cui origine dati è un campo testo di una
tabella, a cui ho affiancato una casellatest2 la cui origine dati è la somma
di costi (formattata come valuta).
Con queste condizioni, mi succede così: il report stampa tutti i record
segnalandomi #Errore nella casellatest2 (valuta), mentre stampa giusto
quando le tre righe della funzione non contengono dati.
Se mi sono spiegato bene, hai per caso capito dov'è l'inghippo?
Ciao Mauro

 Se mi sono spiegato bene, hai per caso capito dov'č l'inghippo?
Mah, quando scrive #Errore in un controllo calcolato di un report c'č un
problema di origine dati... Se puoi la somma falla fare alla query origine
dati del report, altrimenti controlla se la somma che hai impostato č
scritta in modo corretto. Non vedo il nesso con le tre righe, centrano in
qualche modo con la somma?
Ciao
Arturo


Il controllo calcolato funziona sicuramente. Ti segnalo la struttura del
Corpo del Report:
CasellaTesto1 associata a dati
CasellaTesto2 associata a dati
CasellaNonAssociata contenente la funzione di cui sopra
CasellaTesto3  associata a dati      CasellaTesto4(contenente il campo
calcolato)
Per quei record che hanno dati all'interno della CasellaNonAssociata, la
CasellaTesto4 mi dà #Errore
Mentre per i record che non hanno dati nella CasellaNonAssociata, quindi
sono composti da CasellaTesto1 e CasellaTesto2,
la CasellaTesto4 mi fà vedere il valore calcolato.
A questo punto non so più che pesci pigliare. O cambio decisamente sistema o
spero che tu riesca ad aiutarmi.
Ciao e....grazie per l'aiuto fin qui concessomi
Mauro

 ha scritto nel messaggio
news:FKW77.5755$0Z1.1...@news.infostrada.it...

Sinceramente da "qui" non riesco a capire a cosa possa essere dovuto, magari
è una cosa banale ... Io proverei a fare i controlli belli sottili e a
lasciar perdere il codice, se fai i controlli alti un millimetro o meno e
lasci poco spazio bianco tra uno e l'altro (giusto un'interlinea) e in più
attivi la proprietà riducibile e espansibile sia dei controlli che del corpo
del record alla fine nessuno si accorge di un campo rimasto vuoto.
A volte le vie più semplici sono da preferire ...
Cordialmente
Arturo

 ha scritto nel messaggio
news:dbe87.11205$0Z1.3...@news.infostrada.it...

Soluzione trovata!!!
Funziona sia da codice che con i controlli rimpiccioliti.
Il problema, come mi avevi detto, era che un campo, che faceva parte del
controllocalcolato,
non aveva il formato numerico standard come tutti gli altri, quindi
l'espressione non veniva calcolata.
Grazie per tutto l'aiuto che mi hai dato
Ciao Mauro