Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33

[Access] modifica di un record all'interno di un report/query

  1. #1
    sokykos non è in linea Novello
    Post
    43
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao.

    Sto lavorando con Access e ho creato un report avente come origine dei dati una query includente due tabelle.
    Ora vorrei poter aggiungere una funzionalità: una modifica "automatica" del contenuto di determinati record (sulla base di un criterio relativo a un singolo campo della query); vorrei che la modifica interessasse solo il report e non il contenuto delle tabelle.
    Qualcuno saprebbe dirmi SE e' possibile, e come si può fare?
    SQL dispone di comandi per problemi di questo tipo?

    Grazie.

    p.s. se il problema non e' chiaro posso specificarlo ulteriormente.

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Post
    7,245
    Blogs
    3
    Like Inviati  
    19
    Like Ricevuti  
    13
    per le discussioni relative ad Access esiste l'apposito Forum Office & VBA, nel quale sposto questa discussione.

    TheTruster
    ℹ️ Leggi di più su TheTruster ...

  3. #3
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,753
    Like Inviati  
    0
    Like Ricevuti  
    2
    Ciao sokykos e benvenuto nel forum di MasterDrive

    Per una modifuica di questo tipo di conviene utilizzare una query

    Es banale
    ho tabella con il campo Numero
    Questo campo Contiene
    10
    20
    30

    A me serve il numero moltiplicato per 1000 (solo in visualizzazine e non modifcando i dati)

    Creo una query dove gli indico che il campo Numero deve essere moltiplicato per 1000

    Nella query visualizzo
    10000
    20000
    30000

    Questa query la uso per la base del mio report.

    Se entri un po nei dettagli posso farti un esempio meno vago.

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  4. #4
    sokykos non è in linea Novello
    Post
    43
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao...
    Grazie, Dragone Bianco, di aver risposto.

    Aggingo qualche dettaglio perché la questione è più complessa...

    La mia query contiene alcuni campi di dati numerici; in un ulteriore campo (che chiamo IMPONIBILE) calcolo la somma dei dati dei campi precedenti. La query elimina, inoltre, quei record in cui IMPONIBILE superi una determinata cifra (poniamo sia 150); questo l'ho ottenuto modificando il codice SQL perché impostando i criteri della query non riuscivo a ottenere il risultato voluto.
    Tutto questo funziona e può andare.

    Mi chiedo se, anziché eliminare i record con IMPONIBILE>150, sia possibile invece modificare il loro contenuto (il mio scopo sarebbe sostituirlo con un'opportuna dicitura che motivi l'eliminazione del record).
    La questione è complicata dal fatto che nel fondo del report calcolo la somma dei dati dei campi e, naturalmente, i record in questione non dovrebbero essere calcolati. Immagino che un'eventuale soluzione richiederebbe più "passaggi".

    Sono "nuova", alla prima esperienza con Access, perciò a questo punto mi perdo...
    Esiste una soluzione?

    Ciao e grazie...

  5. #5
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,753
    Like Inviati  
    0
    Like Ricevuti  
    2
    Per quaesto scopo puoi usare le query di aggiornamento.

    Altrimenti puoi utilizzare il VBA il quale ti permette di leggere ricercare e modificare dati direttamente in una tabella.

    Qui c'è una piccola spiegazione del codice da usare.

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  6. #6
    davideleo non è in linea Scolaretto
    Post
    154
    Like Inviati  
    0
    Like Ricevuti  
    0
    Credo di aver capito il problema: tu non vuoi veramente eliminare i record, ma solo filtrarli.
    Sostituire gli importi superiori a 150 con un'espressione non è difficile, dovresti usare l'istruzione IIf, come probabilmente hai già fatto.
    Però giustamente tu dici: se io scrivo IIf(Imponible>150;"Espressione"; Imponibile) ottengo sì il risultato che voglio, ma il campo non è più numerico, ma alfanumerico, e se nel report tento di fare la somma ottengo #errore.

    Io farei così: sostituisci l'espressione qui sopra (se non è simile a quella che hai usato, comunque usala) con IIf(Imponibile>150;Null;Imponibile). Il campo rimane di tipo numerico, ma se Imponibile è superiore a 150 è vuoto.
    Poi nel report imposta la proprietà Formato della casella di testo Imponibile così: € #,00;€ #,00;€ #,00;"Espressione"
    Le sezioni del formato numerico separate dal punto e virgola sono nell'ordine: quella per i numeri positivi, negativi, 0 e valori Null. In questo modo il valore della casella di testo rimane sempre numerico, ma per quelli superiori a 150 (convertiti a Null nella query) viene visualizzato il testo "Espressione".


    Spero di aver colto il problema. Ciao

    P.S. Il formato € #,00 è quello tipico della valuta, dato che si tratta di imponibile ho pensato fosse quello più appropriato, ma puoi sostituire il formato che preferisci.
    Ultima modifica di davideleo; 30-06-2006 01:55 
    ℹ️ Leggi di più su davideleo ...

  7. #7
    sokykos non è in linea Novello
    Post
    43
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,
    vi ringrazio dei suggerimenti, proverò a metterli in pratica.
    Mi dite, però, per piacere, DOVE si scrive il codice?
    Sono in grado di trovare e modificare il codice relativo ai campi delle query e alle maschere, ma per il resto?
    Non scandalizzatevi, please, non ho ancora capito a fondo come funzionano le cose...
    In questo momento sono alle prese con una nuova questione e chiedo nuovamente aiuto in una nuova discussione.
    Intanto grazie a voi...
    Ciao!

  8. #8
    davideleo non è in linea Scolaretto
    Post
    154
    Like Inviati  
    0
    Like Ricevuti  
    0
    Il modo più semplice per iniziare a scrivere un po' di codice è con una routine evento.

    Apri una maschera in visualizzazione struttura. Seleziona un controllo, ad esempio una casella di testo. Con un doppio click apri la finestra delle prorietà. Vai alla scheda Evento. Scegli un evento, ad esempio Dopo Aggiornamento e fai doppio click sulla riga. Ti compare la scritta [Routine evento]. Sulla destra della riga trovi un pulsante con l'etichetta "...". Premilo e si apre la finestra del VBA. Troverai già queste espressioni

    Option Compare Database
    __________________________________________________________
    
    
    Private Sub Nome_AfterUpdate()
    
    End Sub
    
    Puoi inserire il codice da eseguire dopo l'aggiornamento del controllo (in questo esempio) tra la riga Private Sub e quella End Sub. Poi chiudi la finestra del VBA, chiudi la maschera e salva.
    ℹ️ Leggi di più su davideleo ...

  9. #9
    sokykos non è in linea Novello
    Post
    43
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ok... ti ringrazio ;-)

  10. #10
    sokykos non è in linea Novello
    Post
    43
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da davideleo
    Io farei così: sostituisci l'espressione qui sopra (se non è simile a quella che hai usato, comunque usala) con IIf(Imponibile>150;Null;Imponibile). Il campo rimane di tipo numerico, ma se Imponibile è superiore a 150 è vuoto.
    Poi nel report imposta la proprietà Formato della casella di testo Imponibile così: € #,00;€ #,00;€ #,00;"Espressione"
    Le sezioni del formato numerico separate dal punto e virgola sono nell'ordine: quella per i numeri positivi, negativi, 0 e valori Null. In questo modo il valore della casella di testo rimane sempre numerico, ma per quelli superiori a 150 (convertiti a Null nella query) viene visualizzato il testo "Espressione".

    Spero di aver colto il problema. Ciao
    Ho provato a utilizzare queste indicazioni ma sono inciampata nuovamente...
    E' un po' più complicato. Vediamo come spiegare la situazione (semplificando, senza perdere l'essenziale).

    Il mio report presenta un campo di testo per i nominativi di clienti (poniamo sia CAMPO_CLIENTE), un campo numerico per il codice associato ai clienti, un campo data, campi relativi a spese dei clienti e un paio di campi (tra cui IMPONIBILE) contenenti somme di valori dei campi delle spese. Ora:
    ho provato a usare l'istruzione IIF all'interno delle "Origini controllo" dei valori visualizzati nel report, ponendo

    IIf (IMPONIBILE>150;0;NOME_CAMPO)
    per IMPONIBILE e per ciascun campo relativo alle spese

    IIf (IMPONIBILE>150;"la_mia_espressione_di_testo";CAMPO_CLIENTE)
    per CAMPO_UTENTE, appunto (sfruttando il fatto che è già campo di testo)
    (ho trascurato, per ora, codici e data).

    Risultato: il record in cui IMPONIBILE è >150 assume l'aspetto da me assegnato, ma tutti gli altri record non conservano più i loro valori... (compare #Errore).

    Ciao!

+ Rispondi al messaggio
Pagina 1 di 4 123 ... ultimoultimo

Potrebbero interessarti anche ...

  1. Modifica Record da Sottomaschera/Query a form.
    Da CockerVBA nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 07-08-2015, 10:50
  2. [ACCESS] - vba per modifica record
    Da edobaldo nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 23-05-2009, 12:48
  3. Modifica record [Access 2007 & VBA]
    Da oOLucaOo nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 17-07-2008, 16:49
  4. [ACCESS] Modifica record
    Da luciele nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 18-05-2008, 15:39
  5. [ACCESS] Modifica report
    Da andromeda nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 03-08-2006, 15:58