Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Info ACCESS 2007

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    20

    Info ACCESS 2007

    Ciao,
    sono nuovissimo del Forum e nuovo anche di Access 2007, lo sto studiando.
    Ho 2 domande forse banalissime per chi programma in Access:

    1) come posso fare per impedire che il pulsante di scorrimento record (fatto col wizard)
    e che ho messo su una maschera vada oltre l'ultimo record inserito e mi proponga i campi bianchi per un ulteriore inserimento?

    2) come faccio a far comparire l'ultimo indice inserito +1 già compilato nel suo campo id, non appena premo il pulsante "inserimento nuovo record"?


    Grazie in anticipo a chi vuole darmi una mano.


  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ciao e benvenuto.

    Per quel che riguarda la prima domanda, una volta che hai creato la maschera tramite la creazione guidata, è sufficiente che passi alla visualizzazione struttura della maschera stessa. Nella finestra in cui sono elencate tutte le proprietà della maschera devi impostare a NO la voce "consenti aggiunte". In questo modo potrai scorrere solo i record già esistenti.

    Per la seconda invece se imposti il campo id come contatore e chiave primaria access provvederà da sè.

    Ah, dimenticavo. Dai una lettura al regolamento di sezione e in futuro usa titoli più specifici per le discussioni.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    20

    ID editabile e default primo codice disponibile.

    Grazie mille nicola75ss,
    hai ragione sul titolo, la fretta. Per la prima domanda ti ringrazio come immaginavo era banalissimo.
    Per la seconda non intendo fare un contatore perchè i numeri sebbene siano per la maggior parte progressivi non sempre lo sono (devo acquisire dei codici già scritti a mano di alcuni clienti registrati di una palestra). Quello che intendo fare è che siano progressivi ma in fase di inserimento vorrei dare la possibilità di editarlo. Mi piacerebbe che comparisse di default il primo codice progressivo disponibile es:

    se esistono i codici: 1023, 1024, 1030, 1031, 1032, 1033 vorrei che di default appena apro la maschera per un nuovo inserimento mi proponga il codice: 1025, ammesso che si parta da 1000 e che fino al 1024 siano tutti progressivi.

    Devo fare una Macro? o delle righe di codice VBA? e come?

    Grazie

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Devi mantenere questi codici già esistenti o puoi "resettarli"?
    In quest'ultimo caso basterebbe fare un travaso dei record tramite una query di

    insert into select

    e avresti tutti i tuoi codici numerati in maniera progressiva.
    Non è una buona prassi quella di fare accrocchi del genere con gli id.

    edit. Per trovare il primo id libero potresti ricorrere a una semplice query e integrarla eventualmente in una funzione da richiamare nella maschera

    codice:
    select min(t.id)+1 from tabella as t 
    left join tabella as t2 ON t2.id=t.id+1
    where t2.id is null
    ma come ti dicevo è altamente sconsigliabile. In una situazione di inserimenti concorrenti non so come si comporterebbe.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    20
    Grazie Nicola,
    i codici devono essere assolutamente univoci e non sono da modificare successivamente, quindi è meglio come dici tu, mi arrangio in fase di inserimento di tutti quelli già fatti ma successivamente deve comparirmi l'ultimo codice +1 non appena inserisco un nuovo record.

    Mi basta solo lo script che al nuovo record fa comparire l'ID nuovo successivo a quelli già fatti, ma comunque modificabile.

    Grazie per la disponibilità e velocità.


  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ripensandoci meglio per individuare gli id dei record mancanti la soluzione più giusta credo sia questa.

    Ti devi creare una semplice tabella (es. tabella2) costituita da un solo campo id di tipo numerico. Questa tabella dovrà avere tutta la serie di numeri progressivi a partire da 1 fino al valore massimo del record che hai già.
    Ovviamente per non inserire tutti i numerini a mano con un semplice ciclo for esegui tutte le insert in un colpo solo.

    Con questa query

    codice:
    SELECT TOP 1 tabella2.id
    FROM tabella2 LEFT JOIN tabella1 ON tabella2.id=tabella1.codice
    WHERE tabella1.codice is null
    ORDER BY tabella2.id;
    individui qual'è il numero più basso mancante nella tua tabella vera e propria.

    La query che ti ho scritto la devi integrare in un modulo e poi, all'interno della tua maschera di inserimento, la richiami magari tramite un pulsante con un click. In questo modo sai subito che valore assegnare al nuovo record che inserirai.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    20
    Dunque...
    ho impostato "consenti aggiunte" a NO, pero' questo mi causa che il tasto aggiungi record non mi fa apparire il nuovo record in bianco da editare.

    Per quanto riguarda l'ID, ho solo bisogno di visualizzare di default sul nuovo record l'ultimo ID+1 e che sia editabile e ci sia un controllo sugli ID duplicati, ma per questo ho visto che esiste la proprietà apposita.

    Grazie mille.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.