Newsgroup: it.comp.appl.access
Titolo: Maschera "Spopolata"

Buogiorno a tutti.
Lavoro in azienda, con un gestionale che "gira" in ambiente Oracle.
Quando apro delle maschere di gestione, sono completamente
vuote, e si popolano solo dopo aver digitato una stringa in un campo
predefitito, esempio se consulto l'anagrafica dei materiali, digito
un
codice articolo, se la gestione ordini un ordine e così via.
 
Premesso questo, mi domandavo se è possibile riprodurre
questo comportamento anche in access.
Cioè... ho una maschera che ha come origine la tabella degli ordini, i
quali
sono decine di migliaia. Per allegerire il caricamento della maschera
stessa
sarebbe possibile aprire questa maschera completamente vuota, e
popolarla
solo dopo aver immesso in un apposito controllo una stringa di
ricerca?
Credete sia possibile?
 
Grazie in anticipo.
Tommaso

 Tommaso
 
Certo che sï¿œ!
 
Per attivare il filtro:
FilterOn = True
DoCmd ApplyFilter, FilterString
 
Per disattivarlo:
FilterOn = False
 
Piï¿œ semplice di cosï¿œ...
 
Bruno
 
PS
FilterString ï¿œ nel formato SQL della clausola
WHERE... senza WHERE.
Per es:
FilterString = "[NumFat]='" & [Numero] & "'"
 
 


Ciao Bruno.
Questo non lo salva (forse) dal suo problema.
Il filtro agisce sulla fonte dati gia' aperta.
Discorso diverso sarebbe se:
FonteDati = select * from quellochediavolo e' where 1=2
      (questo per evitare che appaia il famoso #Nome?)
altrimenti una FonteDati null sarebbe perfetta (parto dal presupposto 
che il form sia associato)
E solo dopo aver immesso la ricerca:
Fonte dati =  select * from quellochediavolo e' where 
condizionediricercavera
 
Questo e' quello che faccio normalmente nei controlli a scheda per 
evitare che mi carichi subito tutte le sorgenti dati. In quel caso non 
metto la FonteDati (tranne sulla prima scheda) fino a quando non ho 
evento di change sulla pagina.
 
-- 
 
ac (x=y-1)

 sulla pagina.
 
Ok, puoi anche avere in OnOpen/OnLoad:
FilterOn = True
DoCmd.ApplyFilter, "1=2"
 
poi un Button FilerOn:
FilterOn = True
DoCmd.ApplyFilter, FilterString
 
e un Button FilterOff:
FilterOn = False
 
senza così toccare il RecordSource.
 
E forse anche in qualche altra dozzina di modi...
 
Bruno
 
 

 E forse anche in qualche altra dozzina di modi...
non li vedo ;-{)
 
Quello che vedo e':
1) Assegni solo per quello che ti serve "just on time"
2) O ,come dici tu, esegui filtri quando servono assicurando il primo 
filtro, che restituisce recordset vuoto, all'apertura
 
-- 
 
ac (x=y-1)

Alessandro Cara wrote :

"una dozzina" è un modo di dire... non prenderla alla lettera.
 
Molte volte ho usato anche OnLoad:
RecordSource = stringa SQL
da commutare poi in corso d'opera con altra eventualmente 
basata/filtrata diversamente.
 
Si può anche indicare la FilterString nella proprietà Filter di Form...
 
Bruno


Raga.....Vi ringrazio...Ma
Sono più confuso di prima.......
 
Comunque Grazie, e provo ad applicare i suggerimenti.
 
Tommaso

 Comunque Grazie, e provo ad applicare i suggerimenti.
 
Segui il consiglio di Bruno.
Piu' semplice e facilmente applicabile. Se poi ci fossero problemi di 
tempi di risposta potrai provare ad applicare quello di cui discutevo 
con Bruno.
 
-- 
 
ac (x=y-1)

Penso di esserci riuscito........
 
Ho lasciato come Origine Record della maschera "frmTestateOrdini":
==================================
SELECT Numero_Ord, Data_Ordine
FROM tblTestateOrdini
WHERE (((tblTestateOrdini.Numero_Ord)=""));
==================================
La maschera si apre, mostrando un solo record vuoto, e "#Nome" non
appare.
 
Ho poi inserito in testata della maschera un campo non associato
"CampoCerca"
che dopo Aggiornamento esegue:
================================================================
Private Sub CampoCerca_AfterUpdate()
Me.Form.RecordSource = "SELECT Numero_Ord ,Data_Ordine " & vbCrLf & _
"FROM tblTestateOrdini " & vbCrLf & _
"WHERE (((tblTestateOrdini.Numero_Ord)=[Forms]![frmTestateOrdini]!
[CampoCerca]));"
Me.Form.Requery
End Sub
================================================================
 
Sembra che tutto funzioni, legge una tabella di oltre 100.000 record,
e si apre in un lampo!
Adesso devo solo perfezionare il comportamento della maschera.
 
Grazie per i consigli.
Ciao
Tommaso
 
 
 
 


Quando modifichi il recordsource la requery non serve (il sistema e' 
*obbligato* a farla ed e' una query exnovo perche' hai modificato la 
fontedati)
 
Ciao.
-- 
 
ac (x=y-1)