CercaLivello([SALIVEL],"C")
CercaNaNr(CercaLivello([SALIVEL],"C"), SALQA, "C")
CercaPzprel(CercaLivello([SALIVEL],"C"), SALQA, "C")
ho notato che hai messo dei parametri fissi nelle funzioni (mentre all'interno c'è un if che le valuta...xMas='C' o xMas'P'... le variabili cambiano di valore...) sei sicuro vada bene???
SELECT CollaudiSublotti.* FROM CollaudiSublotti WHERE CSNMCOM=Forms![Commessa]!CMNMCOM AND CSSUBLOT=Forms![Commessa]!xArtSpec;
forse hai mancato un "and" nella clausola where
Il campo [f3] non fa parte di nessuna tabella, quindi ho dovuto richimare 2 volte la funzione CercaLivello: non so se questo è ottimizzabile.
se non ho capito male il campo [f3] varia a seconda di [SALIVEL] che è diverso per ogni riga giusto? (lo chiedo per valutare l'ottimizzazione)
WHERE ((CercaLivello([SALIVEL],"C")<>"+")) and CDNMCOM= [Forms]![Commessa]!CMNMCOM and CDSUBLOT = [Forms]![Commessa]!xSubLot and CDARTSPEC = [Forms]![Commessa]!xArtSpec;
Ho anche modificato la clausola WHERE per limitare l'azione della query ai soli record interessati (siamo al terzo livello).
mi auguro di cuore che le clausole che interagiscono con la subform commessa siano prese da una singola riga e non da un set di dati... altrimenti serviranno altre funzioni di ricerca...
CDSUBLOT , CDSUBLOT e CDARTSPEC fanno parte della tabella collaudi?
da Angelo:
[f7] e [f8] sono 2 campi che si trovano nella submask collaudi e dipendono dall'omonima tabella "collaudi" SI o No ?
da Tinto:
la risposta è SI per entrambe le tue domande.
non ho capito una cosa: se la query di aggiornamento deve agire in [f7] e [f8] (entrambi nella maschera collaudi ) perchè non hai settato la clausola WHERE anche nella SELECT che mi hai postato? i campi da calcolare non sono tra quelli visualizzati nella sub maschera collaudi?
detto questo... sarà difficile che funzioni alla prima prova cmq:
in una copia del database!!!
crea un pulsante nella main form e annulla la composizione guidata.
nell'eventi click inserisci
Dim StrSQL As String
StrSQL = "UPDATE Collaudi INNER JOIN SpecificheA ON (Collaudi.CDARTSPEC = SpecificheA.[SANMDIS]) AND "
StrSQL = StrSQL & "(Collaudi.CDPOS = SpecificheA.SAPOS) SET Collaudi.CDQTAPV = CercaNaNr(CercaLivello([SALIVEL],'C')"
StrSQL = StrSQL & ", SALQA, 'C'), Collaudi.CDNANR = CercaPzprel(CercaLivello([SALIVEL],'C'), SALQA, 'C')"
StrSQL = StrSQL & "WHERE ((CercaLivello([SALIVEL],'C')<>'+')) and CDNMCOM= [Forms]![Commessa]!CMNMCOM and CDSUBLOT ="
StrSQL = StrSQL & " [Forms]![Commessa]!xSubLot and CDARTSPEC = [Forms]![Commessa]!xArtSpec;"
DoCmd.RunSQL (StrSQL )
se non ti da errore mentre testi il tuo programma, premi il pulsante man mano che scrivi nei controlli che dovrebbero dar luogo al calcolo dei valori [f7] e [f8]...
se non ti da errore ma non visualizzi cambiamenti al termine della pressione prova anche ad aggiungere di seguito al codice postato sopra quello che ti scrivo di seguito:
Forms_Commessa.Refresh
Forms_Commessa.Repaint
Forms_Commessa.Recalc
Forms_Commessa.Requery
da scrivere per ognuna delle tue subform dunque anche collaudi e quell'altra di cui ora mi sfugge il nome...
sicuramente avremo ancora da lavorarci...