PDA

Visualizza la versione completa : [DELPHI] Creare campo autoincrementale in database


XBarboX
05-04-2010, 19:38
Salve,
sto creando un'applicazione con l'uso di un database ADO.
Devo aggiungere un campo ID al db, ma non so come fare ad aumentare questo campo di uno ogni volta che aggiungo un elemento.
Stavo pensando che ogni volta che aggiungo un dato seleziono l'id con valore massimo e ci aggiungo 1. Il problema che non so come salvare in una variabile l'id maggiore.
Una volta riuscito a fare questo non dovrei avere pi problemi.
Grazie.

123delphi321
05-04-2010, 19:53
Originariamente inviato da XBarboX
Salve,
sto creando un'applicazione con l'uso di un database ADO.
Devo aggiungere un campo ID al db, ma non so come fare ad aumentare questo campo di uno ogni volta che aggiungo un elemento.
Stavo pensando che ogni volta che aggiungo un dato seleziono l'id con valore massimo e ci aggiungo 1. Il problema che non so come salvare in una variabile l'id maggiore.
Una volta riuscito a fare questo non dovrei avere pi problemi.
Grazie.

invece penso che di problemi ne potresti avere tanti se questo tuo programma funziona in rete.

non conosco il database ADO, ne so se questo database prevede una sorta di numeri progressivi come (se non sbaglio) MySql. io uso forebird (nativo per delphi) e nel database sono previsti dei generatori di progressivi.

comunque, per il tuo problema io effettuerei una query



select first 1
tabella.id
from tabella
order by tabella.id


in questa maniera ottieni il piu alto numero ID inserito nella tabella... sommagli 1 ed otterrai il nuovo valore da usare

XBarboX
05-04-2010, 19:54
lo so, ma non so come salvare il risultato della query in una variabile.
Avrei bisogno di una roba del genere:

ris:=ADOQuesry1.Result;

123delphi321
05-04-2010, 19:56
ris:=ADOQuesry1.fieldbyname(nomecampo).asinteger;

XBarboX
05-04-2010, 19:58
Ancora una cosa, ma il database forebird compatibile con tutti i sistemi operativi o ha bisogno di qualche componente per funzionare sui pc.

p.s.
Il mio programma deve essere eseguito sul maggior numero di pc

123delphi321
05-04-2010, 20:04
Originariamente inviato da XBarboX
Ancora una cosa, ma il database forebird compatibile con tutti i sistemi operativi o ha bisogno di qualche componente per funzionare sui pc.

p.s.
Il mio programma deve essere eseguito sul maggior numero di pc

direi che il database firebird funziona sotto tutte le versioni di windows.... poi sotto linux ... mac ...

http://www.firebirdsql.org/index.php?op=files&id=engine_213

per il resto non ho mai riscontrato problemi di funzionamento per il numero di pc contemporaneamente connesso allo stesso db

pare che gli unici limiti siano quelli del tuo hardware.

su ogni macchina devi installare il motore sql (ci vuole 1 minuto).

alka
16-04-2010, 20:06
Originariamente inviato da XBarboX
sto creando un'applicazione con l'uso di un database ADO.


ADO non un database, ma una libreria di oggetti per l'accesso a pi database.

Dovresti quindi specificare qual il database che stai utilizzando per ottenere una risposta pertinente, dato che generalmente tutti i database forniscono uno strumento per risolvere la tua esigenza, senza il bisogno di ricorrere a una "soluzione manuale" che risulterebbe comunque poco scalabile e prona a problemi ed errori in ambito multiutente.

Ciao! :ciauz:

Loading