Newsgroup: it.comp.appl.access
Titolo: Trasferire più record in una sola casella testo

Dovrei creare in una campo "prova" origine di un controllo testo in una
maschera "frmPaolo" l'unione di più records. Come da consiglio di George ho
guardato sull'archivio di sito comune e ho trovato quanto mi serviva:
soltanto che non mi funziona! Ho scritto il codice qua sotto da attivare su
click di un bottone comando di frmPaolo, ma mi da inevitabilmente errore!
Il mio Database è PROVE: lanciando il codice dallo stesso Database aperto è
proprio necessario dichiararlo?
Tcolori è la tbl che contiene 3 campi: Id (chiave), colori e note.
 Dim PROVE As DATABASE, rst As Recordset
      NumeroColori = DCount("[colori]", "Tcolori")
     Set PROVE = CurrentDb
      Set rst = PROVE.OpenRecordset ("Tcolori", dbOpenDynaset)
     rst.MoveFirst
     prova = rst!colori
     For i = 1 To NumeroColori
     rst.MoveNext
     prova = prova & rst!colori
         If i = NumeroColori Then Exit For
         prova = prova & " - "
     Next i
     rst.Close
     Set dbs = Nothing
Ciao a tutti!

 Tcolori č la tbl che contiene 3 campi: Id (chiave), colori e note.




Infatti non hai bisogno di dichiararlo anche se non è un errore.
Set RST = currentdb.OpenRecordset("Tcolori")
Hai controllato che il campo "prova" della tua tabella possa contenere tutti
i caratteri necessari?
Che errore ti dà?
Se il controllo "Prova" è nella maschera, scrivi Me.Prova
Facci sapere.
Ciao, Carlo

 ha scritto nel
messaggio news:hziBa.14012$g92.3...@news2.tin.it...

Con le tue indicazioni ho semplificato il codice che adesso è:
 Dim rst As Recordset
      NumeroColori = DCount("[Colori]", "Tcolori")
      Set rst = CurrentDb.OpenRecordset("Tcolori")
     rst.MoveFirst
     Me.prova = rst!Colori
     For i = 1 To NumeroColori
     rst.MoveNext
     Me.prova = Me.prova & rst!Colori
         If i = NumeroColori Then Exit For
         Me.prova = Me.prova & " - "
     Next i
     rst.Close
ma cliccando sul comando, mi da errore su click per errore di compilazione
(classica maschera Access di errore con tanto di fumetto!)
Ciao!


Hai messo i riferimenti a DAO?
Hai compilato i moduli caricati e notato dove si ferma l'evidenziatore?
Se ci sono anche i riferimenti ad ADO insieme a quelli ad DAO, l'istruzione
va modificata (as DAO.Recordset).
Ciao, Carlo

 > Con le tue indicazioni ho semplificato il codice che adesso è:

Scusa ma cosa vuol dire mettere i riferimenti a DAO? Io uso ancora una
vecchia versione di Access 95, e quindi gli ADO sono fantascienza!
Putroppo io non ho mai usato i Dao più di tanto!

 ha scritto nel messaggio
news:gbDBa.15128$pR3.2...@news1.tin.it...

Ho provato a lanciare la compilazione del modulo (sinceramente è la prima
volta che la lancio per chè sono una vera "burba" del VBA) e mi ha segnalato
che la variabile "i" non era dichiarata. Ho provveduto a dichiararla, ora il
codice funziona come risultati (accorpa i vari records in un unico campo) ma
mi dà errore 3021 nessun record corrente.
Il nuovo codice è :
 Dim rst As Recordset
 Dim i As Integer
      NumeroColori = DCount("[Colori]", "Tcolori")
      Set rst = CurrentDb.OpenRecordset("Tcolori")
     rst.MoveFirst
     prova = rst!Colori
     For i = 1 To NumeroColori
     rst.MoveNext
     prova = prova & rst!Colori
         If i = NumeroColori Then Exit For
         prova = prova & " - "
     Next i
     rst.Close
Sembra che manchi qualche istruzione per dire di fermare l'esecuzione del
codice!
A cosa serve la compilazione del modulo?
Ciao e grazie a tutti!!

 ha scritto nel messaggio
news:PSEBa.15557$pR3.2...@news1.tin.it...

Per non incorrere in problemi di questo tipo, cicla il recordset in modo
diverso:
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Tcolori")
prova=""
Do while not rst.eof
    prova = prova & rst!Colori
    rst.movenext
    if not rst.eof then prova = prova & " - "
loop
rst.Close
Ciao

CUT

Oltre al consiglio di George, nel tuo caso, per come hai scritto il codice,
devi cambiare:
For i = 1 To NumeroColori
in
For i = 1 To NumeroColori -1
Questo perchè nella routine ti posizioni al primo record PRIMA (...e va
bene) del ciclo di For.
Se i record sono 10 la tua routine fa così:
si sposta al primo record, inizia il ciclo di For da uno a NumeroColori (10)
e con il "movenext" successivo è già spostato al secondo record.
i (la tua variabile) vale 1 ma il record è il secondo (vale 2)
Ecco che il ciclo deve ripetersi par 10 volte ma la decima volta non trova
"nessun record corrente", infatti sarebbe l'undicesimo che non esiste.
In alternativa puoi modificare il codice all'If:
If i = NumeroColori -1 Then Exit For
e lasciare immodificato For i = 1 To NumeroColori
Questa è una buona occasione per imparare come si svolge logicamente il
flusso del codice.
Ciao, Carlo