Newsgroup: it.comp.appl.access
Titolo: Query di accodamento ed incremento campo numerico null

Un saluto a tutto il NG. Ho cercato nel gruppo, nelo Sito Comune e
nell'help ma non sono riuscito a venire a capo di questo problema che
vado ad esporre:_
Ho due tabelle, Tab1 e Tab2, hanno gli stessi campi tranne un campo
numerico progressivo, IdNom, che esiste in Tab1 e non in Tab2 che è
una tabella che importo dall'esterno.
Estraggo tramite una query i records presenti in Tab2 e non in Tab1 (i
records nuovi) e dovrei accodarli in Tab1.
Fino a qui non ho problemi. Il mio problema principale è che dovrei
far si che i records nuovi accodandosi, si numerassero in modo
progressivo a partire dal numero più alto presente in IdNom.
Se idNom fosse un campo contatore la cosa avverrebbe in automatico ma
questo campo, per motivi che è lungo spiegare, deve essere per forza
numerico anche se si deve comportare come contatore (univoco e con
duplicati non ammessi)
E' possibile, con SQL, creare un campo calcolato IdNom nella query di
accodamento, che vada a cercare il numero più alto nel campo di
destinazione IdNom e vada incrementandolo?
Ho provato così:
IdNom: DMax("[IdNom]";"Tab1")+1
ma ovviamente mi mumera tutte le righe con lo stesso numero, quello
correttamente più alto in Tab1.
Non è necessario che l'operazione venga svolta nella stessa query di
accodamento ma può essere svolta anche dopo l'accodamento, nella Tab1,
nei records che hanno IdNom vuoto e, se la cosa, invece di essere solo
SQL, fosse del codice mi andrebbe benissimo lo stesso.
La discussione che ho trovato che si avvicina di più al mio problema è
questa:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/3c4a0fe2b04aa6ae/a8e7f310e9023728?lnk=gst&q=incremento+campo+numerico#a8e7f310e9023728
Ma non riesco ad adattarla al mio problema (forse per i motivi che
sono riportati all'interno della stessa)
Spero che qualcuno possa darmi una mano con questo problema.
Grazie.

 ha scritto nel messaggio 
news:a52f54a8-a7d0-461d...@x35g2000hsb.googlegroups.com...
Un saluto a tutto il NG. Ho cercato nel gruppo, nelo Sito Comune e
nell'help ma non sono riuscito a venire a capo di questo problema che
vado ad esporre:_
Ho due tabelle, Tab1 e Tab2, hanno gli stessi campi tranne un campo
numerico progressivo, IdNom, che esiste in Tab1 e non in Tab2 che č
una tabella che importo dall'esterno.
Estraggo tramite una query i records presenti in Tab2 e non in Tab1 (i
records nuovi) e dovrei accodarli in Tab1.
Fino a qui non ho problemi. Il mio problema principale č che dovrei
far si che i records nuovi accodandosi, si numerassero in modo
progressivo a partire dal numero piů alto presente in IdNom.
Se idNom fosse un campo contatore la cosa avverrebbe in automatico ma
questo campo, per motivi che č lungo spiegare, deve essere per forza
numerico anche se si deve comportare come contatore (univoco e con
duplicati non ammessi)
E' possibile, con SQL, creare un campo calcolato IdNom nella query di
accodamento, che vada a cercare il numero piů alto nel campo di
destinazione IdNom e vada incrementandolo?
Ho provato cosě:
IdNom: DMax("[IdNom]";"Tab1")+1
ma ovviamente mi mumera tutte le righe con lo stesso numero, quello
correttamente piů alto in Tab1.
Non č necessario che l'operazione venga svolta nella stessa query di
accodamento ma puň essere svolta anche dopo l'accodamento, nella Tab1,
nei records che hanno IdNom vuoto e, se la cosa, invece di essere solo
SQL, fosse del codice mi andrebbe benissimo lo stesso.
La discussione che ho trovato che si avvicina di piů al mio problema č
questa:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/3c4a0fe2b04aa6ae/a8e7f310e9023728?lnk=gst&q=incremento+campo+numerico#a8e7f310e9023728
Ma non riesco ad adattarla al mio problema (forse per i motivi che
sono riportati all'interno della stessa)
Spero che qualcuno possa darmi una mano con questo problema.
Grazie.
Ciao T_A_O
prova a mettere questo codice in un pulsante:
Dim rst1 As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst1 = CurrentDb().OpenRecordset("NomeQuery", dbOpenDynaset)
Set rst2 = CurrentDb().OpenRecordset("Tab1")
If rst1.EOF And rst1.BOF Then MsgBox "Nessun Record Trovato": Exit Sub
 rst1.MoveFirst
    Do Until rst1.EOF
            rst2.AddNew
            rst2!ID = DMax("[ID]", "Tab1") + 1
            rst2!Cognome = rst1!Cognome
            'ecc. ecc.
            rst2.Update
            rst1.MoveNext
    Loop
rst1.Close
rst2.Close
Set rst1 = Nothing
Set rst2 = Nothing
buona domenica
Daniele 

 Daniele
Funziona alla perfezione :) Mille grazie Daniele