Newsgroup: it.comp.lang.visual-basic
Titolo: SORT CON ADOX





Ciao,


Questo codice mi crea correttamente i dati 
prelevati da un foglio in excel


Solo che prima di inserire la chiave primaria che 
mi fa da contatore avrei bisogno


di ordinare i dati in base a dei campi e poi creare 
il contatore


 


quale codice devo mettere affinchè 
funzioni?


 


...........................................................


'set connection, catalog, and table objects
Set 
cnn1 = CurrentProject.Connection
Set cat1 = New 
ADOX.Catalog
cat1.ActiveConnection = cnn1
Set tbl1 = New 
ADOX.Table


 


' define table named "nominiativi" and append it to 
the Tables collection
With tbl1
    .Name = 
"nominiativi"
    .Columns.Append "azienda", 
adWChar
    .Columns.Append "cap", 
adInteger
    .Columns.Append "comune", adWChar
End 
With
cat1.Tables.Append tbl1


 




''''''''''''''''''''' codice che non 
funziona 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


DoCmd.RunSQL ("SELECT nominiativi.* 
FROM nominiativi ORDER BY nominiativi.cap, nominiativi.comune,")


 




ho messo l'istruzione e 
all'esecuzione mi viene fuori il seguente avviso:


"Un'azione EseguiSQL richiede un 
argomento costituito da un'struzione SQL"


 


oppure ho creato una query con il 
seguente codice:


DoCmd.OpenQuery("QueryOrdina")


solo ke la tabella è ordinata 
correttamente ma mi rimane "aperta" e nn esegue il restante codice


 


Se provo con la Query mi da il 
mesaggio "impossibile eseguire una query di selezione"


 


''''''''''''''''''''' codice che non 
funziona 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


 


strSql = "ALTER TABLE nominativi ADD COLUMN myID 
Identity(1,1)"
cnn1.Execute strSql


 


Set pk1 = New ADOX.Index
With 
pk1
    .Name = "MyPrimaryKey"
    
.PrimaryKey = True
    .Unique = True
    
.IndexNulls = adIndexNullsDisallow
End With


 


pk1.Columns.Append "MyID"
tbl1.Indexes.Append 
pk1


 


' make connection to excel source
cnn2.Open 
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"data Source=C:\nominiativi.xls;" 
& _
"Extended Properties=Excel 8.0;"  ''''HDR=NO; 
IMEX=1;


 


' open read-only recordset based on Excel 
source.
' Recall default is read-only
Set rst1 = New 
ADODB.Recordset
rst1.Open "nominiativi", cnn2, , , 
adCmdTable
rst1.MoveFirst


 


' Open read-write recordset based on local table 
named "nominativi"
Set rst2 = New ADODB.Recordset
rst2.ActiveConnection = 
cnn1
rst2.CursorType = adOpenKeyset
rst2.LockType = 
adLockOptimistic
rst2.Open "nominativi", cnn1, , , adCmdTable


 


Do Until rst1.EOF
With 
rst2
    .AddNew
    .Fields("azienda") = 
rst1.Fields(0)
    .Fields("cap") = 
rst1.Fields(1)
    .Fields("comune") = 
rst1.Fields(2)
    .Update
End 
With
rst1.MoveNext
Loop


 


createtableExit:
Set pk1 = Nothing
Set tbl1 = 
Nothing
Set cat1 = Nothing
rst1.Close
rst2.Close
Set rst1 = 
Nothing
Set rst2 = Nothing
cnn1.Close
cnn2.Close
Set cnn1 = 
Nothing
Set cnn2 = Nothing
Exit Sub


 



Car ha scritto:

Prima cosa non inviare messaggi HTML....!!!
Secondo questa cosa che hai scritto non serve a nulla:
DoCmd.RunSQL ("SELECT nominiativi.* FROM nominiativi ORDER BY
nominiativi.cap, nominiativi.comune,")
Il metodo RunSQL applicato a Docmd è proprio di Access, quindi il NG
più adatto era quello nel quale hai già postato la domanda....!!
In ogni caso se leggi l'HElp noterai che RunSQL è da usare solo per
Query Action, nel tuo caso hai una Query SELECT e per ottenere il
risultato devi aprire un Recordset con il Metodo OpenRecordset
sull'Oggetto Database(nel caso di DAO) oppure un Execute sull'Oggetto
Connection oppure un Open sull'oggetto Recordset ADO, ma passando i
parametri corretti....!
L'help in tutti i casi ti fornisce sia per ADO che per DAO tutti gli
esempi di cui hai bisogno, prova a dargli un'occhiata, magari ti è
sfuggito...!
@Alex

 ha scritto nel messaggio 
news:1164042519.1...@h54g2000cwb.googlegroups.com...
