AZIONE InviaTasti

di il
6 risposte

AZIONE InviaTasti

Ben ritrovati a tutti, mi trovo a disturbarvi nuovamente per questo problema:

in una maschera ho un campo memo "Descrizione Guasto" sul quale devo inserire, di volta in volta, la descrizione di un'anomalia dei macchinari che utilizzano in ditta.

Ora il problema sta nel fatto che, avendo ogni macchinario un codice identificativo complicato e lungo, io ho creato la seguente macro, con più azioni simili, dove cambia solo il CODICE del macchinario:

VaiAControllo "Descrizione Guasto" e l'azione successiva InviaTasti e alla voce sequenza tasti inserisco il codice della macchina (ES. 1Q2W3E4R5T).

Il problema che trovo è che ogni volta che io pigio la macro, questa mi cancella quanto già scritto nel campo memo e mi riporta solo il codice del Macchinario che ho preimpostato.

Ho quindi provato ad anteporre, in SequenzaTasti, la stringa {END} prima del codice 1Q2W3E4R5T.

Bene, mi cancella lo stesso il contenuto, riportanto il testo della prima macro 1Q2W3E4R5T e quella dell'ultima 0oi9i8u7y6t.

Come posso dire ad Access di andare all'ultima parola inserita nel campo memo ed aggiungere, solo in questo posto, uno dei codici che ho preimpostato in macro?

Altra questione, Access 2010, che ho in ufficio, non mi riporta il comando Invia Tasti, e quando apro la struttura della macro che ho creato in un altro PC mi segnala il comando InviaTasti come un errore.

Spero abbiate la pazienza di cercare di capire la problematica esposta e riusciate ad aiutarmi

grazie a presto

6 Risposte

  • Re: AZIONE InviaTasti

    Sei sicuro che gestire una cosa del genere, valga la pena usare InviaTasti? Confesso che non l'ho mai usata, non la conosco. Ho dato un'occhiata sulla guida in linea e non ci ho capito quasi nulla. Se non c'è un esempio concreto, non ci arrivo.
    Almeno per me, se esponessi l'intero problema passo passo, forse sarebbe meglio usare un'altra strategia.
    Non capisco un campo Memo dove lì ci scrivi tutto insieme.
  • Re: AZIONE InviaTasti

    danko71 ha scritto:


    Come posso dire ad Access di andare all'ultima parola inserita nel campo memo ed aggiungere, solo in questo posto, uno dei codici che ho preimpostato in macro?
    Ciao danko, non so se ho capito bene il problema. Tu vorresti aggiungere alla fine di un testo scritto in un campo memo un codice errore. L'azione "InviaTasti", se non vado errato, è in pratica quello che faresti tu digitando i tasti sulla tastiera ed per questo che ti sostituisce tutto il testo. Secondo me dovresti fare una concatenazione di testo, ovvero di stringhe. Prima acquisisci il contenuto della casella di testo, poi ci concateni il codice preimpostato, che verrà aggiunto in fondo, ed infine reimposti il contenuto della casella di testo.
  • Re: AZIONE InviaTasti

    Vi ringrazio per le risposte...

    Mikelemm la procedure che mi suggerisci me la puoi descrivere con i comandi?

    non sono molto pratico quindi mi scuso...

    grazie mille ancora
  • Re: AZIONE InviaTasti

    Cerco di essere più chiaro:

    ho una decina di macchinari ognuno dei quali è individuabile con un codice seriale di 15 numeri/lettere (es. QAH123HGT009IGZ).

    In questo caso la maschera che ho creato serve per segnalare le varie anomalie che si riscontrano sui macchinari, quindi l'utente, dopo aver inserito data ora ecc, arriverà sul campo memo "Descrizione Anomalie" dove inserirà la descrizione dell'anomalia, che spesso riguarda più macchinari contestualmente. Per evitare che l'utenze debba digitare ogni volta uno o più seriali dei macchinari, col rischio di sbagliare un dato, ho creato una macro "Inserisci Seriali", contenente i seguenti comandi:

    Nome Macro: Fresa1 - Azione: VaiAControllo - Argomenti: Descrizione Anomalia
    Azione: InviaTasti - Argomenti: QAH123HGT009IGZ
    Nome Macro: Fresa2 - Azione: VaiAControllo - Argomenti: Descrizione Anomalia
    Azione: InviaTasti - Argomenti: QAH158HGT008IGH
    Nome Macro: Tornio1 - Azione: VaiAControllo - Argomenti: Descrizione Anomalia
    Azione: InviaTasti - Argomenti: TGE100MML019TTU

    ecc ecc
    Questa macro mi permette di inserire, mediante appositi tasti, i codici seriali delle macchine, il problema però, come già detto, è che , azionando la macro, tutto quello che è stato scritto sul campo memo, viene cancellato e viene riportata solo la stringa, che andrebbe alla fine della descrizione evento, spesso andrebbero inseriti più seriali sulla stessa descrizione anomalia.

    Ho provato a inserire {END} sulla sequenza tasti, ma la macro mi fa inserire il primo e l'ultimo seriale presenti nella macro stessa.

    Ora il suggerimento di copiare il testo già presente ed incollare insieme il codice seriale mi sembra una buona soluzione... ecco appunto, come faccio? e' fattibile con comandi macro o devo usare VBA che io non conosco?

    scusatemi ma sono neofita

    grazie ancora
  • Re: AZIONE InviaTasti

    Io non ci ho capito nulla. Se gradisci il mio aiuto, preferisco una descrizione così:
    - tutti i nomi propri di tabelle
    - tutti i nomi propri dei campi di ogni tabella, indicando la chiave primaria
    - le relazioni
    - nomi propri di maschere
    - descrivi PASSO PASSO il tuo problema, eventualmente fai qualche esempio pratico descrivendo esattamente cosa si legge nel tuo campo Memo.
  • Re: AZIONE InviaTasti

    Ciao danko, la mia soluzione è un artifizio per mettere una pezza e riuscire a fare quello che vuoi senza fare grosse modifiche strutturali al tuo Database. Però, anche dalla descrizione che dai e da come ha sviluppato le procedure, devo osservare che il sistema che hai messo su per fare l'aggiunta di testo in un campo memo non è molto corretto, andrebbe affrontato in altro modo, analizzando bene tutti i particolari del tuo Database, come suggerisce Osvaldo chiedendoti altre informazioni.

    Però non ho capito una cosa, hai più macro e cioè: Fresa1, Fresa2 e Tornio1, ecc.. . Come fai a scegliere il macchinario?

    Comunque la mia soluzione è questa: al posto delle azioni che hai scritto, riscrivi le tue macro inserendo un'azione "ImpostaVarTemp" e nel campo "Nome" inserisci il nome della variabile (es.: testo) mentre nel campo "Espressione" ci scrivi il riferimento al tuo campo memo (es: [Maschere]![TuaMaschera]![TuoCampoMemo]). Dopo di ciò, inserisci un azione "ImpostaValore" e nel campo "Elemento" ci scrivi di nuovo il riferimento al tuo campo memo mentre nel campo "Espressione" ci scrivi la variabile creata sopra concatenata al codice seriale (es.: TempVars!testo & " ABCDE12345" ed il gioco è fatto.

    Prova e vedi se funziona. Visto che hai una macro per ogni macchinario dovrebbe funzionare.
Devi accedere o registrarti per scrivere nel forum
6 risposte