Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Gestione totali in Sottomaschere con "consenti aggiunte" su NO

  1. #1
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Buonasera a tutti.
    Ho un altro quesito per voi, sicuramente figlio della mia visione complicata (come dirà sicuramente Alex) ma che spero di poter risolvere grazie ai vostri aiuti.

    Ho una maschera per l'immissione degli articoli (in questo caso prestazioni veterinarie) che è costruita in modo articolato (per non dire complicato...)

    Comprende una maschera principale per i dati del cliente, poi una serie di schede a comparsa (come si può notare dalle figure che ho linkato). In ognuna delle schede (una per ogni paziente, nel senso di animale, portato in visita da quel cliente) c'è una sottomaschera per l'immissione delle prestazioni relative a quel paziente.
    Anche l'immissione avviene in modo particolare, attraverso il click del pulsante "Inserisci" posto al di fuori della sottomaschera (non vi spiego perché, ma ho le mie ragioni).

    Per questo motivo vorrei disabilitare l'opzione "Consenti aggiunte" nella sottomaschera, facendo sparire la riga del nuovo record vuoto, per evitare che l'utente vada a cliccarci.

    Ho due livelli di totali quindi. I totali di ogni paziente in ognuna delle schede e il totale finale, somma di tutti i totali dei pazienti.
    Tutto funziona molto bene, malgrado la complessità.

    Spiegato il funzionamento contorto, giungo al quesito.
    Come detto vorrei disabilitare l'opzione "consenti aggiunte". Se lo faccio, questo è il risultato:




    La sottomaschera è pulita, senza nuovi record, ma nella txtBox del totale ottengo un messaggio di errore, ma solo fintanto che non aggiungo record nella sottomaschera, poi funziona.
    Se invece abilito le aggiunte, questo è il risultato:



    L'errore sparisce, ma ho quella riga del nuovo record vuota che vorrei evitare, per impedire un'interazione con l'utente.

    Ovviamente vorrei non dover vedere l'errore ed evitare al contempo la riga del nuovo record.
    Ho provato in mille modi, ma non riesco a venirne a capo. Anche tutte le opzioni del tipo

    Nz(Somma;0)
    
    non funzionano, perché se disabilito il nuovo record vuoto, la somma non avviene su record nulli, ma invece i record non esistono proprio.

    Che ne dite?
    Troppo complesso?
    Qualcuno ce la fa a darmi una mano anche in questo caso?

    Grazie, grazie, grazie!
    Ultima modifica di RaoulDuke; 10-01-2021 21:08 

  2. #2
    SCvanni non è in linea Scolaretto
    Post
    478
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve,
    faccio notare soltanto che quel codice va corretto in:

    nz(Somma(NomeControllo);0)
    
    inoltre ti volevo chiedere dove metti quel codice, nel controllo "Totale generico" o Totale?

    Quindi in ordine:
    1_è propedeutico osservare la corretta sintassi
    2_andrebbe inserito nella riga originaria
    3_Prova ad inserirlo in quel "Totale Generico"

    Saluti
    ℹ️ Leggi di più su SCvanni ...

  3. #3
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Ciao e grazie per la risposta.

    Sì, hai ragione, ho riportato male il codice.
    Nel Totale generico (controllo Somma1) ho effettivamente provato

    =Nz(Somma([SubTotale]);0)
    
    E ho anche pure provato

    =Somma(Nz([SubTotale];0))
    
    Ugualmente non funzionante.
    Ho provato anche a fare debug ma il campo Somma1 non ha valore Null al caricamento della Form e della SubForm.
    Ho provato anche ad immettere una MsgBox che mi restituisca il valore di Somma1
    MsgBox ("Il valore di Somma1 è " & SubForm1.Form.Somma1)
    
    ma ottengo messaggio di errore:
    Nessun valore nell'espressione immessa
    che non credo voglia dire che abbia valore Null.

    Ho trovato invece un workaround solo parziale, un po' contorto.
    Ho immesso una TextBox (txtNoRecord) con valore predefinito a 0, che assume valore 1 al click del comando "Inserisci" e che riprende valore 0 all'eventuale cancellazione di tutti i record nella SubForm

    A txtTotale (quello che visualizza la somma totale) ho poi assegnato

    =IIf([txtNoRecord]=0;0;[SubForm1]![Somma1])
    
    In questo caso non vedo più il messaggio di errore in txtTotale al caricamento della Form.

    Però la cosa interessante è che se provo a fare la stessa cosa con Somma1 non funziona: non assume valore 0, il controllo rimane vuoto.

  4. #4
    Post
    1,819
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da RaoulDuke Visualizza il messaggio
    sicuramente figlio della mia visione complicata (come dirà sicuramente Alex)
    Penso che mi accoderò ad @Alex
    Quote Originariamente inviato da RaoulDuke Visualizza il messaggio
    Comprende una maschera principale per i dati del cliente, poi una serie di schede a comparsa (come si può notare dalle figure che ho linkato).
    Cosa sono queste schede a comparsa? per ogni ogni paziente che aggiungi compare una "linguetta"? E' un controllo struttura a schede?
    Quote Originariamente inviato da RaoulDuke Visualizza il messaggio
    Ho due livelli di totali quindi. I totali di ogni paziente in ognuna delle schede e il totale finale, somma di tutti i totali dei pazienti.
    Pur essendo in linea di principio contrario alla pubblicazione di file dimostrativi, in questo caso sono io a chiederlo. C'è qualcosa che "non mi piace" ma lo devo vedere prima.
    Via tutti i dati sensibili-personali-identificativi. Lascia il minimo per riprodurre il problema.

  5. #5
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Intanto grazie mille per la tua risposta e per il tuo interessamento.

    Alcune precisazioni:

    - È vero, il database a cui sto lavorando (da completo autodidatta) ha raggiunto livelli di complessità che non avrei mai potuto immaginare. È molto articolato e intricato, almeno per un non professionista come me. Capisco che le mie decisioni progettuali possano apparire complicate agli occhi degli esperti. Ogni scelta che ho fatto è frutto di necessità specifiche dell'ambiente in cui verrà (si spera) utilizzato e delle sue particolari regole di mercato. Non ho ovviamente a disposizione tutti gli strumenti conoscitivi di cui disponete voi esperti, ma cerco di informarmi come posso e di studiare il più possibile.
    Più che complicato mi considero un creativo

    - Il database è in fase di progettazione, non è nemmeno lontanamente finito. Tutti i dati riportati sono puramente fittizi. Ho comunque tolto gran parte delle maschere (per evitare confusioni) e lasciato tutte le tabelle e query. Se preferisci Phil, posso allegare una versione più succinta o quella completa.

    -
    Cosa sono queste schede a comparsa? per ogni ogni paziente che aggiungi compare una "linguetta"? E' un controllo struttura a schede?
    Esatto. Al caricamento della maschera viene visualizzata solo la prima (le altre ci sono ma sono nascoste), poi le altre compaiono al bisogno, al click del pulsante "Aggiungi Paziente". Per ora ce ne sono solo due, solo la prima è quasi completa. Le altre (ne prevedo 4 o 5) verranno aggiunte semplicemente copiando la struttura della prima, una volta terminata.

    - Sono assolutamente aperto a qualsiasi tipo di suggerimento ed osservazione, anche riguardante la costruzione strategica della maschera.

    Questo è il link al database:

    Db Gestionale Veterinario

    Grazie mille per gli aiuti!

  6. #6
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Intanto segnalo che sono riuscito a riuscito a risolvere la questione dell'errore in txtTotale con

    =IIf(IsError([SubForm1]![Somma1]);0;[SubForm1]![Somma1])
    
    Codice che fa riferimento solo a Somma1, ma facilmente trasformabile a Somma1 + Somma2 + Somma3, ecc
    Ultima modifica di RaoulDuke; 11-01-2021 21:40 

  7. #7
    Post
    1,819
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da RaoulDuke Visualizza il messaggio
    Questo è il link al database:
    Non compila!
    Errore di compilazione. Impossibile trovare il metodo o il membro dei dati.
    Private Sub cboCategoria_AfterUpdate()
    If Me.cboCategoria.Value = 0 Then '<======= QUI
    
    nel modulo Form_sunfrmDettaglioPrestazioni2

  8. #8
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Ciao Phil e grazie per la risposta.

    subfrmDettaglioPrestazioni2 è la sottomaschera temporaneamente inserita nella seconda pagina del controllo struttura a schede.
    Anche eliminandola completamente l'errore che appare in txtTotale continua a presentarsi a meno che non imposti come sua origine il codice che ho postato prima.

  9. #9
    CarlettoFed non è in linea Scolaretto
    Post
    58
    Like Inviati  
    0
    Like Ricevuti  
    0
    Prova a creare l'integrità referenziale, cosa importante, fra le tabelle tabClienti e tabPrestazioni e vedi che cosa ti risponde Access.
    La Carta probabilmente dovrà essere relazionata ad un Cliente o al Paziente e quindi non è necessario avere il campo IDCliente nella tabPrestazioni.
    Ultima modifica di CarlettoFed; 12-01-2021 06:21 

  10. #10
    L'avatar di RaoulDuke
    RaoulDuke ora è in linea Scolaretto
    Post
    141
    Like Inviati  
    3
    Like Ricevuti  
    0
    Ciao Carletto, grazie per la tua risposta.
    In effetti qui penso tu abbia centrato qualcosa.
    La tabPrestazioni contiene l'IDCliente come FK.
    La tabDettagliPrestazioni contiene l'IDPaziente come FK.

    Non so perchè non abbia messo in join le tabelle, ma se provo a farlo in effetti Access mi segnala violazioni dell'integrità referenziale nei dati delle stesse.

    Proverò a svuotare tutti i dati dalle tabelle, creare le relazioni con integrità referenziale e vediamo se funziona. Appena riesco vi faccio sapere.

    La carta, invece, è probabilmente un elvetismo. Qui in Svizzera fa semplicemente riferimento al tipo di pagamento tramite carta di credito. Mi serve solo a sapere con quale carta di credito bancaria il cliente ha saldato il conto e non è relazionata in alcun modo con il cliente.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Gestione sottomaschere variabili
    Da Efrem nel forum Microsoft Access
    Risposte: 14
    Ultimo Post: 31-03-2015, 12:26
  2. Gestione sottomaschere
    Da Alfonso1959 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 08-02-2015, 11:49
  3. Aggiunte (.xla e .mda)
    Da deidedeide nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 12-02-2007, 14:58
  4. [ACCESS] Consenti aggiunte= SI/NO
    Da The Gang nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 19-10-2006, 07:40
  5. Avvio aggiunte
    Da Orso 33 nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 29-03-2005, 18:26