Aprire una maschera e posizionarsi sul record zero

di il
10 risposte

Aprire una maschera e posizionarsi sul record zero

Cari tutti, ben trovati.
Ho questo problema:
Apro una maschera ed in questa una combo mi consente di selezionare un campo filtro e di saltare al record che mi interessa.
In questo modo posso visualizzare tutto di quel record.
Il fatto è che ad apertura maschera e quindi a combo vuota, mi si presentano già i dati del primo record attivo.
Io vorrei che i campi fossero invece tutti puliti in attesa della mia scelta nella combo.
In origine record della maschera ho inserito
SELECT Aderenti.ragsoc, Aderenti.figura, Aderenti.nato, ecc.
In Evento ho provato a saltare al record -1 in tutti i modi ma mi da errore per tabella non aperta.
Posso avere una dritta da uno più esperto di me?

Grazie a monte
Antonio Cuomo

10 Risposte

  • Re: Aprire una maschera e posizionarsi sul record zero

    Ciao, io ho risolto cosi: apro una maschera popup che è una maschera ma sembra una finestra di dialogo per come è piccola, contiene una combo non associata ma che memorizza temporaneamente la selezione, seleziono il nominativo dalla combo e l'evento dopo aggiornamento mi apre la maschera desiderata e mi trova il record selezionato con un'istruzione gotorecord and idrecord, la maschera popup può restare aperta per la ricerca successiva o chiudersi da sola.
    Ci sono anche altri modi per risolvere la stessa questione, dipende, quanti sono i record nel tuo database?
    In genere preferisco istruzioni che sfogliano anziché filtrare, così non devo poi rimuovere il filtro per muovermi da un record all'altro.
    Può essere utile quanto ho scritto?
  • Re: Aprire una maschera e posizionarsi sul record zero

    Operator ha dato una risposta corretta. Secondo me è impossibile avere una combo di ricerca nella propria stessa maschera e non vedere gli altri dati.
    E se imponessi alla maschera di posizionarsi "per default" su Record Nuovo?
  • Re: Aprire una maschera e posizionarsi sul record zero

    Sì può fare tutto ma se usi la combo per spostare io bookmark al record selezionato è evidente che la form è associata ed in questo caso non esiste il record zero o vuoto.
    Per fare quello che chiedi, che è fattibile, devi rimuovere l'associazione o meglio sarebbe imporre un filtro non gestibile che restituisca zero record... tipo 1=0, poi su dopo aggiornamento rimuovi il filtro e sposti con findfirst il bookmark....
    Se hai un minimo di basi quello che ti ho esposto sarà chiaro...
  • Re: Aprire una maschera e posizionarsi sul record zero

    Caro Alex, stavo seguendo la tua tesi ma come al solito mi sono impantanato.
    Nelle proprietà della maschera ho inerito al rigo "Filtro", proprio quello che mi dicevi e cioè "1=0".
    Ha funzionato nella parte che visualizzando la maschera non mi appariva più il primo record della tabella (che a me non interessa vedere).
    Purtroppo quando negli eventi della maschera "Dopo aggiornamento" voglio escludere quel filtro (1=0), mi sembra che non vada più via pur tentando in modi diversi. In pratica non mi vengono più trovati i record che la combo mi fa selezionare.
    In "Dopo aggiornamento ho inserito alternativamente :
    DoCmd.SetFilter , WhereCondition:="[figura] = & Chr(34) & CapoDipart & Chr(34) & Chr(34)"
    ' DoCmd.SetFilter , WhereCondition:="[figura] = " & Chr(34) & CapoDipart & Chr(34) & Chr(34)
    ' DoCmd.SetFilter , WhereCondition:="[figura] = " & Chr(34) & CapoDipart & Chr(34)
    ' DoCmd.SetFilter , "[figura]= CapoDipart"
    ' M_Uscite.FilterOn False
    ' FilterOn False
    .... . . . . ma il record non lo trova mai.
    Dove pensi che stia sbagliando?

    antonio
  • Re: Aprire una maschera e posizionarsi sul record zero

    Ciao,
    Non so se ho capito quanto richiedi…provo a darti una soluzione.

    Impostando l’origine record della tua maschera in modo che “filtri” i records della tua combo (vedi clausola where, ovviamente adattala al tuo caso…)

    select id1, modello, from tuaTabella
    WHERE tuaTabella.ID1 Like [Maschere]![nomeMaschera]![NomeCombo]

    La maschera si apre “vuota” diciamo…

    Dopo avere selezionato il valore nella combo, invochi un me.requery dopo su evento dopo aggiornamento della tua combo e la maschera visualizzarà il record richiesto.
    Un saluto.
  • Re: Aprire una maschera e posizionarsi sul record zero

    Sai Goku, va che è una meraviglia, grazie molto.

    Sarà per il fatto che io con i filtri litigo sempre, ma penso che anche la soluzione di Alex non era malvagia, (intanto mi piacerebbe comunque sapere dove sbagliavo), tanto più che nel suo caso, il programma passa una sola volta per il punto in cui elimina il finto filtro, mentre nel tuo caso il requery viene ripetuto per ogni record ricercato dalla combo e questo è un pò ridondante, ma come si suol dire: l'importante è che funzioni, ed io ringrazio tutti.

    saluti
    antonio cuomo
  • Re: Aprire una maschera e posizionarsi sul record zero

    Ciao,
    beh, no...ridondante si definiscono altre situazioni....
    forse il suggerimento dei bookmark è impostabile inquesto modo...
    
    Me.RecordsetClone.FindFirst "[tuoCampo]=" & Me.tuacombo.Column(0)
    If Not Me.RecordsetClone.NoMatch Then
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
    
    
    oppure :
    
    
    Me.RecordsetClone.FindFirst "[tuoCampo]=" &  Me.tuacombo.Column(0)
    If Not Me.RecordsetClone.NoMatch Then
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
    
    
    oppure accocia al volo il recordSource :
    
    
    Dim strSql As String
    strSql = "SELECT campo1, campo2, " & _
             "where idCampo1= " & &  Me.tuacombo.Column(0)
            
    Me.RecordSource = strSql
    
    
    ma tutte prevendo la forms associata.
    un saluto.
  • Re: Aprire una maschera e posizionarsi sul record zero

    Premetto che probabilmente avevo frainteso la domanda...!

    Il suggerimento di [Goku] direi che è più funzionale per quanto forse ho compreso.
    Di certo NON FILTRA ma semplicemente sposta il Bookmark di un Recordset completamente precaricato, cosa sostanzialmente differente e sulla cui utilità in realtà ci sarebbe da fare un discorso più ampio ma che forse non vale la pena.

    Una nota di chiarezza:
    Se la Combo di PRESELEZIONE ha solo i dati presenti in tabella e non consente l'immissione di dati NON IN LISTA la verifica del NoMatch non serve, non sarà mai possibile una inconsistenza dei dati.

    Valuterei come possibile alternativa, a mio avviso più valida in quanto non costringe a memorizzare nel VBA una stringa SQL, alla modifica del RecordSource in favore dell'uso della proprietà FILTER che lascia inalterato il RecordSource ed anch'esso su DB server agisce nell'ottica di ridurre i dati e viene applicata Server Side.
  • Re: Aprire una maschera e posizionarsi sul record zero

    Mi è molto piaciuto assistere ad una discussione molto teorica;
    Per ora resto a crogiuolarmi nel risultato raggiunto sperando col tempo di partecipare anch'io ai vostri dibattiti.

    di nuovo grazie e alla prossima
    antonio cuomo
  • Re: Aprire una maschera e posizionarsi sul record zero

    Ciao,
    nel copia incolla noto di avere postato due volte la stessa soluzione, la seconda leggermente diversa per quanto all'utilizzo del bookmark, ma che poco o niente aggiunge a quanto mostrato evito di riproporla.
    la if è suferfla [@Alex] ha ragione...
    fossi nel ns amico antocuomo adotterei la prima...con il requery.
    un saluto.
Devi accedere o registrarti per scrivere nel forum
10 risposte