Continuos form valorizzare campo

di il
17 risposte

17 Risposte - Pagina 2

  • Re: Continuos form valorizzare campo

    
    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...
  • Re: Continuos form valorizzare campo

    Ciao Angelo,

    avevi ragione, ho risolto con l'update da te suggerito.
    Non pensavo si potessero utilizzare funzioni all'interno di una query.

    Quindi la seguente query inserita nella Form_Current() della subform livello 3 (CollaudiSublotti)

    DoCmd.RunSQL "UPDATE Collaudi INNER JOIN SpecificheA ON (Collaudi.CDARTSPEC = SpecificheA.[SANMDIS]) AND (Collaudi.CDPOS = SpecificheA.SAPOS) SET Collaudi.CDQTAPV = CercaPzprel(CercaLivello([SALIVEL],'" & xMas & "'),SALQA,'" & xMas & "'), Collaudi.CDNANR = CercaNaNr(CercaLivello([SALIVEL],'" & xMas & "'),SALQA,'" & xMas & "') WHERE (((CercaLivello([SALIVEL],'" & xMas & "'))<>'+') And ((Collaudi.CDNMCOM)='" & xComm & "') And ((Collaudi.CDSUBLOT)=" & xSubLot & ") And ((Collaudi.CDARTSPEC)='" & xArtSpec & "'));"

    grazie molte
    sb
  • Re: Continuos form valorizzare campo

    È stata una bella sfida con tutti quei nomi strani e funzioni controverse

    in ogni caso sono lieto di esserti stato d'aiuto.
Devi accedere o registrarti per scrivere nel forum
17 risposte