Newsgroup: it.comp.appl.access
Titolo: Casella combinata da + campi

Salve a tutti...
qualcuno saprebbe come posso impostare che l'elenco di una casella combinata
sia l'insieme + più campi ?
(Sarò stato chiaro?) :P
Vediamo....se io creo una casella combinata selezionando come origine due o
+ campi il risultato ottenuto alla selezione è una serie di record disposti
in orizzontale:
_________________
|  campo1  |  campo2  |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Io invece vorrei ottenere il risultato inverso cioè i dati inseriti nei
campi ...disposti a tendina:
_________
|  campo1  |
¯¯¯¯¯¯¯¯
| campo2  |
¯¯¯¯¯¯¯
Grazie mille ragazzi....

 ha scritto nel messaggio
news:qQsxb.112328$hV.40...@news2.tin.it...

Dovresti creare una tabella di appoggio dove accodi i dati di campo2 a
campo1, in alternativa se non sono tanti i record puoi, con VBA, dare come
origine alla casella combinata una stringa composta dai valori campo1;
campo2; campo1; campo2 etc. etc.
Ciao.
--
Sergio MAZZA

Salve a tutti...
ho postato il 28 un articolo dove esponevo il problema a incolonnare in una
casella combinata i record provenienti da + campi....Sergio Mazza mi aveva
risposto che č possibile nel caso in cui dando come origine una stringa
composta dai valori dei campi...ma io non ci sono riuscito...qualcuno ha in
mente un altra alternativa.. ? o mi potrebbe postare un codice vb ?
Grazie nuovamente...
CiAuZzzZz


Ehi! Pst! Pst! Sono (Siamo) qui eh!
Non ci sei riuscito (il perchè non l'hai detto) o vuoi un'alternativa?
Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:bqknlr$qpc$1...@canarie.caspur.it...

Ciao Sergio....in verità ho provato realizzando delle query ma niente....in
VB non ho proprio idea di come si possa fare....se hai da suggerirmi un
alternativa magari postandomi un esempio di codice vedo un pò se riesco ad
arrangiare una soluzione...
Grazie di tutto....


Questo è un esempio; sempre se ho capito cosa ti serviva:
'-----------
Dim rst As Recordset, stringaCMB As String, passo As Integer
Set rst = CurrentDb.OpenRecordset("Tabella4")
stringaCMB = ""
passo = 0
Do While Not rst.EOF
    stringaCMB = stringaCMB & ";" & rst("campo1") & ";" & rst("campo2")
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Me!CasellaCombinata1.RowSource = Mid(stringaCMB, 2)
'-----------
Imposta la proprietà della casella combinata "Tipo origine riga" a "Elenco
valori"...
Ciao.
--
Sergio MAZZA

 Sergio MAZZA
Ciao Sergio....allora...ho provato a impostare al codice VB alla maschera
dove si trova la casella combinata ma niente....non riesce a pescare i dati
dai campi indicati, premetto che mi stò affacciando da poco al mondo dei
database....e cerco di fare il possibile....ma ahimè alle volte mi riesce
male...ho provato anche a fare in questo modo:
Private Sub Form_Open(Cancel As Integer)
Dim rst As Recordset, stringaCMB As String, passo As Integer
Set rst = CurrentDb.OpenRecordset("prova")
stringaCMB = ""
passo = 0
Do While Not rst.EOF
    stringaCMB = stringaCMB & ";" & rst("campo1") & ";" & rst("campo2")
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Me!CasellaCombinata1.RowSource = Mid(stringaCMB, 2)
End Sub
ma alla fine mi genera un errore di debug "tipo non corrispondente"
evidenziandomi: Set rst = CurrentDb.OpenRecordset("prova")
Aiuuttooo tra un pò sbatto la testa contro il muro...

 Aiuuttooo tra un pò sbatto la testa contro il muro...
Se hai access200x devi inserire i riferimenti alla libreria DAO prima della
ADO (strumenti - riferimenti)...
Ciao.
--
Sergio MAZZA


Ciao Sergio ho provato a cambiare i riferimenti della libreria ma
niente...mi da sempre il solito errore...praticamente non è cambiato
nulla...
CiAuZzZz


Sicuro che la libreria DAO si posizionata nell'elenco prima di quella ADO?
Prova cosě:
Dim rst As DAO.Recordset
Ciao.
--
Sergio MAZZA


Oki Sergio adesso siiiiii :) ....ti vorrei  chiedere solo un'altra cosa se
non č di troppo. Volendo applicare un criterio di ricerca del tipo:
incolonnami nella casella combinata tutti i record del "campo1" e "campo2"
ma che sono relativi ad un determinato valore presente nel "campo3" ?
Posso usare il comando where ?


Devi, non hai scelta; invece di usare una tabella, il recordset lo crei con
una query:
es.
'---> se numerico
Set rst = CurrentDb.OpenRecordset("Select campo1, campo2 From tabella4 Where
campo3=" & me!campo3)
'---> se testo
Set rst = CurrentDb.OpenRecordset("Select campo1, campo2 From tabella4 Where
campo3=" & chr(34) & me!campo3 & chr(34))
Ciao.
--
Sergio MAZZA


Ciao Sergio...grazie a te sono riuscito finalmente a risolvere questo
problema che mi dannava... GgRGgrR :) per ultimare il tutto volevo chiederti
solo una cosa...
Innanzitutto ti posto il codice usato:
Private Sub Form_Current()
    Dim rst As DAO.Recordset, stringaCMB As String, passo As Integer
    Set rst = CurrentDb.OpenRecordset("Select Tipo_posto1, Tipo_posto2,
Tipo_posto3, Tipo_posto4, Tipo_posto5, Tipo_posto6 From [Immissione dati
luogo] Where Nome_Luogo =" & Chr(34) & [Forms]![Intestazione]![Luogo] &
Chr(34))
    stringaCMB = ""
    passo = 0
    Do While Not rst.EOF
    stringaCMB = stringaCMB & ";" & rst("Tipo_posto1") & ";" &
rst("Tipo_posto2") & ";" & rst("Tipo_posto3") & ";" & rst("Tipo_posto4") &
";" & rst("Tipo_posto5") & ";" & rst("Tipo_posto6")
    rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    Me!CasellaCombinata1.RowSource = Mid(stringaCMB, 2)
End Sub
Allora....come mai quando dalla maschera "Intestazione" seleziono il luogo,
nella sottomaschera non mi aggiorna in automatico le voci della casella
combinata? E poi in ultimo vorrei che le i campi vuoti non comparissero
nella casella combinata....posso usare il comando if null ?
Grazie mille di tutto in partenza...

 ha scritto nel messaggio
news:ruZzb.7904$5o6....@tornado.fastwebnet.it...

Errata Corrige: il primo problema in effetti l'ho risolto creando una macro
che riesegue la query in questione....però rimane il fatto che vorrei non
comparissero nella casella combinata i campi vuoti....
CiAuzzZzz


Inserisci il test nella stringa:
stringaCMB = stringaCMB & IIF(IsNull(rst("Tipo_posto1"));Null;";" &
rst("Tipo_posto1")) & IIF(IsNull(rst("Tipo_posto2"));Null;";" &
rst("Tipo_posto2")) etc. etc.
Ciao.
--
Sergio MAZZA


Hmmmm.... :(    Sergio ho provato ma mi da un errore di compilazione di
sintassi....
    Do While Not rst.EOF
    stringaCMB = stringaCMB & IIF(IsNull(rst("Tipo_posto1"));Null;";" &
rst("Tipo_posto1")) & IIF(IsNull(rst("Tipo_posto2"));Null;";" &
rst("Tipo_posto2")) & IIF(IsNull(rst("Tipo_posto3"));Null;";" &
rst("Tipo_posto3")) & IIF(IsNull(rst("Tipo_posto4"));Null;";" &
rst("Tipo_posto4")) & IIF(IsNull(rst("Tipo_posto5"));Null;";" &
rst("Tipo_posto5")) & IIF(IsNull(rst("Tipo_posto6"));Null;";" &
rst("Tipo_posto6"))
    rst.MoveNext
    Loop
Dove ho sbagliato ?!?!?


Dopo la & non c'č accapo eh. E' tutta una riga...
Ciao.
--
Sergio MAZZA


Infatti l'ho scritto tutto di seguito.....ma continua a darmi errore di
sintassi.... :(

 sintassi.... :(
CACCHIO!! Che scemo!
Sostituisci i punti e virgola con le virgole come separatori dell'IIF:
es.
stringaCMB = stringaCMB & IIF(IsNull(rst("Tipo_posto1")),Null,";" &
rst("Tipo_posto1")) & IIF(IsNull(rst("Tipo_posto2")),Null,";" &



Hehhehehehehe ..... dai don't worry....cmq adesso funziona alla
grande....GRAZIE mille Sergio...
spero che questo post di 300 metri sia di aiuto anche ad altre persone
CiAuZzZz