Newsgroup: it.comp.appl.access
Titolo: [Access2000] GoToControl

Salve a tutto il NG.
Vorrei sapere come, in caso di errore nella casella di testo di una form,
far tornare il cursore in automatico nella stessa casella.
Ho provato con Docmd.GotoControl "NomeMiaCasella"   ma non funziona.......e
non riesco a capire perchč........
qualcuno ha un'idea???
Grazie ancora
Ultra

 Ultra
Suppongo che "in caso di errore" significhi che è stato inserito un dato
che, sottoposto a certi controlli, risulti non valido.
Allora scrivi nel'evento "Prima di aggiornare" della casella il codice che
fa i controlli, e se il dato viene ritenuto non valido imposti
"Cancel=True".
Così, se modifichi la casella, il cursore non potrà uscire finchè non
verrà immesso un dato valido.
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao Namor,
Grazie per il tuo aiuto....ma a me continua ancora a non funzionare....ti
posto il mio codice:
Set Dbs = DBEngine.Workspaces(0).OpenDatabase(strPercorso)  'Apriamo il Db'
   Set TbDati = Dbs.OpenRecordset("Offerta", dbOpenTable)
   TbDati.Index = "NumeroOfferta"
   TbDati.Seek "=", Trim(Me.NumeroOfferta)
   If TbDati.NoMatch = True Then
      Exit Sub
    ElseIf UCase(Trim(TbDati!Esercizio)) = Null Or
UCase(Forms!Offerte01!Esercizio) Then
    MsgBox "Il numero Offerta immesso è già esistente!!"
    Cancel = True
    End If
    TbDati.Close
    Dbs.Close
    Set TbDati = Nothing
    Set Dbs = Nothing
End Sub
Ho sbagliato qualcosa io??
Grazie
Ultra

ultrareflex ha scritto:




Allora "in caso di errore" significa "se il NumeroOfferta è già presente
nell'altra tabella". Ok.
In questa sub c'è un errore, e diversi particolari che si potrebbero
migliorare:
Questo è l'errore:
ElseIf UCase(Trim(TbDati!Esercizio)) = Null Or
UCase(Forms!Offerte01!Esercizio) Then
Se ne era parlato un mesetto fa, non puoi usare un if così:
  If variabile = valore1 Or valore2
ma devi per forza ripetere il primo termine di confronto:
  If variabile = valore1 Or variabile = valore2
I miglioramenti sono:
- L'Ucase non ti serve quando confronti la stringa con il Null
- L'Ucase non ti serve per confrontare due stringhe se usi "Option Compare
Database"
- E' meglio non usare gli exit sub se non nella gestione degli errori. In
questo caso quando non trovi il valore cercato (nomatch=True) la sub esce
senza chiudere TbDati e Dbs. Sistemando meglio l'If puoi evitare di usare
l'exit sub.
Però non ho capito se la tabella "Offerta" su cui vai a fare il controllo
è contenuta nello stesso db o in un altro.
Se è nello stesso db non ti serve l'oggetto Dbs, basta fare "Set TbDati =
currentdb.OpenRecordset("Offerta")".
Se è in un altro db, ti conviene usare una tabella collegata e lavorare in
locale come già detto nella riga sopra.


 ha scritto nel messaggio
news:bno951$te1$1...@news.newsland.it...

Ciao Namor,
Grazie per i tuoi consigli, nel frattempo posso dirti che il db dove sto
lavorando è un BE e le tabelle per forza di cose sono nell'FE che è in rete,
ecco perchè uso Dbs.
Forse per questi errori che si sono creati, avvolte quando apro la form
offerte in alto a sinistra mi compare un divieto e non mi permette di
modificare i dati nella maschera stessa....ma questo non accade con tutti i
record solo con alcuni........non ci capisco più nulla!!!!
Grazie ancora
Ultra

ultrareflex ha scritto:
[cut]



Casomai lavori su FE e i dati sono nel BE...
Ma su FE, per poter lavorare sui dati, hai le tabelle collegate al BE, no?
E allora non serve che usi una variabile database (Dbs) per andarti ad
aprire il BE, basta che operi sulle tabelle collegate del FE e ci pensa
Access ad aggiornare in automatico il BE.
Il simbolo di divieto è dovuto al fatto che un altro utente sta
modificando un record, e Access blocca tutta una pagina di record (2Kb).
Guarda "Blocco record" nelle proprietà della maschera e prova a leggere
quel che dice l'help.


 ha scritto nel messaggio
news:bnop67$853$1...@news.newsland.it...

Ciao Namor,
si hai ragione ho confuso scrivendo l'FE con il Be....
Comunque quella del divieto è carina, visto che solo io uso ancora questo
database..... ehehehehehhehe
comunque guarderò nell'help per vedere un attimo la situazione :)
Grazie ancora
Ultra
P.s. Ho provato ad utilizzare la tabella del mio FE ma non me lo
permette........

 > > Ciao Namor,



Se lo usi solo tu e ti blocca i record vuol dire che su quella tabella c'è
un'altra maschera aperta o un recordset aperto da codice e non terminato
correttamante, che stanno scrivendo su qualche record di quella tabella.
Prova ad aprire a mano la tabella del FE collegata al BE. Se riesci a fare
modifiche a mano vuol dire che è il codice vba che non funziona. Se non
riesci nemmeno a mano a modificare o aggiungere i dati devi assicurarti di
avere tutti i permessi per scrivere sul file, sia a livello si sistema
operativo che a livello di protezione utente di Access.


 ha scritto nel messaggio
news:bnqh2l$o22$1...@news.newsland.it...

Ciao Namor,
Ho controllato ciò che mi hai detto e se apro la tabella che è collegata al
BE posso fare delle modifiche....ma il codice nella form onestamente non ha
recordset aperti........
E poi non lo fa su tutti i record....solo su alcuni....ma la form Offerte e
la subform DettaglioOfferte è sempre la stessa......
vorrei poterci capire un po' di più visto che sto per consegnare il tutto al
cliente ma onestamente non mi piace che gli dia questo errore........
Grazie ancora
Ultra

 Ultra
Hai la proprietà "Blocco record" della maschera impostata a "Record
modificati". Devi averla cambiata tu, perchè il default per le nuove
maschere è "Nessun blocco".
E se ti dà il segno di divieto di modifica su alcuni record deve per forza
esserci qualcosa che non va da qualche parte, qualcosa che tiene aperto un
record in modifica. Comunque se rimetti il "Blocco record" su "Nessun
blocco" non ti comparirà più il divieto, sebbene ovviamente sarebbe
preferibile scovare e sistemare l'errore. Alla peggio, se due utenti
cercano di modificare contemporaneamente un record appartenente ad una
stessa pagina, al secondo che salva il record verrà mostrato un avviso che
dice che il valore del record è cambiato mentre lui lo editava, e chiede
cosa fare.


 ha scritto nel messaggio
news:bnqti9$leq$1...@news.newsland.it...

Ciao Namor,
Sai quale è il problema? E' che quando apro il databse ed apro la maschera
offerte (ti ricordo che solo io lo uso al momento per fare delle prove)
nella form principale non c'è quel simbolo di divieto, quando clicchi su
qualcosa ti appare subito...ma ripeto solo per qualche record non per
tutti......(è quì che mi puzza!!) se fosse stato un errore generico nella
form o subform, il problema lo avrei avuto su ogni record non solo su
qualcuno...comunque ho controllato il tutto e onestamente non vedo problemi
in giro. Il blocco record l'ho messo io, visto che questo database sarà
utilizzato in multiutenza, l'ho reputato adatto per evitare ritardi o
blocchi nel sistema........
Se non riesco a trovare il problema, finisce che faccio ciò che mi consigli
anche se non è proprio la cosa migliore.......
Grazie ancora
Ultra

 ha scritto nel messaggio
news:iF8ob.68522$e5.24...@news1.tin.it...

Scusa Namor, dimenticavo una cosa....
Adesso ho fatto la prova aprendo un altro Fe da un'altra postazione e
entrando nello stesso record, ho notato che non blocca me che sono entrato
per secondo, ma blocca quello che è entrato per primo.....(strana questa
cosa). Non solo gli blocca quel record, ma molti record anche se non sono
aperti da me.... Quindi c'è qualcosa che non va....
Poi controllando il codice, a me sembra che non ci siano errori. La mia
maschera è strutturata a pagine, nella prima trovi i dati che vengono da una
query ed utilizza la tabella cliente e quella offerte, lì ho messo come
blocco record, quelli modificati.
Poi nella sub form DettaglioOrdini, anche lì ho messo blocco record, quelli
modificati...forse doveva esserlo solo ma form principale? La cosa strana
che ho notato che mi blocca solo i record della form principale, se io vado
nella sub form mi fa inserire dati tranquillamente (cosa che non dovrebbe
accadere non trovi?). Poi tornando nella prima pagina dove ho la form
principale, il divieto scompare e posso inserire tranquillamente i
dati......
Misteri!!
Comunque non ho recordset aperti, questa form la uso come interfaccia con la
query quindi non c'è codice alle sue spalle.....sulla subform ho del codice,
ma quella non è bloccata......
Grazie ancora per il tuo aiuto
Ultra

 Ultra
Non avendo il db sottomano non saprei dirti di più, devi cercare di capire
tu cosa sta succedendo. Magari fai un semplice db di prova con una sola
tabella e una form per testare il funzionamento dei vari tipi di bloccho
record: imposti il blocco record, apri la form su due PC (o anche con due
istanze di access sullo stesso PC), su uno tenti di modificare un record e
guardi cosa succede sull'altro.
Ciao.


 [cut]

Ciao Namor,
Forse ho capito dove sta l'inghippo anche se mi risulta assai strano......
Come ti ho già detto ho una maschera con sottomaschera divisa su più pagine.
Mi spiego meglio: La mia maschera principale è quella Offerte (origine
record da query Clienti-Offerte) che sta nella pagina numero 1.
Nella pagina numero 2 ho la subform dettaglio ordini (origine record da
query DettaglioOfferte-Prodotto). Quando apro la form principale, la
sottomaschera rimane aperta sul primo record......non mi passa ad uno
nuovo....e non vorrei che per questo motivo il recordset mi rimane aperto.
Tu che ne pensi? Potrebbe essere?
Poi ho controllato il famoso blocco a livello di record e anche li c'è la
spunta, quindi attivo....però se apro un altro db, oltre a bloccare il
record che sto usando, blocca anche gli altri vicini......
Ho spulciato tutto il db, ma non vedo errori....e non riesco a capire che
stia accadendo.
Ho letto però nell'help per quanto riguarda il blocco a livello di record
che funziona solo se il db viene aperto da file di access e non con altri
modi (ad esempio dall'elenco in basso alla finestra file) altrimenti prende
quelle di default.
Possibile che non ci sia un modo per bloccare il record della form e sub
form che un altro utente sta utilizzando senza bloccare tutti i record??
Immagina quanti operatori potrebbero modificare contemporaneamente può
offerte oppure ordini .....se gli e li blocchi tutti...questi che fanno?? Si
grattano??? eheheheheheheh
Ciao a presto
Ultra

 Ultra
In teoria con il blocco a livello di record. Non so per quale motivo a te
funziona male.
Se usi i blocchi record dovresti prevedere un timeout, in modo che se uno
apre un record in modifica e poi va a casa a pranzo non blocchi gli altri
utenti per 2-3 ore.
Namor
-- 
Aiuta chi ne ha bisogno, non ti costa niente:
http://www.shopmon.it/
