Newsgroup: it.comp.appl.access
Titolo: Come posso simulare via software la pressione di un tasto della tastiera?

Ho il seguente problema
vorrei creare una funzione che simuli vi a software l'inserimento di
un tasto (cursore giù per essere precisi)
Come posso farlo(in VB)?
Questo mi serve perchè voglio selezionare la prima voce di una casella
di riepilogo (usa access 2000) ma la proprietà Selected non funziona
bene e mi blocca la maschera (vai te a capire il perchè...)
Ciao, Max

MarcoMax dice:

per simulare la pressione di tasti da codice puoi usare sendkeys,
ma perche' vuoi prendere le scale quando esiste l'ascensore?
prova con:
Me.MiaCasellaDiRiepilogo=Me.MiaCasellaDiRiepilogo.ItemData(0)
vedrai che ti imposta sulla prima voce dell'elenco
Ciao, Sib

 Ciao, Max

 bene e mi blocca la maschera (vai te a capire il perchè...)
Piuttosto sei sicuro di aver manipolato bene la proprietà selected? Come e
dove l'hai usata? In quale evento, dello stesso controllo o di un tasto di
commando per esempio? Ecc...
Ciao
Thierry

Me.MiaCasellaDiRiepilogo=Me.MiaCasellaDiRiepilogo.ItemData(0)
mitico! funziona alla grande! :-)
grassie!
ciao, Max

Prova a guardardi l'help dell afunzione SendKeys
grassie :)

commando per esempio? Ecc...
nella casella di riepilogo ho il risultato di una query no parametri
dinamici (c'è un like che ha come argomento il valore di un controllo
della maschera) quando cambio il valore del controllo cambia il
risultato della query, quindi sull'evendo dopoaggiornamento del
controllo che cambia faccio il requery della casella di riepilogo e
tento di impostare la selezione della prima riga della casella di
riepilogo facendo  CasellaRiepilogo.selected(1)=True
Se faccio questo succede che si inchioda la maschera, non posso più
cambiare controllo.... non va più nulla....
A me non sembra di fare cose spaziali, ma tutte le volte che ho
provato ad usare selected non ci sono riuscito per problemi di
inchiodaggi/bloccaggi non comprensibili dell'interfaccia di access.
Dici che sbaglio qualcosa?
tanto per capirsi, in quella casella di riepilogo ci deve essere
sempre una riga selezionata, in quanto sul valore della colonna
associata della casella di riepilogo è basato il risultato di altre
query.... e se cambia il contenuto della casella di riepilogo e
nessuna linea è selezionata il contenuto delle altre query NON viene
aggiornato, ma resta quello vecchi che riguardava altri dati...e
questo non deve succedere :-)
Ciao, Max

 questo non deve succedere :-)
Non ho verificato, ma nell'help della proprietà Selected nel paragrafo
Osservazioni ho trovato questo:
"Una casella di riepilogo di selezione multipla associata a un campo avrà
sempre una proprietà Value uguale a Null."
Forse non centra niente ma prima dovresti continuare a fare altre verifiche,
o dare altri dettagli perché qui è il tipico caso intricato di tabelle,
scommetto associate, di controlli con le loro query e i loro requery dove le
informazioni passano da un controllo all'altro. Adesso non è che abbia tutta
questa esperienza, ma quello che mi viene in mente è: OH DIO!! NON E'
POSSIBILE!!! Lasciare Access fare il lavoro di aggiornamenti multipli
automatici come se fossero delle tabelle Excel, per quel che ne sò, l'unico
risultato è di perdere un sacco di tempo e di essere minacciato
continuamente da eventuali "fantasie" di Access! E' questo genere di
situazione che mi ha dato il corraggio di lanciarmi nel VB totalmente!
Niente va più sotto il controllo di Access con le sue macroine, tabelle
associatine, aggiornamentini automatichini, ecc...
Tutto passa da VB e per il suo codice! Così scandisci tu, i tempi e le
sincronizzazioni di aggiornamenti, detti tu cosa va, come, quando, dove.
Ogni passo lo leggi tu . E quando il codice si pianta, lo vedi bene grazie
al debug e a vari trucchetti!
Comunque se vuoi, ancora per adesso, continuare in questo modo, dovresti
verificare l'"Ordine di Spostamento" nelle proprietà dei controlli, perché,
senza voler dire idiozie, mi sa che Access segue questo senso per
aggiornamenti automatici, e comunque in qualche modo deve poter seguire una
logica nell'ordine degli aggiornamenti.
Poi c'è il problema della selezione multipla, da considerare come detto a
l'inizio.
Infine quando imposti Selected(1)=true, dove lo fai? Nell'evento
dopoaggiornamento del controllo appena aggiornato?
Anche lì, non vorrei dire idiozie, ma imporre valori così "delicati" da un
controllo a l'altro senza dare il controllo al secondo, qualche volta dà dei
problemi! Magari negli eventi metti dei DoCmd.GoToControl. In genere
garantisce il buon funzionamento dei commandi che vanno a influenzare altri
controlli da dove viene eseguito il codice.
Ciao
Thierry