Newsgroup: it.comp.appl.access
Titolo: Casella di testo si popola, ma con testo ridotto

Salve,
Ho una casella ti sesto associata ad un campo di tipo MEMO,
che si compila attraverso gli item selezionati in una ListBox.
Quando seleziono uno degli Item (più di 257 caratteri) e la routine quindi invia alla Txtbox, la riga si ferma appunto a 257 caratteri inclusi spazi.
 
Dipende da un limite delle Listbox?
Quest'ultima ha origine dati in una query.
Ho controllato il testo nella query e sin lì il testo è completo, come da origine tabella. 
Ho provato a fare un Debug.Print e anche lì mi visualizza solo 257 caratteri.
Quindi è lì che avviene la riduzione: Listbox o VBA.
Come posso risolvere?

Si la ListBox taglia.
La ListBox è popolata da TAbella quindi immagino abbia una PK questa tabella ed immagino sia la BoundColumn...?
 
In questo caso recupera la PK dalla ListBox e pesca il valore dalla Tabella con il DLOOKUP su evento AfterUpdate della ListBox
 
Private NomeListBox_AfterUpdate()
   Me!NomeTextBox.Value=Dlookup("NomeCampo","NomeTabella","IdPK=" & me!NomeListBox.Value)
Enb If
 
@Alex 
 


Buongiorno Alex
No, la listBox non usa IdPk come campo di riferimento,
usa direttamente il Campo Descrizione.
Per cui ho pensato di modificare il Dlookup nei criteri così:
Me!Listbox1.Value = DLookup("Descrizione", "Approfondimenti", "Descrizione= '" & Me!Listbox1.Value & "'")
Il problema è che dopo l'aggiornamento 
c'è un pulsante che di fatto costruisce la stringa da copiare sulla txtbox:
 
For Each Posizione In Me.Listbox1.ItemsSelected
      strTxt = strTxt & "- " & Me.Listbox1.Column(1, Posizione) & vbNewLine
 
    Next
 
DoCmd.Close ' Chiude la form (popup) in cui ci sta dentro la listbox1
Forms!Anamnesi!Approfondimenti.Value = strTxt  
 
e qui mi son confuso. Come faccio a integrare le due routine?
 


devi per qualche motivo per forza usare una listbox?
mi pare di capire che lo scenario è simile a quello di un mio cliente 
che deve selezionare una serie di clausole contrattuali da una lista di 
clausole e inserire quelle selezionate in un campo testo del contratto 
che poi verrà stampato.
 
Trattandosi di clausole lunghe, non ho usato una listbox ma una maschera 
continua graficamente resa simile a una listbox per selezionarle, con il 
vantaggio di poter visualizzare tutta la singola clausola volendo prima 
di inserirla. (che nel suo caso era necessario visto che molte 
iniziavano con lo stesso testo)
La maschera continua ha un campo  ClausolaSelezionata che pesca dalla 
query di tutte le possibili clausole
 
E nel momento in cui fa doppio click sulla clausola questa viene 
accodata alla precedenti gia inserite con un banale
me.ClauseContratto=me.ClauseContratto & vbcrlf & me.ClausolaSelezionata
 
una riga di codice per trasferire il contenuto della riga scelta dalla 
finta listbox alla tua textbox. (nulla vieta di usare una form autonoma 
per la selezione )
 
Nel mio caso seleziono prima tutte le clausole scelte tramite dei flag e 
ne decido l'ordine di inserimento tramite apposito contatore. Inoltre 
avevo messo una casella "filtra" per limitare la lista delle possibili 
clausole inseribili. Se nel tuo caso l'ordine è quello di selezione non 
serve
 
se invece non centra nulla con quello che devi fare tu fai finta che non 
abbia scritto nulla
 
ciao
BFS
 
 
 
 
 


A livello di gestione e visualizzazione, credo che BSF abbia dato la soluzione più adatta.
Ti faccio però presente che non è normale non avere la PK come riferimento inquesti casi..., non puoi popolare i campi Relazionati con le descrizioni delle "CLAUSOLE", è un errore strutturale.
 
Quindi per la leggibilità segui quanto detto da BSF, ma per il normale funzionamento, sia tu voglia usare la LISTBOX che la MASCHERA CONTINUA, serve sempre far girare tra le tabelle solo ed esclusivamente i campi CHIAVE.
 
Aggiungo poi che la dove hai un catalogo "CLAUSLE" da selezionare per l'attrribuzione ad un Contratto... è indispensabile introdurre una logica in 3FN la relazione Molti a Molti, che richiede 3 Tabelle.
 
Contratti(1)---(M)ClausolePerContratto(M)---(1)Clausole
 
In questo modo rendi flessibile l'assegnazione di un Catalogo(Clausole) ad un Catalogo(Contratti)
 
Saluti
@Alex

Capito benissimo i tuoi ragionamenti.
Ma nel mio caso la tabella 'clausule' (ormai la chiamiamo così) ha un ID contatore ma tanto per...un domani...dovesse servirmi, ma non è in relazione con niente. Le righe vengono scelte e inserite nella tabella finale. 
Come fossero Elenco Valori 'x';'y';'z'; ma con stringhe molto lunghe.

Credo tu non abbia strutturato in modo adeguato il database... sembra più una tabella di excel... ma un database va strutturato secondo regole... la più classica usata è la normalizzazione.
 
Se la conosci ed hai volutamente deciso di non applicarla va bene... se invece non la conosci e la scelta deriva dalla non conoscrnza, ti suggerisco di ripensare alla parte strutturale perché andrai incontro a svariate complicazioni.
 
Per il resto... Non so cosa aggiungere.
 
@Alex

Già.  Spesso tendo ad usare le listbox come fossero 'novità' nei miei progetti, proprio perché non le uso quasi mai...ed infatti ogni volta c'è una ragione per cui sostituirle con qualcos'altro!
Ho messo i flag, un ciclo do loop per ogni riga selezionata... insomma qualcosa di simile alla tua idea.
Ciao grazie.

Si Alex, è voluta l'assenza di relazione. In genere sono fin troppo attento alla parte relazionale. Anzi qualche volta amici colleghi di programmazione in delphi mi accusano di essere troppo... 'fisico', attaccato a forms associate. Ed io li accuso di essere troppo 'volatili' nel maneggiare i dati :-)

 Si Alex, è voluta l'assenza di relazione. In genere sono fin troppo attento alla parte relazionale. Anzi qualche volta amici colleghi di programmazione in delphi mi accusano di essere troppo... 'fisico', attaccato a forms associate. Ed io li accuso di essere troppo 'volatili' nel maneggiare i dati :-)
 
Fai in ogni caso attenzione a portarti dietro gli indici... è sempre importante.
Se programmi in Delphi, gran linuaggio, non puoi trovare funzionale questo modo di gestire le cose... che vanno bene per chi ha veramente una conoscenza estremamente basica.
Se invece qualche tuo "amico" che sviluppa Delphi ti chiarisce meglio la base della OOP avrai molto da imparare e di qualità.
 
@Alex