Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [ACCESS 2003] Query per id incrementale

    Ciao raga,
    come faccio in query creazione tabella a crearmi un id incrementale della tabella ?

    10ks





    .

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    In visualizzazione struttura definisci il campo di tipo contatore e gli assegni la chiave primaria facendo click col tasto destro in corrispondenza di quella riga.

  3. #3
    Intendi dire impostare la tabella ?
    cioè apro la tabella esistente in struttura e mi creo un campo contatore ?

    se è quello che intendi non volevo questo,
    vorrei creare tramite una query di creazione tabella un'altra tabella generando un contatore (ID Incrementale ) della tabella creata.






    .

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Una volta salvata la tabella se aggiungi il campo contatore non ottieni il risultato desiderato?

  5. #5
    Si, però io non volevo modificarla manualemente una volta creata.

    ho trovato questo codice in rete, in pratica è una subquery
    codice:
    Count: (Select Count (*) FROM [tabella] as tb1 WHERE [tb1].[ID] < [tabella].[ID])+1
    con query di selezione funge, ma se imposto una query di creazione continua a macinare senza risultato ??



    .

  6. #6

    Assurdo

    Certo che è assurdo che non esista ad oggi una funzione di numerazione progressiva in tutto l'SQL di Access.

    Così come molte altre faccende: non ci lavoravo in maniera intensiva dal lontano '98 (realizzai un sistema di archiviazione documenti e immagini per l'Archivio Storico Telecom Italia) e sono scandalizzato dalla permanenza di certe difficoltà.
    Non toccare, non funzionerà più
    niente.

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    Re: Assurdo

    Originariamente inviato da loosigoosi
    .....
    e sono scandalizzato dalla permanenza di certe difficoltà.
    Se ci dici nel dettaglio cosa non riesci a numerare magari
    possiamo spiegarti come si fà


    Pero apri un'altra domanda,
    Ti sei accodato a qualcosa dell' ottobre 2010 !!!!
    .

  8. #8
    Supponi di voler creare, in SQL puro, una query - una - che restituisca in una colonna un numero progressivo generato come espressione:

    1 ... ...
    2 ... ...
    3 ... ...
    4 ... ...
    ... ... ...

    Se la tabella sottostante non contiene un campo contatore NON si riesce a fare nulla.

    Certo, se lo contiene è abbastanza facile, le soluzioni si trovano su diversi siti di FAQ, e in sostanza si calcola il numero da una sottoquery che seleziona tutti i record con ID contatore inferiore a quello di riga corrente, li conta e sommando uno attribuisce il progressivo.
    Questo metodo ha comunque un sacco di limiti, occorre che non ci siano ordinamenti particolari altrimenti la faccenda si complica.
    Ho fatto diverse ricerche, non ci sono soluzioni migliori di questa, che è anche riportata in questo thread.

    Se invece non lo contiene (o non si può modificare in tal senso per ragioni contingenti) non c'è nulla da fare, se non creare una tabella con contatore, per uso temporaneo, in cui inserire i dati con una query di accodamento e poi eseguirne un'altra che abbia come tabella sottostante la tabella temporanea e ne derivi il progressivo. Il calcolo si rende comunque necessario anche avendo il contatore, poiché parte da 1 solo la prima volta che aggiungiamo record, dopodiché continua per la sua strada, ma queste sono Le Basi.

    Tutto ciò implica che non è possibile fare in un sol colpo una query di un'altra query numerando i record in una colonna.
    Non toccare, non funzionerà più
    niente.

  9. #9
    Quando, circa 25 anni fa, feci un corso di DB2, un database relazionale come Access, una delle prime cose che mi fu spiegata è che non si può applicare il concetto di "numerazione" alle righe estratte da una select.

    Il motivo, se ricordo bene, è che la select non garantisce l'ordinamento dei dati estratti (a meno di non utilizzare una order by) e, se fosse possibile numerare le righe si potrebbero ottenere incongruenze fra estrazioni successive sugli stessi dati.

    In altre parole, non c'è niente di strano, almeno in linea di principio, che una select estragga

    riga 1
    riga 2
    riga 3

    e, un attimo dopo, a parità di base dati,

    riga 3
    riga 1
    riga 2

    Queste due tabelle risultato, pur se diverse all'apparenza, sono coerenti fra loro mentre non lo sarebbero più se le righe fossero numerate progressivamente.

    Bisogna entrare nell'ordine di idee di separare l'estrazione dei dati grezzi effettuata dalla select dalla formattazione e presentazione dei dati effettuate con altri sistemi propri di ciascun ambiente (e che, relativamente ad access neanche conosco).
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

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.