Assegnazione range di valori a variabile temporanea

di il
50 risposte

50 Risposte - Pagina 3

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - BarLudwig ha scritto:


    Buongiorno Franco, pensavo di aver già postato le informazioni che mi richiedi. Comunque le ripeto sperando che siano conformi a quanto mi hai chiesto. 

    Ok grazie , per la prossima volta se puoi imposta il Blocco di Codice per inserire il codice da postare:


    In questo modo è molto più leggibile:

    Routine che ho inserito nella form Menu:
    
    Private Sub cmdModSocietà_Click()
    On Error GoTo cmdModSocietà_Err
       DoCmd.Close acForm, "Menu"
       DoCmd.OpenForm "frmDatiEntiSocietà", acNormal, "", "", acFormReadOnly, acWindowNormal
       TempVars.Add "VarTempFormaGiuridica", "s*"
    cmdModSocietà_Exit:
    Exit Sub
    cmdModSocietà_Err:
       MsgBox Error$
       Resume cmdModSocietà_Exit
    End Sub
    
    
    Private Sub cmdModEnti_Click()
    On Error GoTo cmdModEnti_Err
    DoCmd.Close acForm, "Menu"
    DoCmd.OpenForm "frmDatiEntiSocietà", acNormal, "", "", acFormReadOnly, acNormal
       TempVars.Add "VarTempFormaGiuridica", "[abcdefgilmnopqrtuvz]*"
    cmdModEnti_Exit:
       Exit Sub
    cmdModEnti_Err:
     MsgBox Error$
       Resume cmdModEnti_Exit
    End Sub
    
    Entrambe le routine richiamano la medesima form. Nella form c'è una cbo che ha come origine dati la seguente istruzione SQL
    
    SELECT tblAcronimi.idAcronimo, tblAcronimi.acronimo, tblAcronimi.idFormaGiuridica, tblFormaGiuridica.FormaGiuridica
    FROM tblAcronimi INNER JOIN tblFormaGiuridica ON tblAcronimi.idFormaGiuridica = tblFormaGiuridica.IdFormaGiuridica
    WHERE (((tblFormaGiuridica.FormaGiuridica) Like [TempVars]![VarTempFormaGiuridica]) AND ((tblAcronimi.[Tipo partecipata])="1"))
    ORDER BY tblAcronimi.acronimo;

    Dammi solo un attimo e ti rispondo …

  • Re: Assegnazione range di valori a variabile temporanea

    Non ti vado a commentare le Sub, ci sono alcune cose che si potrebbero fare diversamente… ma lascio a te l'onere di farlo in seguito.

    Concentriamoci solo sulla parte da eliminare e da sostituire con un approccio un pò diverso.

    Pertanto via le TempVars e prestiamo attenzione su OpenArgs:

    mantenendo la tua sintassi, andiamo a passare un argomento alla Form chiamata, impostando una stringa nel parametro OpenArgs
    (prendiamo ad esempio solo il primo pulsante, poi il resto lo farai tu.

    Private Sub cmdModSocietà_Click()
    On Error GoTo cmdModSocietà_Err
       DoCmd.Close acForm, "Menu"
       DoCmd.OpenForm "frmDatiEntiSocietà", acNormal, , , acFormReadOnly, acWindowNormal, _
       				  "tblFormaGiuridica.FormaGiuridica Like 's*' And tblAcronimi.[Tipo partecipata] = '1'"
    cmdModSocietà_Exit:
    Exit Sub
    cmdModSocietà_Err:
       MsgBox Error$
       Resume cmdModSocietà_Exit
    End Sub

    In Open form viene passato come argomento di OpenArg la Where Condition per la Select della ComboBox
    Adesso nella Form che vai ad aprire, in Form_Load, si imposta la proprietà RowSource della combo in questione (non so il suo nome e quindi lo devi mettere tu)

    Private Sub Form_Load()
    ' set combobox
    Me.TuaCOMBO.RowSource = "SELECT tblAcronimi.idAcronimo, tblAcronimi.acronimo, tblAcronimi.idFormaGiuridica, tblFormaGiuridica.FormaGiuridica " & _
                            "FROM tblAcronimi INNER JOIN tblFormaGiuridica ON tblAcronimi.idFormaGiuridica = tblFormaGiuridica.IdFormaGiuridica " & _
                            "WHERE " & Me.OpenArgs & " ORDER BY tblAcronimi.acronimo;"
    End Sub

    Ecco fatto…

    Adesso in fase di richiamo della form, puoi passare a tuo piacimento una stringa di where condition per la combobox che in fase Load della Form verrà popolata così come desideri.
    Nel secondo pulsante fai la stessa identica cosa.

    Riepilogando:

    • in Openform nel parametro OpenArgs costruisci una stringa di selezione dei records che dovranno popolare la combo box
      • come puoi vedere puoi utilizzare tutti gli operatori che vuoi e combinarli come meglio credi
      • per l'operatore Like per un confronto stringa, usa gli Apici e l' * prima o dopo o entrambi , secondo la ricerca che vuoi effettuare
    • quando si apre la Form richiamata, nell'evento Form_Load vai ad indicare la nuova RowSource della combobox
      • dopo la Where  si concatena nella stringa select, Me.OpenArgs 
      • Me.OpenArgs contiene la stringa che hai impostato su OpenForm 

    Pertanto sei svincolato dal tipo di Operatore, per esempio “Like” oppure “=” etc etc… , perchè di volta in volta sarai tu ad indicare alla Where la Stringa di condizioni da soddisfare per popolare la combo box.

    Come vedi non impegni la memoria con variabili in più e ottieni un ottima flessibilità.

    Questo ti consentirà successivamente di modificare l'approccio alle tabelle etc etc… come detto nei post precedenti.

    Ad ogni modo l'unica cosa che dovrai modificare sarà la stringa OpenArgs in Open Form.

    Questo solo un esempio di come puoi intervenire sull'attuale codice senza necessariamente scombussolare quello che hai già fatto.
    Poi con l'esperienza migliorerai, ci vuole solo tempo e studio… come in tutte le cose.


    P.S. in OpenForm se non passi alcuni parametri non usare “”, “”, etc… ma semplicemente metti la virgola e lasci vuoto il parametro.
    nei nomi delle Fields, nelle tabelle, non usare gli spazi come nel caso [Tipo partecipata]… vai solo a complicarti la gestione. Meglio usare una sintassi del tipo : TipoPartecipata

    Edit:
    ti lascio documentazione per l'argomenti trattati:
    Form.OpenArgs property (Access) | Microsoft Learn
    ComboBox.RowSource property (Access) | Microsoft Learn
    Linguaggio SQL per Access: clausola WHERE - Supporto tecnico Microsoft

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - fratac ha scritto:


    Dopo di che uso il select per selezionare il codice da eseguire in base al mio indice.

    Buongiorno Fratac

    ho studiato con attenzione il materiale che mi hai inviato. Mi sembra un'ottima soluzione alla quale non sarei mai arrivato….

    Se ho capito bene gli indici che inserisci accanto a Me.Testo17 hanno lo scopo di evitare di scrivere nella form  Serie_Tv2 una routine per ciascun controllo di ricerca (Nome serie, Avanzamento, Stato). Me lo confermi oppure non ho capito bene ?

    Potresti inoltre postarmi anche il select cui fai riferimento ?

    Ancora mille grazie.

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - BarLudwig ha scritto:


    10/07/2023 - fratac ha scritto:


    Dopo di che uso il select per selezionare il codice da eseguire in base al mio indice.

    Buongiorno Fratac

    ho studiato con attenzione il materiale che mi hai inviato. Mi sembra un'ottima soluzione alla quale non sarei mai arrivato….

    Se ho capito bene gli indici che inserisci accanto a Me.Testo17 hanno lo scopo di evitare di scrivere nella form  Serie_Tv2 una routine per ciascun controllo di ricerca (Nome serie, Avanzamento, Stato). Me lo confermi oppure non ho capito bene ?

    Potresti inoltre postarmi anche il select cui fai riferimento ?

    Ancora mille grazie.

    Il codice lato form serie tv l'avevo già postato.

    E' questo.

    Private Sub Form_Load()
    Dim variabile As String
    Dim controllo As String
    Dim dato As String
    
    
    If IsNull(variabile = Me.OpenArgs) Then Exit Sub
    
    
    variabile = Me.OpenArgs
    controllo = Left(variabile, 1)
    dato = Mid(variabile, 2)
    
    Select Case controllo
        Case "1"
            Me.Filter = "ID_serietv =" & dato
        Case "2"
        
        dato = Chr(34) & dato & Chr(34)
            Me.Filter = "avanzamento =" & dato
        Case "3"
        
        dato = Chr(34) & dato & Chr(34)
           
            Me.Filter = "stato =" & dato
            
        Case "4"
        dato = Chr(34) & dato & Chr(34)
        Me.Filter = "Nome_serie =" & dato
        
    
    End Select
    
    
    
    
    Me.FilterOn = True
    End Sub

    In realtà, l'indice serve per capire da quale controllo arriva il dato per la ricerca, visto che il tutto funziona se il codice è eseguito al caricamento di serie tv e serve un modo per discriminare le ricerche. 
    Naturalmente ogni controllo sul form ricerche ha una sua routine che passa i valori di ricerca corrispondenti al controllo.
    Poi sul form serie tv fai un confronto ed esegui la ricerca corrispondente.
    Quindi nel tuo caso avrai i due pulsanti con il loro codice e nel form che aprirai avrai il codice che confronta i dati e per ogni fattispecie, eseguirà la ricerca corrispondente.

  • Re: Assegnazione range di valori a variabile temporanea

    Buon pomeriggio Fratac.

    Grazie della ulteriore spiegazione, ora mi è tutto chiaro

  • Re: Assegnazione range di valori a variabile temporanea

    Buon pomeriggio  Franco

    la chiarezza nell'esporre e spiegare i problemi, la tua logica stringente e soprattutto la capacità e la voglia di immedesimarti nelle difficoltà altrui mi stupisce ancora una volta.

    Come in occasione dei tuoi precedenti suggerimenti (che ho messo in pratica) su come impostare un data base relazionale e come strutturare le tabelle, anche in questa occasione sei stato di grande  aiuto.

    Ti ringrazio sinceramente

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - sihsandrea ha scritto:


    Ottimo! era quello che tentavo di spiegare.

    Certo, potrei farlo, ma se usassi una variabile globale, ogni volta che la uso, dovrei sapere come è stata dichiarata e ricordarmi di azzerarla se non deve rimanere con un valore…

    in realtà ogni volta che scrivi:

    casella = ("3" & Me.Testo17.Value)

    stai riassegnando la variabile. Se prima casella era “pippo” adesso è “3xyz”

    per ottimizzare:

    If IsNull(Me.Testo17.Value) Then
        DoCmd.OpenForm "Serie_tv2"
      Else
        DoCmd.OpenForm "Serie_tv2", , , , , , ("3" & Me.Testo17.Value)
      End If
    End Sub

    risparmi una variabile e il codice è più conciso.

    In questo caso non serve nessuna variabile ne pubblica ne locale.

    Per quanto riguarda sulla dichiarazione esplicita dell'openArgs, hai ragione. Non ricordo come mai ho usato una variabile. Forse ero partito con un ragionamento diverso e poi ho cambiato approccio, lasciando la variabile.

    per quanto riguarda la dichiarazione di una variabile, non mi trovi d'accordo.

    Una variabile locale, a differenza di una globale o di una variabile  di ambiente, viene dichiarata con DIM ogni volta che si attiva la relativa SUB.
    Se mi dimentico di dichiararla, l'Option explicit mi genera un errore, se mi dimentico di assegnarla ha un valore null che mi genera un errore.

    Gli altri due tipi, una volta dichiarate ed assegnate, rimangono con il valore in memoria per tutta la durata della sessione e per quanto riguarda le vartemps, molte volte, in particolari condizioni, rimangono con il valore anche nelle sessioni successive. Infatti se il database ha un crash le vartemps mantengono il valore anche se viene ricaricato il database. E sono state introdotte, proprio per questo tipo di problematiche. Una mancata nuova assegnazione, genera un bug nell'esecuzione della ricerca che il programma non intercetta e che da risultati sballati.

    E con una quantità importante di dati e record filtrati è compito dell'operatore accorgersi di eventuali mancanze o incongruenze nei dati ricercati e molte volte ci si accorge dell'errore quando i dati all'interno della tabella sono già corrotti.

    Una volta che ci si accorge, individuare la causa del malfunzionamento implica un debug lungo e laborioso che costringe a rileggere per intero tutto il codice. Se poi i dati sono corrotti, bisogna andare fisicamente a controllare tutti i dati all'interno delle tabelle compresi gli indici e cercare di capire se sono giusti oppure no.

    Tutto per una semplice svista, cioè di riassegnare la variabile da “pippo” a “3xyz”.
    Se questa svista avviene con una variabile locale, access drizza subito i peli e si blocca per uso improprio del valore null o per variabile non dichiarata.

  • Re: Assegnazione range di valori a variabile temporanea

    Fratac

    Causa urgenza ho troncato quello che stavo scrivendo.

    Aggiungo: anche io spolverando vecchi codici, oggi mi rendo conto di come si può ottimizzare il codice. In gioventù più che all'ottimizzazione pensavo alla realizzazione, se questo comportava qualche var in più sorvolavo…

    Sul resto ti do ragione, infatti non servono variabili per passare informazioni da un form all'altro. Posso richiamare l'oggetto del form e passargli i parametri.

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - BarLudwig ha scritto:


    Buon pomeriggio Fratac.

    Grazie della ulteriore spiegazione, ora mi è tutto chiaro

    Bene. Ora che più o meno ti abbiamo spiegato l'approccio logico al problema e come gestirlo a livello di codice, vediamo se riusciamo a superare in modo un po' più agevole il problema della multiselezione di valori che tu hai pensato di risolvere confrontando i valori compresi tra un range di numeri.
    Naturalmente il mio è solo la proposta di un ulteriore punto di vista al problema e come già detto è solo uno dei tanti metodi possibili.

    Purtroppo, la grande forza, ma anche il grosso problema di access è che è un programma che cerca di accontentare tutti e quindi per ogni problema esistono decine di approcci logici e decine di metodi e decine di strumenti per risolverlo.
    Se da un lato si ha una grande scelta, dall'altro si genera solo confusione perchè ognuno ha un suo metodo preferito. E molte volte allo stesso problema su progetti diversi non è raro che lo stesso programmatore usi metodi diversi. Un po' per comodità, un po' per sperimentare.

    Quello che hai pensato di realizzare, implica una modifica alla struttura del codice ad ogni aggiunta,  cancellazione o modifica di un valore del tipo di società.

    Questo naturalmente non va bene. Il programma deve funzionare indipendentemente dalla quantità dei dati inseriti e dal loro tipo.

    come avrai notato nelle immagini che ti ho postato c'è un ulteriore controllo. Cioè la ricerca per testo.

    In questa ricerca ci sono due controlli (tre in realtà se consideriamo il pulsante)

    Una text box, dove inserisco il testo o la lettera da ricercare nel nome delle serie tv e una listbox, dove vengono visualizzati i risultati della ricerca attivata dal pulsante ricerca per testo.

    Quindi se ricerco ad esempio le lettere “or” ottengo questo risultato.

    (si ho visto anche “warrior nun” e pure “jane the virgin”….)

    Ora, nel mio caso, come utilizzo questo tipo di ricerca, non è quello che serve a te, ma mi è servito come esempio per presentarti una list box e i suoi metodi e proprietà.

    Una listbox è praticamente una combobox, solo che al posto di visualizzare i dati in visualizzazione a tendina, hai una visualizzazione estesa e sopratutto permette la multiselezione di valori.

    Quindi, secondo me l'uso di una list box ti agevolerebbe molto il lavoro.

    Ora, la mia list box è impostata sulla possibilità di selezionare un solo valore.

    Quindi se clicco sul nome di una serie, mi apre il form serietv, con i dati di quella serie. (porzione del codice con indice “4”)

    (nota per sihsandrea. Si potrei togliere la quarta opzione ed usare la prima con indice “1”. questo mi eviterebbe errori dovuti ad apici o apostrofi nel nome che mi sballerebbero la ricerca. Ma vale sempre il discorso che è un codice scritto al volo)

    Come detto però, la list box,  ha la possibilità di usare la multiselezione. Cioè selezionare quanti valori desideri.

    Nel tuo caso, andresti a selezionare tutte le tipologie di società che ti interessano e poi con un unico pulsante, creare una stringa composta da multivalore da ricercare usando una query che poi passerai con openarg al form che devi aprire, ottenendo la lista di tutte le società che rispettano i termini che hai selezionato nella listbox dell'altro form

    In questo modo, puoi aggiungere anche mille tipologie di società, ma il programma funzionerà sempre. Senza essere vincolato da between o confronti legati ad indici statici all'interno del codice, che ti obbligherebbero ogni volta a modificare il codice.

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - sihsandrea ha scritto:


    Fratac

    Causa urgenza ho troncato quello che stavo scrivendo.

    Aggiungo: anche io spolverando vecchi codici, oggi mi rendo conto di come si può ottimizzare il codice. In gioventù più che all'ottimizzazione pensavo alla realizzazione, se questo comportava qualche var in più sorvolavo…

    Sul resto ti do ragione, infatti non servono variabili per passare informazioni da un form all'altro. Posso richiamare l'oggetto del form e passargli i parametri.

    Meglio passare un Pointer ad un'oggetto in modo da non rendere Vincolato il Codice… recuperi l'Oggetto, o se sei più diligente ad usare una Collection o una Classe, rendi la Form comandabile da qualsiasi punto senza avere Vincoli di riferimenti fissi.

    Se la Form vuole N parametri, crei una Collection la valorizzi con gli N parametri, passi la collection come Pointer, recuperi il pointer su Load e riassegni la Collection a quella puntata dal Pointer, a quel punto hai gli Items già divisi…

    In VBA non è particolarmente usato, ma secondo me… si dovrebbero usare di più i Pointer e meglio anche nel VBA.

  • Re: Assegnazione range di valori a variabile temporanea

    Adesso non ricordo in access come si fa (sono passati 30 anni).

    In ogni caso, riflettendo bene, visto che l'aiuto lo chiede un neofita, o serve per avere un indirizzamento verso le soluzioni, va meglio l'uso di variabili, magari quando matura la padronanza del linguaggio saprà ottimizzare.

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - @Alex ha scritto:


    In VBA non è particolarmente usato, ma secondo me… si dovrebbero usare di più i Pointer e meglio anche nel VBA.

    e vabbè… mo' me tocca vedè pure i Pointer ….  ma quante ne sai ???? sei un portento !!!!

    Ora mi studio l'argomento e vedo di applicarlo al progetto in corso che ho aperto qualche settimana fa. 
    Come si dice… ogni occasione è ghiotta per imparare ;-))

    Super @Alex… grazie per tutte queste info!!!

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - sihsandrea ha scritto:


    In ogni caso, riflettendo bene, visto che l'aiuto lo chiede un neofita, o serve per avere un indirizzamento verso le soluzioni, va meglio l'uso di variabili, magari quando matura la padronanza del linguaggio saprà ottimizzare.

    Il ragionamento di sihsandrea non fa una piega ! Ho imparato molte utili cose che ignoravo e vi ringrazio tutti, però è meglio non andare troppo oltre …..

  • Re: Assegnazione range di valori a variabile temporanea

    Private Sub Form_Load()
    Me.AllowEdits = False
    'DoCmd.Maximize
    PagAnagrafica.Visible = False
    pagAmministratori.Visible = False
    pagCaricheInterne.Visible = False
    PagAteco.Visible = False
    PagTusp.Visible = False
    
    Me.cboAcronimo.RowSource = "SELECT tblAcronimi.idAcronimo, tblAcronimi.acronimo, tblAcronimi.idFormaGiuridica, tblFormaGiuridica.FormaGiuridica " & _
                           "FROM tblAcronimi INNER JOIN tblFormaGiuridica ON tblAcronimi.idFormaGiuridica = tblFormaGiuridica.IdFormaGiuridica " & _
                           "WHERE " & Me.OpenArgs & " ORDER BY tblAcronimi.acronimo;"
    
    Me.TipoFondazione.Visible = False
    Modulo1.messaggio
    Me.cboAcronimo.SetFocus
    cmdModificaRecord.Enabled = False
    cmdEliminaRecord.Enabled = False
    End Sub
    
    Private Sub cboAcronimo_GotFocus()
    Me.AllowEdits = True
    End Sub
    
    '------------------------------------------------------------
    ' cboAcronimo
    '
    '------------------------------------------------------------
    Private Sub cboAcronimo_AfterUpdate()
    On Error GoTo cboAcronimo_Err
    Me.Requery
    Me.PagBlank.Visible = False
    Me.PagAnagrafica.Visible = True
    Me.pagAmministratori.Visible = True
    Me.pagCaricheInterne.Visible = True
    Me.PagAteco.Visible = True
    Me.PagTusp.Visible = True
    Me.AllowEdits = False
    cmdModificaRecord.Enabled = True
    cmdEliminaRecord.Enabled = True
    cboAcronimo_Exit:
       Exit Sub
    cboAcronimo_Err:
       MsgBox Error$
       Resume cboAcronimo_Exit
    
    End Sub
    

    Buona Sera Franco, scusami se ricorro ancora al tuo aiuto.

    Ho modificato le routine della form Menu come mi hai indicato e ho inserito nella routine che carica  la form successiva (frmDatiEntiSocietà)   l'istruzione RowSource della mia combox (che si chiama cboAcronimo). La selezione della combobox funziona perfettamente. Se la maschera viene  viene aperta attraverso il comando modSocietà della form Menu la combobox mostra esclusivamente le società, mentre se viene aperta attraverso il comando modEnti mostra esclusivamente enti non societari.

    Il problema è che dopo aver selezionato l'ente o la società la maschera non carica i relativi dati. La mia impressione è che il comando Me.CboAcronimo.Requery connesso all'evento AfterUpdate della Cbo non ha più effetto. Inoltre non so cosa inserire nei  campi origine controllo e origine riga della combobox.

    Ti ho inviato le routine della form “frmDatiEntiSocietà” richiamata dalla Form Menu e la stampa della finestra delle proprietà della cboAcrlonimo. Spero che vorrai aiutarmi ancora una volta e ti ringrazio.

  • Re: Assegnazione range di valori a variabile temporanea

    10/07/2023 - BarLudwig ha scritto:


    Ti ho inviato le routine della form “frmDatiEntiSocietà” richiamata dalla Form Menu e la stampa della finestra delle proprietà della cboAcrlonimo. Spero che vorrai aiutarmi ancora una volta e ti ringrazio.

    Per comodità tua nelle proprietà della combo, in visualizzazione struttura, puoi semplicemente inserire una select senza Where e senza Order By

    Per esempio:

    SELECT tblAcronimi.idAcronimo, tblAcronimi.acronimo, tblAcronimi.idFormaGiuridica, tblFormaGiuridica.FormaGiuridica
    FROM tblAcronimi INNER JOIN tblFormaGiuridica ON tblAcronimi.idFormaGiuridica = tblFormaGiuridica.IdFormaGiuridica 

    Questo ti consente di progettare la combo e la Form senza problemi.
    Poi quando verrà richiamata la form con il passaggio di OpenArgs etc… sarà l'evento della Form in Load a caricare la nuova Select con la Where e l'Order By desiderato.

    • le altre proprietà della ComboBox le devi lasciare come erano in origine prima della modifica, cioè quando utilizzavi le variabili temporanee
      • in Origine Controllo quello che avevi prima oppure niente… questo dipende da come userai il valore di ritorno della combobox
      • in tipo origine riga metterai Tabella/Query
      • in colonna associata il numero della colonna che vuoi utilizzare come chiave di ricerca restituita dalla Combobox
      • il numero delle colonne che deve avere la combobox
      • e le dimensioni delle colonne della combobox

    Esempio:

    •  se Me.cboAcronimo viene caricata con due colonne, vedere la Select che hai impostato, in questo caso avrai:
      • Poniamo che la colonna associata è la 1
      • Ponimao che le colonne sono 2
      • Poniamo che le dimensioni delle colonne sono: 0cm;3cm
        • in questo caso la prima colonna = 0cm non si rende visibile e la seconda colonna = 3cm si vedrà e conterrà il valore della seconda colonna
      • Siccome la Select posta in origine riga è = SELECT tblAcronimi.idAcronimo, tblAcronimi.acronimo,…etc…
        • a questo punto avrai:
          • in colonna associata il campo tblAcronimi.idAcronimo
          • e nella colonna che visualizzi avrai il campo tblAcronimi.acronimo

    Ad ogni modo tu metti i valori che avevi già impostato prima della modifica, se prima funzionava deve funzionare anche adesso.

    E fino a qui niente di nuovo rispetto a quello che avevi già realizzato.


    10/07/2023 - BarLudwig ha scritto:


    Il problema è che dopo aver selezionato l'ente o la società la maschera non carica i relativi dati. La mia impressione è che il comando Me.CboAcronimo.Requery connesso all'evento AfterUpdate della Cbo non ha più effetto. Inoltre non so cosa inserire nei  campi origine controllo e origine riga della combobox.

    Dopo che hai selezionato un elemento dalla combobox fai una Requery della Form … io non conosco la tua Form e come e quali campi sono filtrati per ottenere la visualizzazione di determinati records o altro…
    Dovresti dare alcune info in più per capire meglio tale flusso.
    (Magari in Origine Controllo della ComboBox avevi associato ad un campo del recordset della Form… è solo una supposizione, non ho elementi per saperlo purtroppo)


    Comunque se rimetti le impostazioni della combobox come erano prima e se prima funzionava, allora non avrai alcun problemi perchè l'unica cosa che cambia rispetto a prima è la sola Where Condition che viene caricata come abbiamo detto sopra.

Devi accedere o registrarti per scrivere nel forum
50 risposte