Newsgroup: it.comp.appl.access
Titolo: Raggruppare campi di tabella

Un cordiale saluto a tutti
Db A 2016
Avrei questa situazione in una tabella:
NomiCampi: Codice	R01	R02	R03	R04	R05	R06	R07	R08	R09	R10
Valori:		PP02	50	51	51,4	52	53	53,5	54	55	56	57
 
Dovrei creare dei gruppi di questi 10 valori (massimo 3 gruppi) ai quali attribuire  un valore di gruppo rispettando alcune regole. Sia il gruppo ( Da …  a …) che il valore viene digitato manualmente.
 
Esempi di gruppi corretti dove tutto il range è rappresentato
Nello stesso record: da 50 a 51 valore 300, da 51,4 a 51,4 valore 350, da 52 a 57 valore 400
oppure altro gruppo/record: da 50 a 57 valore 330
oppure altro gruppo/record: da 50 a 54 valore 333 e da 55 a 57 valore 345
 
Esempi di gruppi non corretti che non devono essere accettati alla conferma/aggiornamento del record:
da 50 a 56 (non accettato perché rimane fuori un campo)
da 50 a 51 e da 54 a 57 (non accettato perché rimangono fuori più campi)
spero di essere stato chiaro
ringrazio in anticipo chiunque vorrà darmi una dritta e saluto
   Gabriele


Se sei d'accordo che chi non capisce ciò che viene esposto
correttamente ed esaurientemente è un imbcille, ovvero che
l'imbecille è chi non espone correttamente ed esaurientemente
ciò che vuol ottenere, io ti fornisco la soluzione.
 
Bruno


Chiedo umilmente scusa. Mi rendo conto di non essere stato chiaro ma forse non è semplice.
Comunque provo a migliorare:
Tabella1
NomiCampi: CodCam R01 R02 R03 R04 R05 R06 R07 R08 R09 R10
Valori: PP02 50 51 51,4 52 53 53,5 54 55 56 57
 
Tabella2  (che sarà in relazione con Tabella1 con il campo CodCam)
NomiCampi: CodCam	Da1	A1	Val1	Da2	A2	Val2	Da3	A3	Val3
Record1	PP02	50	51	300	51,4	51,4	350	52	57	400	
Record2	PP02	50	50	100	51,4	51,4	350	52	57	400
  (non coperto il valore 51)
 
Record3	PP02	50	51	120	51,4	56	550	
  (non coperto il valore 57)
 
Vorrei che ci fosse un avviso di non accettazione/aggiornamento qualora i gruppi non coprano tutto il range (come nei Record di esempio 2 e 3)
Ringrazio di nuovo e saluto
   Gabriele

gabr****** used his keyboard to write :

Ti eri espresso correttamente ed io avevo intese perfettamente.
Avevo espresso le coperture (interamente e non) con un semplice
MsgBox che indicava il numero record, il codice record e un semplice
"All Ok" ovvero "Errore" senza precisare, nell'ultimo caso, i valori
non coperti. A tale ultima circostanza avavo pensato, poi trascurata
poiché tu non ne avevi fatto cenno.
 
La mia battutaccia... dovuta al fatto che nell'ultima circostanza,
in altro NG, avevo cercato in ogni modo di togliere di bocca all'OP
il senso/significato della richiesta senza riuscirci, finendo poi
col dirgli che non era in grado né di leggere né di scrivere.
 
Mi sono appena svegliato, non ho ancora messo i piedi a terra e in
questo portatile non ho la procedura.
Lasciami andare nella mia cantina (il mio ufficio personale) ed in 
breve
ti invierò in programma come in seconda richiesta precisato.
 
Bruno
 
PS
Mi piace la gente che ha il coraggio di accettare le sfide!


Questa volta l'imbecille sono io... a non aver letto e inteso
chiaramente il contenuto del tuo ultimo post.
Laddove nasce una seconda tabella e la definizione di un secondo
dato e senz'altro, a seguire, la collocazione di un ulteriore
dato: il valore.
Un'altra cosa che aborro son le domande a rate.
Risponderò correttamente (spero) alla prima soltanto:
====================================
Public Sub Stranezze()
Dim RS As Recordset, h As Long, D(1 To 6) As Single, k As Long, j As 
Integer
Dim S As Integer, i As Integer, m As Integer, n(1 To 6) As Integer, SS 
As String
 
'---  Definizioni  -----------------------------------------
Set RS = CurrentDb.OpenRecordset("T_Strana", dbOpenDynaset)
D(1) = 50: D(2) = 51.4
D(3) = 53: D(4) = 55
D(5) = 56: D(6) = 57
'-----------------------------------------------------------
 
m = RS.Fields.Count - 1
Do Until RS.EOF
    S = 0: j = 0: k = k + 1
    For h = 1 To m
        For i = 1 To 6
            If D(i) = RS(h) Then n(i) = h
        Next
    Next
    For i = 1 To 6
        If D(i) > 0 Then j = j + 1
        S = n(2) + n(4) + n(6) - n(1) - n(3) - n(5)
    Next
    S = S + j / 2
    SS = "Record  " & k & "  -  Codice  " & RS(0) & vbCrLf
    MsgBox IIf(S = m, SS & "All Ok!", SS & "Errore!")
    RS.MoveNext
Loop
 
End Sub
======================================
 
Alla seconda, per il momento, non ho proprio voglia di pensarci.
 
Bruno


Non mi piace lasciar le cose a mezzo.
 
https://1drv.ms/u/s!AvTaMfd5-b2o1FgQHJ1SzBiAJcLU?e=7qLRhz
 
 
Dimmi se è tutto Ok.
 
Bruno


Buonasera Bruno
Nei prossimi giorni testerò bene il tutto ma penso che al 99,99 % sia esattamente quello che cercavo.
Mille volte grazie !
  Cordialmente
  Gabriele
 


Ringrazio di nuovo per la pazienza e la disponibilità
Chiedo: e se volessi che anziché ciclare tutti i record la verifica fosse fatta solo su un record, in caso di inserimento oppure sul record corrente in caso di variazioni, per bloccare la registrazione errata cosa si dovrebbe cambiare ?
 Saluto cordialmente
 Gabriele


https://1drv.ms/u/s!AvTaMfd5-b2o1FgQHJ1SzBiAJcLU?e=N2u6Un
 
 
DblClick su CodCam di Form2.
 
Bruno


Grazie Bruno
Veloce e preciso
  Cordialmente
  Gabriele