Newsgroup: it.comp.appl.access
Titolo: Aprire maschere filtrate in ADP

Ciao a tutti,
chiedo scusa in anticipo se si tratta di un argomento discusso, ma per me
questo e' un periodo infernale (penso (e spero ;-) che si sia notata la mia
assenza ultimamente)
Usando il docmd.openform son regolare criterio da usare come filtro, la
maschera che apro in un progetto adp viene aperta non filtrata. Qual e' la
procedura da usare?
Poi qualcuno sa perche' Currentdb.name non restituisce, sempre in un
progetto adp, il percorso del database (FE intendo)?
Grazie
Sib

 procedura da usare?
cut
Ho notato che se la maschera e' gia' aperta allora il comando docmd.openform
la filtra regolarmente.
Boh!
Sib

 progetto adp, il percorso del database (FE intendo)?
Ops!
scusate, ho trovato.
Dall'help AXP:
 In Microsoft Access, il metodo CurrentDb stabilisce un riferimento nascosto
alla libreria di oggetti DAO 3.6 Microsoft in un database di Microsoft
Access (mdb). Per utilizzare il metodo CurrentDb in un progetto di Access
(adp) occorre impostare un riferimento permanente alla libreria di oggetti
DAO 3.6 in Visual Basic Editor.
.
Ciao
Sib

 procedura da usare?
Se una maschera è associata a una tabella o a una query si può aprirla con
OpenForm (e mi imposta il filtro che gli passo come ServerFilter) mentre non
puoi farlo se è associata a una Stored Procedure.
Fabio

 la filtra regolarmente.
Sicuro?
Ho visto invece che qualche volta se apro una maschera filtrandola e poi
vado in struttura per modificare qualcosa rimane salvata la proprietà
ServerFilter e non riesco più da codice ad aprire quella maschera
passandogli un filtro: devo quindi tornare in struttura e cancellarlo a
manina (o "a manella" come dice il Biso)
Ciao, Fabio

 puoi farlo se è associata a una Stored Procedure.
Ho notato, ma perche' se la maschera e' gia' aperta allora viene filtrata
regolarmente?
Mi viene di risolvere metttendo due volte il comando docmd.openform.
Sib

 puoi farlo se è associata a una Stored Procedure.
Ho risolto cosi':
    DoCmd.OpenForm stDocName
    Forms(stDocName).Filter = stLinkCriteria
    Forms(stDocName).FilterOn = True
Ma ho intenzione di risolvere meglio facendo una storedprocedure parametrica
in modo da farle restituire solo il record che mi interessa (questo
migliorera' anche le prestazioni di rete).
Ciao
Sib

 Sicuro?
Sicurissimo.
e non mi succede il problema che segnalavi.
Sib

 progetto adp, il percorso del database (FE intendo)?
Con gli adp usa l'oggetto CurrentProject.
Ciao, Alessandro

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
ALTER PROCEDURE dbo.AttrezziRaggrFilt
@IDAttrezzo as int
AS SELECT      CASE
   When IdRaggr is null then idattrezzo
   when IdRaggr = 0 then idattrezzo
   else idraggr+1000000000
  end as Ident,
  CASE
   When IDTipoAtt is null then idattrezzo
   when IDTipoAtt = 0 then idattrezzo
   else IDTipoAtt+1000000000
  end as IdentTipo,
  IDAttrezzo,
  DescrizioniAttrezzi_ID, DescAtt, Modello, SerieAtt, FabbrAtt,
  Risoluzione, Posizione, Scatola, Taratura, FreqTar, IDRaggr,
  IDTipoAtt
FROM         dbo.Attrezzi
WHERE IDAttrezzo=@IDAttrezzo
Per chi fosse interessato al problema, la soluzione piu' funzionale,
soprattutto tramite rete dato che l'elaborazione avviene sul server, e'
questa.
La stored procedure parametrica consente di ottenere i dati filtrati
all'origine. Per evitare che all'apertura della maschera venga richiesto
l'inserimento manuale del parametro basta definirlo nella proprieta'
"Parametri di Input" dalla maschera cosi':
@IDAttrezzo as int = Forms![Maschera]![Controllo]
Ciao
Sib

 Con gli adp usa l'oggetto CurrentProject.
Ti ringrazio, ma come puoi leggere sopra, avevo gia' trovato.
Ciao
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:q1dp9.34113$cS4.1...@news2.tin.it...

Ok, adesso "trovami" una soluzione a quest'altro problema:
Facciamo finta che ho una maschera di ricerca dove compongo il mio bel
filtro da passare alla Stored Procedure che č all'origine della machera di
destinazione; ho visto che i parametri delle Stored Procedure possono essere
non piů lunghi di 255 caratteri (anche se li dichiaro di 1000) ma quando
faccio delle ricerche spesso oltrepasso questo limite.
Per ora ho risolto spezzettando il filtro in tre stringhe da passare ad
altrettanti parametri della SP che poi vengono concatenati al suo interno ma
il brutto č che se le 3 stringhe li metto magari in tre controlli nascosti
della maschera e poi faccio riferimento a loro funziona tutto; se invece
glieli passo da Visual Basic mi va in errore (anche se la sintassi č giusta,
tant'č che funziona quando gli passo solo una stringa "corta").
Non so se mi sono spiegato bene (adesso sono di corsa, casomai lo rispiego
meglio stasera) e non voglio che tu ci perda la vita a fare ste prove a meno
che non sia un problema che puň riguardare anche te.
Fabio