Newsgroup: it.comp.appl.access
Titolo: Variare la proprietà Indicizzato su Sì (duplicati ammessi)

Nella tabella Anagrafiche di alcuni BE distribuiti qualche tempo fa ho 
notato che il campo PartitaIva ha la proprietà Indicizzato su Sì (duplicati 
non ammessi).
Attualmente il mio FE presuppone che il campo in questione abbia la 
proprietà indicizzato su Sì (duplicati ammessi).
Come faccio a controllare da FE se il campo in questione ha la proprietà 
settata come duplicati non ammessi e, nel caso, variarla in duplicati 
ammessi?
E' da sabato che cerco di trovare qualcosa (ALTER TABLE, ALTER COLUMN, 
TableDef, ecc.) ma finora niente.
Sono certo che ora qualcuno mi darà una mano.
Grazie in anticipo.
GioVe 

 ha scritto nel messaggio
news:%ao1d.314188$5D1.13...@news4.tin.it...

Ciao Giove,
per fare quello che dici dovresti provare a quardare nell'Help  gli Oggetti
DAO INDEXES, INDEX e la funzione CreateIndex.
Nell'help c'è un esempio di utilizzo di CreateIndex.
Credo che la procedura corretta da seguire sia:
1)Aprire il Database BE con OpenDatabase
2)Accedere alla Tabella incriminata e al suo inseme Indexes
3)Cancellare l'indice esistente
4)Creare il nuovo Indice impostatndo la proprietà UNIQUE a False
5)Appendere il nuovo indice all'insieme Indexes
6)Chiudere il dataBase
Spero che questo possa aiutarti.
Saluti
Cinzia

 ha scritto nel messaggio
news:%ao1d.314188$5D1.13...@news4.tin.it...

Per quel che so io le proprietà del campo di una tabella da VBA possono
essere create per campi creati ex-novo con VBA, ma non possono essere
cambiate quelle di campi già esistenti.
Per maggiori dettagli vai sul Sito Comune (link qui sotto) e nella Sezione
Tables leggi la FAQ di Stefano Bettini intitolata "Come si possono
modificare via codice le proprietà dei campi di tabella?".
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio 
news:ci66i8$rit$1...@lacerta.tiscalinet.it...

Grazie Cinzia,
ho letto e riletto l'help con gli esempi e ora credo di essere in grado di 
implementare ciò che voglio.
Un dubbio però mi rimane: come faccio a controllare se il campo PartitaIva è 
indicizzato come Sì (duplicati non ammessi)? Puoi farmi un esempio di 
codice?
Ciao
GioVe 


Già fatto, ma credo di aver capito che la proprietà Indicizzato non si può 
variare col metodo descritto nella FAQ.
Cinzia mi ha detto di vedere gli oggetti Index e Indexes insieme al metodo 
CreateIndex, e ora credo di essere in grado di implementare ciò che voglio. 
Speriamo!
Ciao
GioVe 


Ciao,
ecco una funzione a cui passi il nome del database, il nome della tabella e
il nome dell'indice, che se non l'hai modificato corrisponde al nome del
campo e ti restituisce Vero o falso a seconda del fatto che l'indice Ammetta
duplicati oppure No.
Function TestIndexUnique(dbnane As String, tbName As String, indexName As
String)
Dim dbs As Database
Dim tdf As TableDef
Dim idx As Index
   Set dbs = OpenDatabase(dbnane)
   Set tdf = dbs.TableDefs(tbName)
         Set idx = tdf.Indexes(indexName)
         If idx.Unique = True Then
            TestIndexUnique = True
          Else
            TestIndexUnique = False
          End If
dbs.close
dbs.Close
Set dbs = Nothing
Set tdf = Nothing
set idx = nothing
End Function
Ciao Cinzia


Grazie mille.
Sei proprio forte!
GioVe