Newsgroup: it.comp.lang.visual-basic
Titolo: creare indici su archivio MDB in VB

cosa devo fare per creare degli indici in VB su un archivio MDB ???
--
Solo risposte sul news

Intendi una chiave primaria?
Beh, faresti prima ad impostare un contatore in access... altrimenti:
prima di aggiungere un nuovo record, ti sposti sull'iltimo e leggi l'indice
ad esempio:
rst.movelast
rst("ID")=Ultimo
poi, quando aggiungi il record:
rst.addnew
rst("ID")=Ultimo+1
.....
rst.update
questo č un metodo veloce e privo di controlli: infatti, se tutto va bene, ogni volta aggiungi uno, e di conseguenza,
l'ultimo record ha il valore maggiore se non ti fidi, allora fai cosě:
rst.movefirst
ultimo=0
do
	if rst("ID")> Ultimo then Ultimo=rst("ID")
	rst.movenext
loop until rst.eof
OK?
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)


La tua costanza nel chiedere questa cosa č tale che ho perso un po' di tempo
per provare.
Allora, ho aperto l'MDB biblio che trovi sicuramente sul tuo P.C.
Ho guardato una tabella a caso:  "Authors".
Ho visto che c'č un campo: "Author"
Ho creato una fonte dati che ho chiamato "DsnProva", collegata a quel MDB.
poi ho aperto una connessione via API e ho sparato la stringa :
"create index cazzarola on authors (author)"
con l' API SQLExecDirect
ho guardato la struttura della tabella e ho trovato l'indice "cazzarola".
Ergo: non c'č motivo perchč una proposizione cosě semplice non funzioni.
Se vuoi ti posto tutto il progetto comprensivo di dichiarazioni API.
ciao.
P.S. ho fatto un po' di casino con la risposta, non so quante ne
arriveranno-

Ciao,
Ti posto un esempio di creazione di una tabella, con campi ed indici, credo
che le spiegazioni non servano, e' abbastanza semplice.
Public Sub CreaTabella(NomeTabella As String)
Dim MyTab As TableDef, Campi(15) As Field, Indici(3) As Index,
CampiIndici(3) As Field
                    Set MyDb = DBEngine.Workspaces(0).OpenDatabase
(PercorsoArrivi)
                    Set MyTab = MyDb.CreateTableDef(NomeTabella)
                    Set Campi(0) = MyTab.CreateField("Id", dbLong)
                    Campi(0).Attributes = dbAutoIncrField
                    Set Campi(1) = MyTab.CreateField("Proto", dbLong)
                    Set Campi(2) = MyTab.CreateField("Mittente", dbMemo)
                    Set Campi(3) = MyTab.CreateField("Da", dbText)
                    Campi(3).Size = 70
                    Set Campi(4) = MyTab.CreateField("A", dbMemo)
                    Set Campi(5) = MyTab.CreateField("Copia", dbMemo)
                    Set Campi(6) = MyTab.CreateField("Nascosti", dbMemo)
                    Set Campi(7) = MyTab.CreateField("Oggetto", dbMemo)
                    Set Campi(8) = MyTab.CreateField("Documento", dbMemo)
                    Set Campi(9) = MyTab.CreateField("Allega", dbMemo)
                    Set Campi(10) = MyTab.CreateField("Data", dbText)
                    Campi(10).Size = 70
                    Set Campi(11) = MyTab.CreateField("Note", dbMemo)
                    Set Campi(12) = MyTab.CreateField("Letto", dbBoolean)
                    Set Campi(13) = MyTab.CreateField("Chiavi", dbText)
                    Campi(13).Size = 50
                    Set Campi(14) = MyTab.CreateField("Note2", dbMemo)
                    Set Campi(15) = MyTab.CreateField("Campo Libero",
dbMemo)
                    MyTab.Fields.Append Campi(0)
                    MyTab.Fields.Append Campi(1)
                    For n = 2 To 11
                        Campi(n).AllowZeroLength = True
                        MyTab.Fields.Append Campi(n)
                    Next n
                    MyTab.Fields.Append Campi(12)
                    For n = 13 To 15
                        Campi(n).AllowZeroLength = True
                        MyTab.Fields.Append Campi(n)
                    Next n
                    Set Indici(0) = MyTab.CreateIndex("PrimaryKey")
                    Set Indici(1) = MyTab.CreateIndex("Chiavi")
                    Indici(0).Primary = True
                    Indici(0).Unique = True
                    Indici(1).Unique = False
                    Indici(1).Primary = False
                    Set CampiIndici(0) = Indici(0).CreateField("Proto")
                    Set CampiIndici(1) = Indici(1).CreateField("Chiavi")
                    CampiIndici(0).Attributes = dbDescending
                    Indici(0).Fields.Append CampiIndici(0)
                    Indici(1).Fields.Append CampiIndici(1)
                    MyTab.Indexes.Append Indici(0)
                    MyTab.Indexes.Append Indici(1)
                    MyDb.TableDefs.Append MyTab
            MyDb.Close
End Sub
Le proprieta' richiamate le trovi sull'help.
ciao.
beppe
