|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Città: firenze
Messaggi: 1285
|
[vba access] aggiornare campo in tabella
Salve a tutti ho bisongo di agigornare un campo di una tabella. la tabella contiene le inforamzioni relative ad un soggetto diversificate per tipo record ed io ho bisogno di creare una chiave unica che mi permetta di identificare le informazioni relative ad un soggetto.
Mi spiego meglio soggetto x ha : record N2 record n3 record n4 soggetto y record n2 record n3 record n4 l'associazione soggetto record è data dalla sequenza dei record ma per poter effettuare alcune operazioni ho necessità di stravolgere la sequenza perntanto pensavo di numerare tutti i record che fanno capo ad uno stesso soggetto con un numeratore per fare questo pensavo di fare un ciclo for next in cui impostavo la condizione di inserire il valore del campo x finchè non trovavo un altro record iniziale della sequenza, a quel punto impostare x+1 e ricominciare ....ma come faccio?
__________________
Ciaps desktop : AMD Ryzen 7 2700X ASUS ROG STRIX B450-F |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Non ho chiaro come sia la tabella, ma così su 2 piedi farei un campo aggiuntivo... Però mi sorge il dubbio se non sia meglio spezzare quella tabella in 2 e mettere sulla seconda tutti i record di ogni "soggetto" - 1 Soggetto->Molti Record...
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2005
Città: firenze
Messaggi: 1285
|
ehm mi sono sicuramente spiegato male.
la tabella ha record in sequenza n2 n3 n4 n2 n3 n4 ogni gruppo n2-n4 rappresenta un soggetto ma sul file non ho una chiave che identifichi il soggetto ho quindi creato un campo aggiuntivo dove vorrei andare a scrivere un numero per ogni soggetto diverso e quindi fare: n2 15 n3 15 n4 15 n2 16 n3 16 n4 16 .... .... n2 n n3 n n4 n
__________________
Ciaps desktop : AMD Ryzen 7 2700X ASUS ROG STRIX B450-F |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Allora è come pensavo, e, ripeto, gran brutta scelta la mono-tabella in questo caso.
Purtroppo Access non è Oracle, e Rownum non c'è, perciò bisogna inventarsi un certo "giro" con VBA. Cosa farei io ( nel mio esempio ho una tabella "nomeTabella" con il solo campo "N" che contiene n2, n3, n4, n2, n3, n4, ecc. ) : 1. Definisco un mio Tipo "record" : Codice:
Private Type record
N As String
soggetto As Integer
End Type
2. Carico tutta la tabella in un Recordset : Codice:
Dim soggetto As Integer
soggetto = 0
Dim RS As Recordset
Set RS = CurrentDb.OpenRecordset("nomeTabella")
Do While Not RS.EOF
Dim R As record
R.N = RS("N")
If R.N = "n2" Then soggetto = soggetto + 1
R.soggetto = soggetto
MsgBox R.N & " - " & R.soggetto
RS.MoveNext
Loop
3. Ad ogni record letto, creo un Type "record", e lo aggiungo ad un array o collection che sia... 4. Leggo l'array dal primo elemento all'ultimo e faccio una Insert di ogni Type "record" su una nuova tabella, che avrà la stessa struttura di "nomeTabella", con la sola aggiunta del campo "Soggetto". E il gioco è fatto. Ultima modifica di MarcoGG : 16-02-2010 alle 16:00. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:27.



















