|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
Ho inserito il codice da te suggerito nei due eventi. Il programma funziona; l' unico neo è che quanto inserisco un prezzo nel campo "importo" la sottomaschera Merci mi si rimpicciolisce, lasciandomi soltanto intravvedere un nuovo record della sottomaschera (se desidero vedere il record appena creato, devo utilizzare la freccia "sinistra" per spostarmi fra i record). E' normale o dovuto ad Access 97? Come mai ho dovuto inserire il codice anche nell' evento "eliminazione", quando ho notato che anche senza, il programma mi fa le stesse cose?
Come posso migliorare il codice per farmi calcolare "spesaIvata" nella Maschera Acquisti? Mi suggerisci che è meglio utilizzare delle query per fare calcoli automatici: nel mio caso come? Ho pensato di creare: - la Tabella Merci con i campi "IDAcquisti", "quantita" e "importo" - la Query tMerci rifacendomi alla Tabella Merci, ma aggiungendo il campo "totale:quantita*importo" (e fino a qui TUTTO BENE). A questo punto che cosa devo fare? Se creo la tabella Acquisti oltre ai campi "IDAcquisti", "dataAcquisti - data/ora" e "riferimento - testo" che cosa deve mettere come campo affinchè possa creare la Query con "spesa:Somma(totale)"? Ti ricordo che io ho fatto diversi tentativi, ma ogni volta che cercavo di creare la Query con "spesa", mi diceva che qualsiasi campo aggiunto non faceva parte di un raggruppamento. Che cosa intendeva? Inoltre se non mi dava questo errore, la Query creata non visualizzava alcun campo di inserimento dati,ma solo l' etichette dei campi della Query. Riguardo alla domanda che ti ho fatto in precedenza sull' "inserimento di maschere di Input nelle tabelle", a cosa è dovuto? Ultima modifica di Musketeer Fly : 03-11-2003 alle 12:58. |
![]() |
![]() |
![]() |
#22 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Probabilmente hai dimensionato la sottomaschera troppo piccola; vai in visualizzazione struttura della maschera principale e amplia la dimensione della sottomaschera.
Il codice non vincola il campo spesa della tabella acquisti al totale della tabella merci, ma alle operazioni che fai nella maschera, per questo devi gestirti anche il caso della cancellazione. Per aggiungere un campo spesa in una query basata sulla tabella acquisti: Seleziona "query", poi "nuovo", poi "visualizzazione struttura". Ti appare la maschera di selezione delle tabelle, seleziona la tabella acquisti e clicca "aggiungi". Seleziona adesso la linguetta delle query e seleziona la query tmerci contenente anche il prezzo totale, e poi clicca "aggiungi" e poi "chiudi". clicca su [id acquisti] della tabella acquisti e trascinalo sull' [id acquisti] della query tmerci per creare il join. Trascina uno per uno tutti i campi della tabella acquisti nella parte inferiore della maschera (NON usare l'asterisco). Trascina allo stesso modo il campo "totale" della query tmerci. Seleziona "visualizza" nel menu, quindi "totali". Nella parte inferiore della maschera, modifica, nel campo "totale", la formula da "raggruppamento" a "somma". Salva ed esci. |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
Il problema non è la sottomaschera dato che la sua dimensione è 80% della videata; ma non importa. Come suggerito da te ho provato ad usare le Query: attraverso l' autocomposizione ho ottenuto la query di riepilogo che volevo, ma non utilizzabile per la mia maschera. Allora ho creato la maschera Madre partendo dalla Tabella tAcquisti e aggiungendo a mano la voce relativa alla "spesa" (cercavo un modo più veloce ed automatico, ma pazienza).
A questo punto vorrei creare (non so se deve essere una tabella o una query) in modo da rifarmi alla Tabella tMerci: ho deciso di crearmi una nuova tabella che avesse gli stessi campi di tMerci e impostati come caselle combinate in modo tale da avere in automatico le merci nei campi della tabella creata. Selezionando un campo della nuova Tabella e ottenendo la possibilità di scelta tra le varie merci, come faccio a vincolare il prezzo della merce selezionata? E possibile aggiungere delle nuove voci nelle caselle combinate senza che siano memorizzate nei campi della Tabella tMerci? Ho fatto bene a crearmi questa nuova Tabella o devo agire in un altro modo? Ultima modifica di Musketeer Fly : 05-11-2003 alle 11:44. |
![]() |
![]() |
![]() |
#24 | ||
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
"Se vuoi vincolare un campo della maschera al valore di un altro campo di tabella devi usare del codice vb, sul tipo degli esempi precedenti. "
Ti chiedo troppo se mi facessi un esempio attinente con il codice coretto ? |
![]() |
![]() |
![]() |
#26 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
Una cosa del genere:
Dim rec As Recordset Dim sqlstring As String Dim valprezzo sqlstring = "select * from merci where [id acquisti]=" & [id acquisti] Set rec = CurrentDb().OpenRecordset(sqlstring, dbOpenDynaset) rec.MoveFirst valprezzo = 0 Do Until rec.EOF Let valprezzo = rec!prezzo exit do Loop prezzo = valprezzo (Forza un generico campo "prezzo" nella maschera corrente al valore del prezzo del primo record della tabella "merci" che trova, usando il campo [id acquisti] della maschera come chiave di ricerca nella tabella "merci") |
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
Allora ho creato una Tabella Consultazioni, figlia di una Tabella Uscite. Ho impostati i campi come "caselle combinate" per prelevare i dati dalla Query Merci ed ho inserito il codice da te suggerito (come evento "Prima di aggiornare"). Visto che mi dava errore (non riconosce [id acquisti]), ho pensato di aver sbagliato evento, così l' ho inserito nell' evento "Dopo aggiornamento", ma le cose non sono cambiate : si ripresenta sempre lo stesso errore (non riconosciuto [id acquisti]. Come mai?
Il codice da te suggerito va bene anche per un campo diverso da Numerico/Valuta (ossia diverso da "importo", ma che sia un campo "Testo")? Ultima modifica di Musketeer Fly : 06-11-2003 alle 09:25. |
![]() |
![]() |
![]() |
#28 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
sqlstring = "select * from merci where [id acquisti]=" & [id acquisti]
in questa riga, il primo [id acquisti] è il campo della query, il secondo è il nome di campo della maschera. Devi adattare questi due nomi ai valori effettivi che hai usato. Sì, il codice funziona con qualsiasi tipo di campo. |
![]() |
![]() |
![]() |
#29 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
Mi da errore su rec.MoveFirst
|
![]() |
![]() |
![]() |
#30 |
Member
Iscritto dal: May 2003
Città: Saronno
Messaggi: 161
|
L'esempio che ti ho dato è molto generico.
rec.movefirst indirizza il primo record dell'insieme selezionato dalla query. Se la query non seleziona records, dà errore. Devi gestire l'errore con la "on error goto ...". on error goto label1: 'imposto gestione errori personalizzata ...istruzione di cui gestire l'errore... on error goto 0 'reimposto gestione errori standard ... label1: ...gestione dell'errore... Nell'esempio ti ho lasciato anche un "do ... loop" inutile, se al posto della "exit do" metti una rec.movenext ti posizioni sul record successivo e ti gestisci tutto il set di records della query... do until rec.eof ...elaboro il record... rec.movenext 'mi posiziono sul record successivo loop Nella guida comunque trovi diversi esempi. |
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
1) Non riesco ad ottenere la sottomaschera filtrata che desidero in base alla selezione del primo campo della sottomaschera (es. ho tre campi "macchina" , "colore" e "velocita" nella sottomaschera. Selezionando un valore del campo "macchina" - per es. 'Punto', vorrei ottenere il "colore" relativo alla mia scelta e non tutti i colori che ho inserito in precedenza - per es. 'Bianca' arrivando a 'Punto Bianca' dati che ho inserito in precedenza e non vorrei arrivare a scegliere 'Nera'poichè non esiste una 'Punto Nera' inserita da me; ottenuto questo mi piacerebbere avere la possibilità scegliere la velocità filtrata in base alla scelta della "macchina" e del "colore" - per es. '120 km/h' ottenendo 'Punto Bianca 120 km/h' e non '130 km/h' che non fa riferimento ad alcuna "macchiana" 'Punto' di "colore" 'Bianca'.
2) Dopo aver creato una maschera ed inserito dei dati, ho osservato che una volta chiusa e riaperta la maschera mi fa vedere i campi da me inseriti (non ricordo se il primo record o l' ultimo). Esiste un comando o un' istruzione che ogni volta che apro questa suddetta maschera visualizzi un record vuoto o nuovo senza vedere i record che ho inserito (ossia mi piacerebbe trovarmi come se fosse la prima volta a utilizzare la maschera tutta bella pulita)? 3) Ho creato una maschera (madre) con ben 4 sottomaschere (figlia) e sono riuscito ad ottenere quello che volevo. A questo punto è possibile creare un report che assomigli alla maschera creata con le 4 sottomaschere ben definiti e distinte? Ho provato a crearmi il report attraverso la maschera madre e la prima sottomaschera figlia. Il risultato ottenuto è quello voluto; a questo punto ho provato ad inserire le altre sottomaschere attraverso il 'tool' 'inserisci sottoMaschera / sottoReport', ma il risultato non è quello che volevo. E' possibile partire da un report vuoto e aggiungere singolarmente ogni sottomaschera avendo per ciascuna un' 'intestazione' e un 'corpo'? |
![]() |
![]() |
![]() |
#32 |
Senior Member
Iscritto dal: Aug 2002
Città: Torino
Messaggi: 1165
|
Il punto 2) sono riuscito a risolverlo e utilizzando due comandi nei rispettivi eventi sono riuscito a modificare le maschere in apertura e una volta chiuse, le rimanenti maschere non risentono dei cambiamenti. Finalmente un punto in meno da risolvere!!!!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:56.