Newsgroup: it.comp.lang.visual-basic
Titolo: Istruzione SQL per inserire un numero progressivo

Ciao.
Dovrei inserire in un recordset (risultante da un'istruzione SQL) un campo
che contiene un numero progressivo.
Quindi nel primo record tale campo deve valere 1, nel secondo 2 e cosi' via.
Come poso fare?
Grazie per l'aiuto.
Skysurfer

 ha scritto nel messaggio
news:9v2oli$jlj$1...@serv1.iunet.it...


 ha scritto nel messaggio
news:9v2oli$jlj$1...@serv1.iunet.it...

usa una funzione del genere:
Function NewRecord (rst As Recordset) As Long
  Dim Bkm As Variant
  Bkm = rst.Bookmark
  rst.MoveLast
  NewRecord = rst.RecordCount
  rst.Bookmark = Bkm
End Function
da programma devi chiamare questa funzione. Se ad esempio il campo da
aggiornare è il campo IDCli di tipo long nel recordset rstClienti, allora
devi scrivere:
rstClienti.Fields("IDCli") = NewRecord(rstClienti)

Grazie per le risposte, ma forse non mi sono spiegato bene.
Io volevo sapere se esiste un modo per ottenere il numero progressivo in
ogni record direttamente nell'istruzione SQL, in modo che il recordset
risultante abbia già tale campo impostato e non sia necessario eseguire
ulteriori operazioni sul recordset.
Grazie.
Skysurfer

 ha scritto nel messaggio
news:9v4c7o$2ug$1...@serv1.iunet.it...

FOrse c'è qualcosa in Oracle ma al momento non ricordo, che database usi?
--
Lawrence Lebowsky
#marcone#@
sidsrl.it

 ha scritto nel messaggio
news:9v4c7o$2ug$1...@serv1.iunet.it...


"Wodka4U" <marc_cHa_o@mar_Xp_tek.it> ha scritto nel messaggio
news:6FjR7.2346$3r4.1...@news1.tin.it...
CUT
mi è scappato l'invio
costruisciti alcune funct che leggono il progressivo dalla tabella giusta e
te lo elaborano
 e riordinano i numeri in caso di cancellazione....nel caso tuo è forse
eccessivo ma se ti capita un cliente che ha la numerazione degli articoli
TFG- xxxx -JKT per una linea di prodotti
AGG - xxxx -PIG per un altra
dove xxxx sono numeri 0001 0002 etc
(come spesso accade con chi ha già sistemi di codifica suoi...ad esempio i
confezionisti o i grossi distributori o ditte di logistica) non ci levi le
gambe senza una tabellina di supporto
Bye man

 writes:
LL> FOrse c'è qualcosa in Oracle ma al momento non ricordo, che database usi?
Oracle e Access _hanno_ qualcosa. Il brutto che il qualcosa dipende dal DB.
Access ha i campi contatore (automatici), la rottura e` che per ricuperare
successivamente il progressivo il campo deve avere una chiave secondaria.
Oracle invece ha  le sequence, molto flessibili. Puoi  fare la "select
sequence.nextval  from dual"  prima di  fare  la insert  o, usando  ad
esempio la stored procedure, dentro la insert.
Fare una sequenza da VB ha il problema della possibile multiutenza che
deve essere risolto a colpi di lock.
-- 
Gian  | main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Uberto|                        David Korn, 1987 ioccc best one liner 
Lauri |-------------------------------------------------------------------
(aka saint) >>Vedere X-Nospam nell'header - See X-Nospam field in Header<<

La cosa che devo ottenere non è così complicata.
Non devo gestire il recordset risultante.
Mi serve solamente per fare una stampa e dovrei mettere un numero
progressivo su ogni riga.
Per la stampa uso il dataenvironment.
Magari c'e' qualche altro modo per inserire un numero progressivo di riga
nel Dataenvironment?
Chiedevo se si poteva fare direttamente con un'istruzione SQL piu' che altro
per curiosita'.
Se proprio non c'e' modo, faro' un ciclo sul recordset risultante dalla
Select.
Ciao.
Skysurfer

Accidenti... e' sorto un ulteriore problemino!
Non riesco a fare il ciclo sul recordset perche' il recordset è gerarchico
ed il numero progressivo lo dovrei mettere in un campo del Recordset figlio,
che è a sola lettura!
Praticamente ho un'istruzione SHAPE SQL che restituisce un recordset
gerarchico (ho dovuto farlo cosi' per utilizzare i gruppi nel datareport).
Il recordset principale contiene i campi che mi servono per il
raggruppamento ed i recordset figli contengono i dettagli.
E' in questi recordset che dovrei impostare il numero progressivo, ma sono
in sola lettura.
Che palle!
Ciao
Skysurfer