OsvaldoLaviosa ha scritto:
Il discorso del campo Prezzo verrebbe in un secondo momento.
Trovo che la struttura tabelle è errata. Sei daccordo con me su Anagrafica e Servizi in relazione molti-a-molti, con tabella di congiunzione ServiziPersone ?
Potresti mostrare tutte le tabelle con le relazioni?
Se non chiariamo la struttura prima, non è possibile proseguire.
Database per un salone di Parrucchiere :
T_Elenco_Servizi :
Id_Servizio
Id_Categoria_Servizio
Servizio
Prezzo
______________________________
T_Servizi :
Id_Cliente
Data
Piega (Sì/No)
Dettaglio_Piega (Casella combinata campo, origine riga da T_Elenco_Servizi, più valori No, nr°colonne 3, colonna associata 1)
Curativi (Sì/No)
Dettaglio_Curativi (Casella combinata campo, origine riga da T_Elenco_Servizi, più valori Si, nr°colonne 3, colonna associata 1)
....
Incasso
______________________________
Relazioni :
T_Anagrafiche_Clienti!ID_Cliente <- T_Servizi!ID_Cliente 1 a molti
T_Servizi!Dettaglio_Piega - T_Elenco_Servizi!ID_Servizio 1 a molti
T_Servizi!Dettaglio_Curativi - T_Elenco_Servizi!ID_Servizio 1 a molti
_____________________________
Maschere :
M_Anagrafiche_Clienti!M_Servizi_Sottomaschera
M_Dettaglio_Piega (Per la scelta del tipo di piega contenente casella di riepilogo Dettaglio_Piega e tasti ok, cancella, annulla)
Private Sub Annulla_Click()
Me.Undo
DoCmd.Close acForm, "Dettaglio_Piega"
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera].Form.Refresh
End Sub
Private Sub Cancella_Click()
Me.Undo
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Dettaglio_Piega] = ""
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Piega] = "No"
If Not IsNull(Me![Dettaglio_Piega].Column(2)) Then
Dim PrezzoPrecedente As Variant
PrezzoPrecedente = Me![Dettaglio_Piega].Column(2)
If Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] <> 0 Then
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] - PrezzoPrecedente
End If
End If
DoCmd.Close acForm, "Dettaglio_Piega"
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera].Form.Refresh
End Sub
Private Sub Dettaglio_Piega_BeforeUpdate(Cancel As Integer)
If Me![Dettaglio_Piega] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Dettaglio_Piega] Then
Me!Ok.Enabled = False
Else
Me!Ok.Enabled = True
End If
End Sub
Private Sub Dettaglio_Piega_LostFocus()
If IsNull(Me![Dettaglio_Piega]) Then
Me!Ok.Enabled = False
End If
End Sub
Private Sub Form_Load()
If IsNull(Me![Dettaglio_Piega]) Then
Me!Cancella.Enabled = False
Me!Ok.Enabled = False
ElseIf Me![Dettaglio_Piega] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Dettaglio_Piega] Then
Me!Ok.Enabled = False
Else
Me!Cancella.Enabled = True
Me!Ok.Enabled = True
End If
End Sub
Private Sub Ok_Click()
If IsNull(Me![Dettaglio_Piega]) Then
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Piega] = "No"
Else
Dim NuovoPrezzo As Variant
NuovoPrezzo = Me![Dettaglio_Piega].Column(2)
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Dettaglio_Piega] = Me![Dettaglio_Piega]
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Piega] = "Sì"
Me.Undo
If Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] <> 0 And Not IsNull(Me![Dettaglio_Piega].Column(2)) Then
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] - Me![Dettaglio_Piega].Column(2)
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] + NuovoPrezzo
Else
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] = Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera]![Incasso] + NuovoPrezzo
End If
End If
Me.Undo
DoCmd.Close acForm, "Dettaglio_Piega"
Forms![M_Anagrafiche_Clienti]![M_Servizi_Sottomaschera].Form.Refresh
End Sub
M_Dettaglio_Curativi (Per la scelta dei tipi di servizi contenente casella di riepilogo Dettaglio_Curativi e tasti ok, cancella, annulla)