Newsgroup: it.comp.appl.access
Titolo: Problema con maschere e query

Risposto ancora una volta il mio problema, sperando di trovare in tempi
brevi una soluzione...
Salve a tutti!
Sto facendo un ricettario con Access, e mi sono scontrato subito con il
problema che ora vado ad esporrvi. Se qualcuno fosse in grado di darmi una
mano, gli sono grato anticipatamente.
Il problema è il seguente:
Gli ingredienti di ogni singola ricetta devono essere suddivisi per
tipologia (ovvero ingredienti di base, ingredienti di finitura, etc...).
In una query di selezione degli ingredienti (in base al numero della ricetta
cercata) si avranno 4 colonne: tipologia di ingrediente, ingrediente,
quantità e unità di misura. Ad esempio, un risultato (di fantasia) della
query potrebbe essere (separo le colonne una dall'altra con "-"):
ingrediente di base - pasta - 100 - gr
ingrediente di base - pomodoro - 50 gr
ingrediente di base - basilico - 3 - foglie
ingrediente di finitura - basilico - 2 - foglie
Come si vede, nella prima colonna il termine "ingrediente di base" è
ripetuto 3 volte perchè 3 sono gli ingredienti di base.
A questo punto, vorrei inserire il risultato di tale query in una maschera,
all'interno di una casella di testo o al limite di una casella di riepilogo.
Tale risultato deve essere visualizzato all'utente per sola consultazione,
quindi senza possibilità di modifica.
I problemi che ho incontrato sono questi:
1) per quanto riguarda la casella di riepilogo, la prima colonna mi compare
più volte, mentre, per una visualizzazione più "pulita", il risultato
dovrebbe essere:
ingredienti di base - pasta - 100 - gr
[questo campo è vuoto] - pomodoro - 50 - gr
[questo campo è vuoto] - basilico - 3 - foglie
ingredienti di finitura - basilico - 2 - foglie
Dovrei trovare un modo per eliminare le ripetizioni della prima colonna, e
non ci sono riuscito.
2) per la casella di testo, ho provato a concatenare con VBA il testo dei
vari campi della query, ma non sono riuscito assolutamente ad accedere ai
dati (sono ancora poco esperto di VBA).
Le due soluzioni (casella di testo o casella di riepilogo) mi sembrano
praticamente simili. Forse la casella di riepilogo è la più bella
graficamente perchè mi permette di incolonnare già il testo secondo colonne
predefinite, mentre per il testo dovrei anche preoccuparmi della
formattazione, comunque mi andrebbe bene un aiuto per una qualsiasi delle
due caselle, ovviamente restando sempre aperto a nuove idee!
Dimenticavo: potrei risolvere la faccendo creando una casella di riepilogo
per ogni
tipologia di ingrediente, però questa soluzione mi comporterebbe degli
svantaggi: infatti si vedrebbero più caselle di riepilogo con più barre di
scorrimento su ciascuna nel caso vi fossero parecchi ingredienti per ogni
tipologia, ed inoltre non conosco a priori le tipologie di ingredienti
presenti per ogni ricetta (alcune ricette potrebbero avere solo ingredienti
di base, mentre altre potrebbero avere più tipologie).
E' per questo che volevo una unica casella di testo o di riepilogo: per
creare un unico elenco degli ingredienti della ricetta con la specificazione
(che compaia una sola volta come nell'esempio riportato) della tipologia
alla quale appartengono, in modo da avere anche una unica barra di
scorrimento verticale per scorrere l'elenco completo.
Ringrazio anticipatamente chi saprà aiutarmi.
--
Cristiano

 ha scritto nel messaggio
news:9m0fr8$352$1...@nreadb.inwind.it...

Se i dati vanno solo letti perchè non usi un report in anteprima e imposti
"Nascondi duplicati" a SI'?
Se devi usare una maschera certamente questa deve essere di tipo tabellare e
ti potrebbe servire una routine come quella presente sul sito comune che
cambia i colori ai controlli a seconda del valore. Ovviamente imposterai la
propietà "Visible" piuttosto dei colori.
Un'altra soluzione potrebbe essere quella di una tabella di appoggio che
riempi a tuo piacimento: la prima colonna ogni volta che cambia il valore e
le altre colonne sempre.
Ometto il codice perchè credo tu sia in grado di farlo da solo.
Ciao, Carlo

 ha scritto nel messaggio
news:9m0fr8$352$1...@nreadb.inwind.it...

Se hai una Tabella chiamata Ricette che abbia la seguente struttura:
IDRicetta          Contatore e chiave primaria
NomeRicetta    Testo
ecc. ecc.
Se la tua query si chiama Query1 e contiene i seguenti campi:
IDRicetta          Numerico
Tipologia          Testo
Ingrediente       Testo
Quantità           Numerico
UnitàDiMisura  Testo
Query1 deve essere  ordinata per IDRicetta e Tipologia.
Non inserire alcun parametro di selezione in Query1.
Crea una maschera chiamata frmRicette che abbia come origine record la
tabella Ricette e una visualizzazione a Maschera singola; il controllo
contenuto in frmRicette che è associato a IDRicetta deve chiamarsi anche lui
IDRicetta.
In frmRicette inserisci una casella di riepilogo non associata e chiamala
Elenco.
Per detta casella di riepilogo imposta a 4 il Numero colonne, a
3cm;3cm;1cm;1cm la Larghezza colonne, a Elenco valori la prprietà Tipo
origine riga e imposta a " " l'Origine riga.
A fronte dell'evento "Su corrente" della maschera frmRicette genera il
seguente codice VBA:
Private Sub Form_Current()
Dim rstRicette As Recordset
Dim Pippo As String
Set rstRicette = CurrentDb.OpenRecordset("Query1")
rstRicette.MoveFirst
Me!Elenco.RowSource = ""
Do Until rstRicette.EOF
If rstRicette!IDRicetta = Me!IDRicetta Then
    If Pippo = rstRicette!Tipologia Then
        Me!Elenco.RowSource = Me!Elenco.RowSource & " ;"
    Else
        Me!Elenco.RowSource = Me!Elenco.RowSource & _
        rstRicette!Tipologia & ";"
        Pippo = rstRicette!Tipologia
    End If
    Me!Elenco.RowSource = Me!Elenco.RowSource & _
    rstRicette!Ingrediente & ";"
    Me!Elenco.RowSource = Me!Elenco.RowSource & _
    rstRicette!Quantità & ";"
    Me!Elenco.RowSource = Me!Elenco.RowSource & _
    rstRicette!UnitàDiMisura & ";"
End If
rstRicette.MoveNext
Loop
If Me!Elenco.RowSource <> "" Then
    Me!Elenco.RowSource = Left(Me!Elenco.RowSource, _
    Len(Me!Elenco.RowSource) - 1)
End If
Set rstRicette = Nothing
End Sub
Spero che sia ciò che volevi.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:9m03si$2e0i$1...@stargate1.inet.it...


 Cristiano
[CUT]
