Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aggiornamento di una maschera. HELP!!!!

95 views
Skip to first unread message

Gianni Grosso

unread,
Apr 11, 1999, 3:00:00 AM4/11/99
to
Ho una maschera relativa ad una query con un join 1 a molti ed il tipo di
record selezionato è dynaset (aggiornamenti non coerenti).
Vorrei mantenere sempre aggiornati i record nella maschera, quando ne
aggiungo o li modifico. Ho provato con una macro in cui è inserita l'azione
Riesegui Query (Requery), però ogni volta che viene fatto un aggiornamento,
mi ritrovo automaticamente sul primo record (e non su quello su cui stavo
lavorando). Come posso risolvere il problema?
GRAZIEEEE!!!!!!

Gianni Grosso

unread,
Apr 11, 1999, 3:00:00 AM4/11/99
to

Max

unread,
Apr 11, 1999, 3:00:00 AM4/11/99
to
Non so se sia un metodo molto ortodosso quello che uso io..... potresti
provare memorizzando prima del requery l'id, ad esempio il campo contatore,
in una variabile e dopo aver eseguito il requery utilizzare il metodo
findfirst per trovare il record dove eri posizionato prima.
Anche se non puoi utilizzare macro in questo caso ma devi scrivere un
piccolo pezzetto di codice...

Massimiliano

Gianni Grosso <lu...@softstudio.it> scritto nell'articolo
<7er5bf$o2i$1...@fe1.cs.interbusiness.it>...

Antonio Biso

unread,
Apr 12, 1999, 3:00:00 AM4/12/99
to
Gianni Grosso <lu...@softstudio.it> scritto nell'articolo
<7er5bf$o2i$1...@fe1.cs.interbusiness.it>...
> Ho una maschera relativa ad una query con un join 1 a molti ed il tipo di
> record selezionato è dynaset (aggiornamenti non coerenti).
> Vorrei mantenere sempre aggiornati i record nella maschera, quando ne
> aggiungo o li modifico. Ho provato con una macro in cui è inserita
l'azione
> Riesegui Query (Requery), però ogni volta che viene fatto un
aggiornamento,
> mi ritrovo automaticamente sul primo record (e non su quello su cui stavo
> lavorando). Come posso risolvere il problema?
> GRAZIEEEE!!!!!!

A parte che l'azione requery è più lenta del metodo requery, quindi è
meglio eseguire un bel Me.Requery...

Che tipo di aggiornamenti fai sui record?
Perchè a seconda di quello che fai forse non c'è bisogno di fare un
requery, ma basterebbe un recalc della maschera...

Altrimenti un modo stile quello suggerito da Max andrebbe bene...

Antonio

Lbo dall'ufficio

unread,
Apr 12, 1999, 3:00:00 AM4/12/99
to
>Non so se sia un metodo molto ortodosso quello che uso io..... potresti
>provare memorizzando prima del requery l'id, ad esempio il campo contatore,

si', in linea di massima andrebbe bene, ma se usi il la proprieta'
currentrecord prima del requery non ri serve nemmeno controllare l'id.

-----------------------------------
non studio non lavoro non guardo la tv
non vado al cinema non faccio sport
-----------------------------------

togliete NOSPAM. per rispondermi via email
remove NOSPAM. to answer me via email

-----------------------------------

il sito comune di it.comp.database.access:
http://members.xoom.com/it_db_access

Lbo dall'ufficio

unread,
Apr 12, 1999, 3:00:00 AM4/12/99
to
>aggiungo o li modifico. Ho provato con una macro in cui è inserita l'azione
>Riesegui Query (Requery), però ogni volta che viene fatto un aggiornamento,
>mi ritrovo automaticamente sul primo record (e non su quello su cui stavo
>lavorando). Come posso risolvere il problema?

solo con le macro non lo risolvi, dovrai scrivere del codice.

quando esegui un requery su una maschera o su un controllo, la
maschera o il controllo si posizionano sul primo dei loro valori.
requery funziona proprio cosi', non c'e' niente da fare.

le maschere dispongonpo di una proprieta', currentrecord. questa
proprieta' ti dice il "numero" del record correntemente selezionato
nella maschera.

quindi, *prima* di eseguire il requery salvi il currentrecord in una
variabile, esegui il requery, sai gia' che automaticamente verrai
riposizionato sul primo record e usi il valore precedentemente
immagazzinato del currentrecord per spostarti, tramite il metodo
gotorecord, alla posizione di prima. occhio che gotorecord mi pare
parta da zero, per cui dovrai sottrarre 1 dall'argomento di
gotorecord.

il codice, se eseguito dall'interno della maschera, potrebbe essere
una cosa simile:

dim posizione as long
Posizione=me.currentrecord
me.requery
docmd.gotorecord , , acgoto, posizione-1

(le due virgole indicano che non sono stati immessi due parametri
opzionali. non ricordo bene questa storia del gotorecord che parte da
0 e quindi del -1, vedi tu).

ad esempio potresti farlo eseguire in seguito al clic di un pulsante.

se proprio ci tieni ad usare le macro puoi usare un escamotaggio (ma a
questo punto non vedo a cosa ti possa servire la macro): scrivi il
codice in una funzione, crei una macro che esegua il comando
EseguiCodice e fai eseguire quella funzione. EseguiCodice funziona
solo con le funzioni, non con le sub. la funzione la dovrai mettere
in un modulo.

Karl Donaubauer

unread,
Apr 13, 1999, 3:00:00 AM4/13/99
to
Gianni Grosso schrieb:

>Ho una maschera relativa ad una query con un join 1 a molti ed il tipo di
>record selezionato è dynaset (aggiornamenti non coerenti).
>Vorrei mantenere sempre aggiornati i record nella maschera, quando ne
>aggiungo o li modifico. Ho provato con una macro in cui è inserita l'azione
>Riesegui Query (Requery), però ogni volta che viene fatto un aggiornamento,
>mi ritrovo automaticamente sul primo record (e non su quello su cui stavo
>lavorando). Come posso risolvere il problema?

Dal mio Access-FAQ:
-----
On Error GoTo BookmarkError
Dim x As Long
x = Me!ID
Me.Requery
Me.RecordsetClone.FindFirst "ID = " & x
Me.Bookmark = Me.RecordsetClone.Bookmark

Exit Sub
BookmarkError: ' not a valid bookmark
If Err = 3159 Then Resume Next
-----

Il methodo con CurrentRecord (o anche con Bookmark --> Bookmark)
non funziona se c'è un cambio nel ordine di record.

HTH
Karl
Access-FAQ http://members.eunet.at/donkarl/ (ma tedesco)
Per rispondermi rimuovere XDELETEX dall'indirizzo email.

0 new messages