Newsgroup: it.comp.appl.access
Titolo: ApplyFilter in un file .ADP

in un file .ADP ho una maschera con un controllo cornice.
su dopo aggiornamento della cornice ho questo codice:
Private Sub Cornice31_AfterUpdate()
 Select Case Me!Cornice31
    Case 1
     DoCmd.GoToRecord , , acFirst
     DoCmd.ApplyFilter False
     Me.Ricerca.Enabled = True
    Case 2
    Me.AllowAdditions = True
    DoCmd.ApplyFilter False
    DoCmd.GoToRecord , , acNewRec
    Me.Conferma.SetFocus
    Me.Ricerca.Enabled = False
    End Select
End Sub
quando vado a fare la selezione mi da questo errore:
impossibile applicare un argomento nome filtro contenuto nell'azione
applicafiltro.
se premo il Debug mi evidenzia la riga "DoCmd.ApplyFilter False"
tutto questo in un DB .mdb funzionava.
grazie
ciao

 ha scritto nel messaggio
news:WRRfb.10625$vO5.3...@twister1.libero.it...

Se la maschera si basa su una stored procedure è inutile applicare un nome
di un filtro o una clausola Where usando il metodo OpenForm dell'oggetto
DoCmd.
Inoltre i dati vengono filtrati in locale e solo dopo averli ricevuti tutti
dal server. Questo rallenta molto il funzionamento, specie se i dati della
tabella principale sono molti.
Ci sono delle alternative possibili.
Un ottimo testo su Access ed SQL è
Microsoft Access e SQL Server (guida dello sviluppatore) edito da Mondadori
Informatica.
Ciao, Carlo


[CUT]
Oltre all'ottimo consiglio di Carlo cerca sull'help la proprietą del Form
"ServerFilter (Filtro su server)"
Ciao Giorgio

 mi potete spiegare quale č il metodo migliore per lavorare con SQL SERVER
e file ADP?
maschere non associate per l'inserimento dei dati e ricerche sul server?
grazie
ciao


A mio parere no ma se devi filtrare dei record č meglio eseguire il filtro
sul lato Server
Ciao Giorgio.


scusa se insisto ma cerco di capire.
mi puoi spiegare a grandi linee come ti comporti tu?
ciao

 ha scritto nel messaggio
news:1ckhb.25173$e6.8...@twister2.libero.it...

Ciao Roberto
Per le tabelle di piccole dimensioni che hanno pochi record e pochi campi
(per esempio  le Aliquote Iva )  utilizzo il form tradizionale (impostato
graficamente come una tabella di Excel) che ha come origine record una query
memorizzata nel form stesso.
In altro caso il form è associato a una Sp che ritorna un solo record e
viene pilotata da 5 pulsanti di navigazione (graficamente simili a quelli
standard del form) . La sp in genere ha tre parametri in ingresso, il
comando da eseguire,  il valore del campo che ordina i record e l'eventuale
Id per le ricerche.
Nel form ci sono 3 controlli Text non collegati corrispondenti ai parametri
della Sp e indicati nella proprietà InputParameters. A questo punto (ad
esempio) per passare al record successivo il pulsante di navigazione assegna
al controllo relativo al parametro @MovCmd  della sp il valore "N" e esegue
la requery.
Ti posto la parte iniziale della Sp
------------------------------------------------
/*************************************************************
@MovCmd = 'F'  - First Record
         'P'  - Previous record   in base al valore di @MovCodice
         'N'  - Next Record       in base al valore di @MovCodice
         'L'  - Last Record
         'W'  - New Record
         'S'  - Seek Record       in base a  @MovIdRecord
@MovIdRecord =Identificativo passato per ricerca del record
@MovCodice =Valore del campo che ordina la tabella
*************************************************************/
CREATE      PROCEDURE usp_Clienti
(  @MovCmd varchar(1),
   @MovIdRecord int,
   @MovCodice as int,
)
AS
SET NOCOUNT ON
--Se nessun comando nuovo record
SET @MovCmd=ISNULL(@MovCmd,'W')
--Se record precedente e il codice è 0 Vado a ultimo record
IF @MovCmd='P' AND @MovCodice=0
   SET @MovCmd='L'
-- NUOVO RECORD
If @MovCmd='W'
   SELECT TOP 0 *
   FROM   Clienti
-- PRIMO RECORD
If @MovCmd='F'
   SELECT TOP 1 *
   FROM   Clienti
   ORDER BY Codice
-- PROSSIMO RECORD
If @MovCmd='N'
   SELECT TOP 1 *
   FROM   Clienti
   WHERE  Codice > @MovCodice
   ORDER BY Codice
Ecc ecc ecc.
-----------------------------------------------------------
Per le ricerche mi appoggio o a una lista sintetica (eventualmente paginata
a step di 100 record) con i campi più importanti e quando l'utente preme
doppio click sulla riga interessata passo l'id_record al form principale e
tramite il comando 'S' la Sp recupera il record interessato, oppure a un
form simile a quello utilizzato da Access per le ricerche in cui via codice
esegui la ricerca e passi l'id al form principale.
Ovviamente il tutto in linea generale senza scendere nei particolari e senza
pretendere di consigliare linee guida di programmazione.
Ciao Giorgio.