Newsgroup: it.comp.appl.access
Titolo: form basate su query...

leggendo la documentazione mi sembra di capire che anche una form basata su
una query permette di modificare i dati, io non ci riesco.
Dove sbaglio?

"Piero Bolletta" dice

Prima di tutto considera che praticamente non c'e' differenza tra una
tabella e una query, (a meno che non si tratti di query che raggruppano piu'
valori e dove, quindi, non possono essere consentite modifiche).
Inoltre considera che e' estremamente raro che una maschera sia basata su
una tabella, nel 99,99% dei casi sarà basata su una query.
Infine (e ritornando al problema delle query non aggiornabili) perche' una
query sia modificabile, Access deve poter identificare il record su cui
operi senza alcuna ambiguita', cosa che non si verifica nel caso di dati
raggruppati.
Ciao, Sib


C'è query e query.
Ad esempio non puoi modificare i dati se la query è con raggruppamento.
Cosa fa la tua query?
Roberto

 Cosa fa la tua query?
Deve calcolare il peso del materiale, in una tabella ho codice articolo,
diametro, lunghezza e materiale.
In un altra ho materiale e peso specifico.
La query unisce l'articolo col peso specifico e fa (farebbe) il calcolo.
Non ho trovato altri modi di collegarmi a una tabella esterna se non con una
form basta sulla query (sono un neofita assoluto) ma alla fine non riesco ad
aggiungere records.
Grazie ancora.

 wrote in message
n9645.244167$VM3.1...@news.infostrada.it...

Io farei a meno della query.
Supponiamo che la tabella che porta il peso specifico si chiami TAB2 ed il
campo  Materiale ne sia la chiave primaria ed abbia Tipo dati Contatore o
Numerico, e l'altro campo si chiami PesoSpecifico ed abbia Tipo dati
Numerico a Precisione Doppia.
Se la maschera di immissione dati contiene i controlli chiamati
CodiceArticolo, Materiale (Numerico), Diametro, Lunghezza e Peso, e
quest'ultimo deve contenere il risultato del calcolo, a fronte dell'evento
"Su attivato"
del controllo Peso genera il seguente codice VBA:
Private Sub Peso_GotFocus()
Dim PS As Double
PS = DLookup("PesoSpecifico", "TAB2", "Materiale =" & Materiale)
Me!Peso = ((Me![Diametro] / 2) * (Me![Diametro] / 2) * 3.14 *
Me![Lunghezza]) * PS
End Sub
Se invece i campi Materiale di ambedue le tabelle hanno come Tipo Dati
Testo, in quanto contengono un valore alfanumerico, il codice VBA diventa:
Private Sub Peso_GotFocus()
Dim PS As Double
PS = DLookup("PesoSpecifico", "TAB2", "Materiale =" & Chr$(34) &
[Materiale] & Chr$(34))
Me!Peso = ((Me![Diametro] / 2) * (Me![Diametro] / 2) * 3.14 *
Me![Lunghezza]) * PS
End Sub
Roberto

 Io farei a meno della query.
Mi sono stampato il tutto e adesso lo studio, grazie mille.
DlookUp sapevo cosa faceva ma non sapevo come usarlo, come pure volevo
provare a mettere una riga sql dentro lo script.
La cosa e' un zicchino piu' complessa, ho una funzione peso(d,l,f) e il
materiale puo' essere esagonale o quadro, ma il tuo conisglio e' molto
valido.
Grazie ancora.

 End Sub
Vengo da un altro linguaggio, capisco di programmazione ma questa sintassi
non la conosco, ho ancora qualche domanda da sottoporre alla tua cortesia:
"me!" e' facoltativo o obbligatorio?
"&"  a cosa serve?

 wrote in message
awN45.267477$VM3.2...@news.infostrada.it...

Me! indica che il nome del controllo che segue fa parte della maschera
corrente, a volte è facoltativo ma diventa obbligatorio se quel nome lo
adoperi per controlli diversi di oggetti diversi del DB; quendi, per ogni
evenienza.....
Quanto a "&", nel creare una stringa, serve da "collante" per unire i vari
"pezzi" della stringa.
Roberto

 "pezzi" della stringa.
Si, avevo visto che e' come il + di altri linguaggi, ma "Materiale =" &
Materiale mi sembrava strano... in pratica e' come scrivere uno statement
"where" allora?

 wrote in message
%x%45.270736$VM3.2...@news.infostrada.it...

Esattamente
Roberto