Newsgroup: it.comp.appl.access
Titolo: Query di aggiornamento

Buon giorno,
avrei bisogno di un aiuto per una query di aggiornamento. Ho una
tabella nominativi con due colonne : NOME  e NR_NOME. Come posso
creare una query che riempia la colonna NR_NOME assegnando al primo
nome il valore 1 ed alle sue ripetizioni il valore 0....
Questo è l'esempio di ciò che vorrei ottenere:
NOME           NR_NOME
Gianni R         1
Gianni R         0
Gianni R         0
Gianni R         0
Marco N         1
Marco N         0
Marco N         0
Luca G          1
Luca G          0
Luca G          0
Ho questa necessità in quanto devo interfacciare la tabella con
excel(tabella Pivot) e l'unico modo per contare i Nomi (univoci)
presenti nella tabella è questo; altrimenti excel, come conteggio Nomi
mi restituisce 10 anzichè 3)
Grazie a tutti
Ciao Dario


Ciao Dario, puoi fare così:
nella maschera, come origine record ti crei una query dove metterai il
campo "NOME" in ordinamento crescente e in un pulsante inserirai la
seguente routine:
Dim ss As DAO.Recordset
Dim i As Integer
Dim x As String
Set ss = CurrentDb.OpenRecordset("select * from Tabella1 order by
NOME")
Do Until ss.EOF
i = 0
Do
ss.Edit
ss!NR_NOME = i
If ss!NOME <> x Then
ss!NR_NOME = 1
End If
ss.Update
x = ss!NOME
ss.MoveNext
If ss.EOF Then Exit Do
Loop
Loop
Me.Requery
ss.Close
Set ss = Nothing
Ciao Vladimiro

 - Mostra testo citato -
ops, solo ora mi sono accorto che la tua richiesta verte per una
query.
Premesso che la tua tabella (che ho chiamato Tabella1 anche nell'altro
esempio) abbia un ID contatore l'SQL della query è il seguente:
SELECT Tabella_Appoggio.ID, Tabella_Appoggio.NOME, (Select Count(*)=0
FROM Tabella1 Where [NOME] = [Tabella_Appoggio].[NOME] AND ID <
[Tabella_Appoggio].[ID]) AS NR_NOME
FROM Tabella1 AS Tabella_Appoggio
ORDER BY Tabella_Appoggio.NOME, Tabella_Appoggio.ID;
il risultato questa volta però è che al posto di avere 1 come
capostipite, avrai -1 ;credo che per quello che devi fare vada
bene :-)
Di nuovo Vladimiro

 - Mostra testo citato -
Ciao Dario, la query giusta che cercavi è la seguente:
SELECT Tabella_Appoggio.ID, Tabella_Appoggio.NOME, (Select
IIf(Count(*)=0,1,0)
FROM Tabella1 Where [NOME] = [Tabella_Appoggio].[NOME] AND ID <
[Tabella_Appoggio].[ID]) AS NR_NOME
FROM Tabella1 AS Tabella_Appoggio
ORDER BY Tabella_Appoggio.NOME, Tabella_Appoggio.ID;
Ricordati di cambiare solo il nome di Tabella1 con il nome della tua
tabella e di avere un campo contatore che ho chiamato ID
Ciao Vladimiro.

 - Mostra testo citato -
Ciao Vladimiro, sei un grande!!!!  grazie davvero!!!!
La query funziona perfettamente. Ma adesso come faccio ad aggiornare i
dati nella mia "TABELLA1" ? Mi spiego, la query mi estrae i dati, ma
la colonna "NR_NOME" in TABELLA1 non viene aggiornata..Scusami se
approfitto della tua gentilezza!. ciao dario

 - Mostra testo citato -
CIao Dario,
il campo "NR_NOME" della query (che avrei potuto chiamare in qualsiasi
altro modo) non ha nulla a che vedere con il campo "NR_NOME" della
tabella, in quanto è un campo calcolato. Se vuoi vedere il risultato
in tabella devi usare la routine del primo esempio. Però, mi spieghi
l'esigenza di vedere i dati in tabella quando hai a disposizione una
query che puoi sfruttare allo stesso modo di una tabella?
Ciao Vladimiro.

 Ciao Vladimiro.
Effettivamente proverò ad interfacciare excel, anzichè con la tabella,
con la query ed il campo calcolato . Unico dubbio la velocità di
accesso ai dati. Credo che con la query sia superiore.Comunque ci
proverò.
Ora ti ringrazio nuovamente,mi hai aiutato davvero tanto, e ti saluto,
ciao dario

 - Mostra testo citato -
Ciao Vladimiro