Newsgroup: it.comp.appl.access
Titolo: Record in orizzontale in una maschera

Ciao a tutti,
Ho un problema in una maschera clienti dove devo visualizzare l'elenco dei
prodotti da lui acquistati, a seconda dell'azienda selezionata in una
combox.
Sul momento ho fatto una semplice sottomaschera che mi da l'elenco dei
prodotti da me richiesto ma mi sono reso conto che sono troppi prodotti per
poter essere visualizzati rapidamente senza dover scorrere la barra della
sottomaschera stessa.
A questo punto ho pensato di provare ad ordinare i prodotti in orizzontale
separati da un punto e virgola ma qui sorge il problema come si puņ fare?
Pensavo di creare una casella di testo o di riepilogo che caricasse i
prodotti dalla sottomaschera, ovviamente nascondendola, e li formattasse
separati da un punto e virgola mettendoli in orizzontale ma non ho proprio
idea di come fare.
Qualcuno di voi mi darebbe gentilmente un aiuto?
Grazie e ciao
Andrea
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Andrea

Controlla la risposta data da Roberto in questo 3d. Penso che si adatti
alle tue esigenze:
http://groups.google.it/groups?q=come%2Btrasformare%2Bun+elenco&hl=it&lr=&ie=UTF-8&selm=7nhJb.38294%24_P.1663465%40news4.tin.it&rnum=1
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Se lo vuoi usare su una casella di testo e conosci VBA lo puoi fare con Dao,
ciclando su un Recordset.
Se vuoi usare una casella di riepilogo gli puoi impostare l'origine riga
uguale a quella della sottomaschera, con un where probabilmente su codice
cliente = a quello inserito nella Combo, anche se il risultato in questo
caso non sarà molto diverso in quanto hai una riga per ogni articolo.
Fa sapere se serve altro aiuto.
Ciao,
Massimo
-- 
web: 
www.piubelli.net
Vuoi il mio indirizzo? Togli _cut_ per rispondermi


Grazie ad entrambi credo che la soluzione è proprio quella da voi proposta.
Provo ad applicarla.
Grazie ed alla prosima.



La strada è sicuramente quella da voi descritta e della quale ho trovato
alcuni esempi fatti da Roberto.
Ho provato a riadattare gli esempi alla mia situazione ma probabilmente mi
sfugge qualcosa, non mi vuole proprio funzionare.
Il codice è il seguente:
Public Function ElencoProdotti()
Dim Rs As DAO.Recordset
Dim Prod As String
Prod = ""
Set Rs = CurrentDb().OpenRecordset("qryClientiProdotti")
Rs.MoveFirst
Do Until Rs.EOF
    If Rs!Modello = Modello Then
    Prod = Prod & Rs!Modello & ", "
    End If
    Rs.MoveNext
Loop
If Len(Prod) > 0 Then
ElencoProdotti = left(Prod, Len(Prod) - 2)
End If
Set Rs = Nothing
End Function
La query ("qryClientiProdotti") ha il seguente sql:
SELECT tblMostre.Modello
FROM tblProdotti INNER JOIN tblMostre ON (tblProdotti.Prodotto =
tblMostre.Modello) AND (tblProdotti.Mandante = tblMostre.Mandante)
WHERE (((tblMostre.Cliente)=[Forms]![frmTblClienti]![Cliente]) AND
((tblMostre.Mandante)=[Forms]![frmTblClienti]![Mandante]));
Mi sembra tutto a posto ma continua ad andarmi in Debug dandomi l'errore
Parametri insufficienti previsto 2 ( Sul "Set Rs=").
Qualcuno sa spiegarmi il perchè.
Grazie a tutti.
Ciao


 ha scritto
nel messaggio
news:217Z133Z143Z187Y...@usenet.libero.it...

Togli anzitutto quel () dopo currentdb
MAssimiliano


Anche facendo come dici non cambia niente.
Ho notato che il codice funziona se non sono presenti parametri nella query
ma a me invece sono indispensabili.
Avete suggerimenti?


 ha scritto nel messaggio
news:217Z133Z144Z45Y...@usenet.libero.it...


La form "frmTblClienti" è aperta mentre esegui la query?
Ciao.
-- 
Sergio MAZZA


Si la form č aperta, comunque sono riuscito a capire cosa non funzionava.
Mi sono accorto che la query non accetta parametri presi da maschere aperte.
Ho risolto facendo cosě:
Public Function ElencoProdotti()
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim StrSQL As String
Dim Prod As String
Prod = ""
StrSQL = "SELECT tblMostre.Modello, tblMostre.Cliente, tblMostre.Mandante
FROM tblProdotti INNER JOIN tblMostre ON (tblProdotti.Prodotto =
tblMostre.Modello) AND (tblProdotti.Mandante = tblMostre.Mandante)" & _
        "WHERE (((tblMostre.Situazione)= " & Chr(34) & "Confermata dal cliente" &
Chr(34) & ") AND ((tblMostre.Cliente)= " & Chr(34) &
Forms!frmTblClienti!Cliente & Chr(34) & ") AND ((tblMostre.Mandante)= " &
Chr(34) & Forms!frmTblClienti!Mandante & Chr(34) & "));"
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(StrSQL)
If Rs.BOF Then Exit Function
Rs.MoveFirst
Do Until Rs.EOF
    Prod = Prod & Rs!Modello & ", "
    Rs.MoveNext
Loop
If Len(Prod) > 0 Then
ElencoProdotti = left(Prod, Len(Prod) - 2)
End If
Set Rs = Nothing
End Function
Sembra funzionare perfettamente.
E' giusta la sintassi da me applicata?
E' normale che L'OpenRecordset su di una query non accetti parametri presi
da forms aperte?
Grazie per l'interessamento.


 Ho risolto facendo così:

Non è esatto quello che affermi; una query compilata e salvata se ha al suo
interno riferimenti a maschere (forms!nomeForm!nomeControllo) e queste sono
aperte i valori nei controlli vengono letti.
Questo per le query create con il querybilder e salvate (compilate).
Per le query eseguite con il metodo OpenRecordset è leggermente diverso; è
diverso perché non devi eseguire una query compilata ma una stringa SQL dove
i valori variabili contenuti nei controlli delle forms sono già noti a te
perché sei in ambiente VBA e non ha senso creare una stringa SQL con al suo
interno riferimenti a maschere, e loro controlli, quando puoi benissimo
costruirtela leggendo direttamente i valori dai predetti controlli.
Quindi la stringa SQL:
"WHERE nomeCampo = Forms!nomeForm!nomeControllo"
dovrebbe essere:
"WHERE nomeCampo = " & Forms!nomeForm!nomeControllo
Non farti ingannare dal codice SQL generato dal querybilder, perché se lo
copi/incolli in VBA i riferimenti cambiano.
Ciao.
--
Sergio MAZZA

 ha

Ti ringrazio molto per le delucidazioni che mi hai dato mi saranno di sicuro
utili.
Grazie e ciao
