CAMPO Valido se... come scrivere una condizione

di il
22 risposte

CAMPO Valido se... come scrivere una condizione

Salve, premetto che ho cercato di trovare una soluzione nel forum... ma ho difficoltà a ricercare i termini giusti.. e non ho trovato risultati che mi potessero aiutare...

Passando al dunque..

Dovrei inserire la condizione "Valido se.." al campo con scelta multipla... in modo tale che se scelgo una targa di un veicolo già assegnata ad un altro autista, mi esca un errore-avviso, che mi dice che la targa scelta è già assegnata... e magari se fosse possibile e non troppo complesso, che in questo errore avviso mi dice anche a quale autista è gia stata assegnata...

Ringrazio chiunque possa aiutarmi e allego 2 screen, spero che rendano chiara la mia domanda...


Scusate l'inesperienza... ma mentre smanettavo.. non so cosa ho fatto... ma non mi visualizza piu la maschera m_mezzo in Viusalizza è vuota, ma in struttura c'è tutto... Cosa può essere successo?
allego il file... di access.. non si può allegare il file di access... faccio altri 2 screen...
Allegati:
32347_8c702fd00bc6d160ee4b01d8b862138d.png
32347_8c702fd00bc6d160ee4b01d8b862138d.png

32347_63e09acf9fc4ae21bf5453c240c3f397.png
32347_63e09acf9fc4ae21bf5453c240c3f397.png

32347_80eb15c5003b25c6c2504c80649f6dc2.png
32347_80eb15c5003b25c6c2504c80649f6dc2.png

32347_942dab45a2244d4d2079731964420a7c.png
32347_942dab45a2244d4d2079731964420a7c.png

22 Risposte

  • Re: CAMPO Valido se... come scrivere una condizione

    Non si usa la Validazione per quello che devi fare...
    Se la Targa, che immagino essere un campo UNIVOCO, è la BoundColumn, devi gestire l'errore della Form.
    Devi ovviamente impostare:
    SOLO IN ELENCO = SI
    CONSENTI MODIFICHE A ELENCO VALORI = NO
    MOSTRA SOLO VALORI ORIGINE RIGA = SI

    Poi gestisci l'errore che viene scatenato quando digiti cose sbagliate o dupplichi la PK(3022)

    Quì trovi l'esempio:
    https://docs.microsoft.com/en-us/office/vba/api/access.form.error
  • Re: CAMPO Valido se... come scrivere una condizione

    Intanto ti ringrazio per la risposta..

    Si la targa è campo univoco e parte tutto da li... sto cercando di capire cosa sia la BoundColumn... ma mi sembra un po troppo avanzato per me...

    e poi ora che mi è scomparso il corpo della maschera non riesco più ad andare avanti...non capisco cosa sia successo...
  • Re: CAMPO Valido se... come scrivere una condizione

    Non serve molta tecnica per capire cosa sia [Bound Column]
    Bound Column = Colonna Associata

    https://docs.microsoft.com/en-us/office/vba/api/access.combobox.boundcolumn

    Per il resto... prima si cerca di conoscere il mezzo, poi si parte.
  • Re: CAMPO Valido se... come scrivere una condizione

    Io avrei un piccolo dubbio sulla struttura tabelle. Sei sicuro che Draghici Viorel utilizza sempre il trattore EV 134 PN?
    Il campo ID meglio nominarlo IDAutista.
  • Re: CAMPO Valido se... come scrivere una condizione

    Quello che vuoi fare si fa facilmente con una lookup ma andiamo per passi, magari puoi semplicemente fare in modo che le targhe già assegnate non escano nel tuo elenco, dipende da cosa vuoi fare
  • Re: CAMPO Valido se... come scrivere una condizione

    Dopo essermi un pò impazzito sono riuscito a risolvere il problema che non mi faceva più vedere il corpo della maschera


    @Alex Ho provato a vedere la BoundColumn, ma io non so scrivere in codice, utilizzo i tool di access.. al massimo imposto qualche formula... comunque vedrò di approfondire.

    @OsvaldoLaviosa la struttura delle tabelle, qual'è il dubbio? comunque ogni autista ha assegnato un trattore e un semirimorchio, che non cambiano... cambiano se un autista si licenzia e viene sostituito da un altro, o se si vende un mezzo e si sostituisce.. quindi i mezzi e gli autisti sono piuttosto stabili come abbinamenti.
    Il campo ID si meglio nominarlo IDAutista... giusto! faccio subito...

    @muttley005 che non esce nel mio elenco preferirei di no... perchè se devo cambiare un abbinamento poi non ritrovo la targa che mi serve.. dovrei prima andare a cercare a chi è assegnata toglierla e assegnarla ad un altro...
    La mia intenzione è quella di fare solo in modo che se assegno una targa già assegnata mi esca un errore o avviso che mi dice targa già assegnata...
  • Re: CAMPO Valido se... come scrivere una condizione

    manuclele ha scritto:


    @OsvaldoLaviosa la struttura delle tabelle, qual'è il dubbio? comunque ogni autista ha assegnato un trattore e un semirimorchio, che non cambiano... cambiano se un autista si licenzia e viene sostituito da un altro, o se si vende un mezzo e si sostituisce.. quindi i mezzi e gli autisti sono piuttosto stabili come abbinamenti.
    Sul breve termine la tua struttura tabelle può andar bene. Proprio per le motivazioni che hai fornito, al lungo termine, io sarei per la struttura Autisti molti-a-molti Mezzi con tabella di congiunzione AssegnazioniMezzi (o AutistiMezzi).
  • Re: CAMPO Valido se... come scrivere una condizione

    manuclele ha scritto:


    ...
    @muttley005 che non esce nel mio elenco preferirei di no... perchè se devo cambiare un abbinamento poi non ritrovo la targa che mi serve.. dovrei prima andare a cercare a chi è assegnata toglierla e assegnarla ad un altro...
    La mia intenzione è quella di fare solo in modo che se assegno una targa già assegnata mi esca un errore o avviso che mi dice targa già assegnata...
    sto cercando di capire le tue dinamiche ... hai un parco vetture giusto? e devi assegnarle a qualcuno che può "ruotare"?
  • Re: CAMPO Valido se... come scrivere una condizione

    OsvaldoLaviosa ha scritto:


    Sul breve termine la tua struttura tabelle può andar bene. Proprio per le motivazioni che hai fornito, al lungo termine, io sarei per la struttura Autisti molti-a-molti Mezzi con tabella di congiunzione AssegnazioniMezzi (o AutistiMezzi).
    Non capisco il motivo per cui non va bene nel lungo termine? forse per tenere una sorta di archivio?... non so... ora la struttura delle relazioni è composta cosi...
    Credi che sarebbe meglio mettere una tabella in piu per relazionare mezzi e autisti?
    Allegati:
    32347_ec6f0f9a0910d526f7b223c5e516bf28.png
    32347_ec6f0f9a0910d526f7b223c5e516bf28.png
  • Re: CAMPO Valido se... come scrivere una condizione

    muttley005 ha scritto:



    sto cercando di capire le tue dinamiche ... hai un parco vetture giusto? e devi assegnarle a qualcuno che può "ruotare"?
    No ho dei camion e semirimorchio.. ma non ruotano con gli autisti... sono piuttosto stabili... ma questo mi serve per tenere in ordine le varie scadenze che vanno effettuati sui mezzi abbinati fra loro e con gli autisti...

    in modo da vere chiara la situazione, prenotare i vari controlli che vanno a scadenza... assegnare all'autista interessato di andare a fare quello che c'è da fare...

    Comunque sono arrivato ad un buon risultato.. per quello che mi serve... solo che non riesco a farmi avvisare se assegno una targa gia assegnata ...

    Ora ho messo solo un po di dati di prova... e vorrei ampliarla mettendo i vari documenti dei mezzi archiviati ognuno il suo.. ma un po per volta...
    Allegati:
    32347_767a03562d010f134614ccf1eff7b331.png
    32347_767a03562d010f134614ccf1eff7b331.png

    32347_681f215be06c72e49b47ab0bb922cfc3.png
    32347_681f215be06c72e49b47ab0bb922cfc3.png
  • Re: CAMPO Valido se... come scrivere una condizione

    Ciao.

    Quello che vuoi fare necessita di competenze tecniche che al momento non possiedi, quindi a mio avviso, non è il momento di seguire questa strada.

    Da quello che vedo e dal fatto che ti occorre comunque avere sempre sott'occhio se un mezzo è stato assegnato ti propongo un'altra soluzione, che non è come la vorresti fare tu, ma che al momento ti potrebbe ritornare utile, fino a quando non avrai le competenze e le conoscenze per fare quello che desideri.

    Andremo a sfruttare la proprietà column della casella combinata.

    Non so se lo sai, ma le caselle combinate oltre alle righe, possono visualizzare più colonne al loro interno, praticamente tutte le voci che richiami tramite la query collegata ad essa per recuperare i dati. In questo caso le targhe e gli autisti.

    Con la modifica che ti propongo, potrai vedere in tempo reale nella lista della combo box, la targa ed il relativo autista al quale è stata assegnata.
    Ti basterà fare attenzione di selezionare quelle giuste.

    Ora non so come hai strutturato il tuo database e come sono collegate le tabelle, quindi quello che ti dirò, potrebbe essere immediatamente fattibile, oppure potresti dover modificare qualche relazione, oppure aggiungere qualche tabella di collegamento alle query.
    Ti ricordo che nella pagina delle query, puoi creare nuove relazioni, indipendentemente da quelle che hai creato nella pagina generale del database. Quindi, se hai bisogno di recuperare dati presenti in due tabelle diverse non collegate direttamente tra di loro, sfruttando elementi univoci che sono comuni alle due tabelle non collegate a livello di collegamenti master, puoi tranquillamente creare tutte le relazioni che desideri, direttamente creando la relazione nella query, che rimarrà ad esclusivo uso di quella query e non avrà effetto sulle relazioni generali.
    Veniamo alla soluzione che ti propongo.
    Se ad esempio, nella query della combo box che usi per selezionare le targhe, modifichi la query aggiungendo la tabella degli autisti, ricaverai entrambi i dati, che poi potrai visualizzare all'interno della combo box.
    Naturalmente è solo un effetto visivo. I dati che salverai saranno solo quelli che salvi attualmente.
    Per fare questo devi.

    Modificare la query per avere i dati che ti interessano.

    Modificare le proprietà della combo box:

    vai sulla sezione

    "FORMATO"

    "NUMERO COLONNE" 5 (o superiore o inferiore, poi quando hai capito come funziona metti il numero giusto. Sono le colonne che vuoi visualizzare e quelle senza valore saranno vuote)

    "LARGHEZZA COLONNE". Indichi la larghezza delle colonne. Per ogni colonna puoi decidere la larghezza espressa in cm. Ogni valore dovrà essere separato da un punto e virgola. Quindi se hai 5 colonne avrai una cosa simile a questa 3;3;3;3;3
    Se non inserisci nessun valore, la colonna avrà una larghezza pari alla larghezza dell'intestazione.
    Cosa particolare. Se ad esempio, hai bisogno di recuperare dei dati che però non vuoi visualizzare nella combo box, ti basterà impostare la larghezza di quella relativa colonna con il valore 0. Quindi se vuoi nascondere la seconda colonna ti basterà scrivere 3;0;3;3;3. Il dato nella seconda colonna verrà comunque caricato dal sistema, potrai utilizzarlo come meglio desideri, ma non sarà visibile nella lista della combo box.
    Ricorda che la numerazione logica delle colonne non parte da 1, ma dal valore 0. Quindi se hai 5 colonne, la prima colonna avrà il valore index 0, la seconda colonna il valore index 1 e la quinta il valore index 4.

    INTESTAZIONE COLONNE : Si.

    In teoria sulla sezione DATI alla proprietà COLONNA ASSOCIATA, non dovresti modificare niente. Lo dovrai fare solo se nella relativa colonna vedi dati non coerenti con l'intestazione. In quel caso fai delle prove cambiando colonna, fino a quando non becchi la colonna giusta. (i consigli quelli professionali )

    Fatto ciò, ti sposti nella sezione EVENTO della combo box, e SU CLIC crei una macro con il semplice comando aggiorna.
    Questo ti permette di aggiornare i valori all'interno di tutti gli oggetti della form, comprese le combo box. Altrimenti se immetti più di un record contemporaneamente, continueresti a vedere solo i valori che sono stati caricati al momento dell'apertura della form e continueresti a vedere le disponibili le targhe che hai già assegnato nei record precedenti.
    Ho messo SU CLIC il comando aggiorna per fare un esempio veloce, ma potrebbe essere necessario metterlo su altri eventi (come dopo aggiornamento o altro. Dipende quando vuoi che il dato sia aggiornato).

    In questo modo, con le opportune modifiche alle query, puoi aggiornare tutte le combo che vuoi.

    Sicuramente avrò sbagliato qualcosa nella stesura della spiegazione. Ma a grandi linee ho espresso il concetto.

    Avrai una cosa simile a questa.
    Io ho mantenuto la visualizzazione a maschera. Ma se ti è più comodo puoi utilizzare la visualizzazione a tabella.

    targa/autisti
    targa/autisti


    autisti/targa
    autisti/targa

    Ma la vera potenza delle colonne non è questa.
    Una volta che tu hai creato una query con tutti i dati che vuoi recuperare ed averli assegnati alle relative colonne, ti basterà creare delle text box non assegnate e mettere nel testo della text box =(column(numero della colonna)) per far in modo che il valore della casella di testo visualizzi il dato relativo alla colonna che hai indicato, in base alla selezione della combo box.
    In questo modo, quindi, se vuoi creare una tabella di manutenzione, in quella tabella ti basterà salvare solo il numero id della targa e poi potrai creare un report di manutenzione tecnica, selezionando la targa dalla combo box, potrai mettere nel report, tutto quello che vuoi. Tipo. La data, il nome dell'officina meccanica, il tipo di intervento, il nome di dell'autista, il mezzo, i dati di fatturazione. Praticamente tutto quello che ti occorre semplicemente selezionando la targa dalla combo box relativa e tutto con una semplice query di selezione dove vai a recuperare i dati nelle relative tabelle, ma salvando solo la targa nella relativa tabella manutenzione.
    Naturalmente per fare ciò, devi avere le relative relazioni tra le tabelle.
  • Re: CAMPO Valido se... come scrivere una condizione

    Ti ringrazio tantissimo per la corposa spiegazione dalla quale ho imparato cose nuove che mi sono e mi saranno utili...
    ma non sono riuscito a creare questa combo box dove mi visualizza le targhe e gli autisti gia assegnati... ho fatto un sacco di prove ma c'è qualcosa che mi sfugge.. e non capisco cosa...

    vabè per ora vado avanti con il mio progetto.. poi magari mi verrà l'illuminazione mentre imparo cose nuove... intanto graze ancora!!!
  • Re: CAMPO Valido se... come scrivere una condizione

    fratac ha scritto:


    Ciao.

    Quello che vuoi fare necessita di competenze tecniche che al momento non possiedi, quindi a mio avviso, non è il momento di seguire questa strada.

    Da quello che vedo e dal fatto che ti occorre comunque avere sempre sott'occhio se un mezzo è stato assegnato ti propongo un'altra soluzione, che non è come la vorresti fare tu, ma che al momento ti potrebbe ritornare utile, fino a quando non avrai..........
    Ho provato ancora e sono giunto ad un "quasi risultato"

    sono riuscito a fare la casella combinata con targhe ed autisti... ma mi escono solo gli ID degli autisti e non riesco a far uscire il nome degli autisti... qualche consiglio??
    Allegati:
    32347_c644da02baded34a37a38f4c41c14fd9.png
    32347_c644da02baded34a37a38f4c41c14fd9.png

    32347_d52ec744744d0c7773dbcb45f095922e.png
    32347_d52ec744744d0c7773dbcb45f095922e.png
  • Re: CAMPO Valido se... come scrivere una condizione

    Non ti offendere ma non è un corso ... è un forum
    Servono un minimo di basi, quello che chiedi è sottosoglia
Devi accedere o registrarti per scrivere nel forum
22 risposte