Newsgroup: it.comp.appl.access
Titolo: filtrare tabella con ADO

Ciao,
Dopo questo codice....che mi crea una tabella importata da excel
avrei bisogno di ordinare la tabella in base al cap e comune...
Come posso fare?
----------------------------------------------------------------------------------------------------
Dim cnn1 As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim cat1 As ADOX.Catalog
Dim tbl1 As ADOX.Table
Dim pk1 As ADOX.Index
Set cnn1 = CurrentProject.Connection
Set cat1 = New ADOX.Catalog
cat1.ActiveConnection = cnn1
Set tbl1 = New ADOX.Table
' define table named "nominativi" and append it to the Tables collection
With tbl1
    .Name = "nominativi"
    .Columns.Append "azienda", adWChar
    .Columns.Append "indirizzo", adWChar
    .Columns.Append "cap", adInteger
    .Columns.Append "comune", adWChar
End With
cat1.Tables.Append tbl1
---------------------------------------------------------------------------------------------------------
Questo non funziona poichč, come da un altro post, execute non funziona con 
select:
cnn1.Execute "SELECT nominativi.* FROM nominativi ORDER BY nominativi.cap, 
nominativi.comune"
Questo neppure
DoCmd.RunSQL...... anche questo non funziona perchč permette solo "Query 
Action"
quale codice devo mettere?
Dovrei usare OpenRecordset? ma nn ho idea di come fare......sono un 
principiante!
Grazie

 Grazie
Prego
E non apire un altro post per piacere !!!
Ciao,
Max

Ciao,
Sto ora capendo come funzionano i newsgroup.....un pò di pazienza!
.....è già il terzo post che apro e qualcuno mi risponde così nn funziona 
......e si ferma lì.....
quello ke mi piacerebbe è una riga di codice per ordinare la tabella e 
salvare i dati ordinati
in quella riga di codice!!!!!

 in quella riga di codice!!!!!
La mia risposta era corretta, devi fare una Query, se vuoi vedere dati in un certo ordine
Perchè ti ostini a farlo con VBA?
E se lo vuoi fare con VBA, cosa vuoi ottenere?
Ciao,
Max

Ho provato crando una query "QueryOrdina"......
ma mi compare l'errore .... "il modulo di gestione di database non può 
bloccare la tabella 'nomiativi' perchè in uso da un altro utente o processo"
Quello ke mi piacerebbe e una funziona che mi ordina la tabella e mi salva 
la tabella ordinata prima di fare quest'altra funzione:
"ALTER TABLE plico ADD COLUMN myID Identity(1,1)" ----- ke funziona!
cosa devo scrivere?
OpenRecorset non so usarlo!
cmq grazie per la pazienza!
ciao
-------------
Set cnn1 = CurrentProject.Connection
Set cat1 = New ADOX.Catalog
cat1.ActiveConnection = cnn1
Set tbl1 = New ADOX.Table
' define table named "nominativi" and append it to the Tables collection
With tbl1
    .Name = "nominativi"
    .Columns.Append "azienda", adWChar
    .Columns.Append "indirizzo", adWChar
    .Columns.Append "cap", adInteger
    .Columns.Append "comune", adWChar
End With
cat1.Tables.Append tbl1
DoCmd.OpenQuery ("QueryOrdina")
strSql = "ALTER TABLE plico ADD COLUMN myID Identity(1,1)"
cnn1.Execute strSql
------------- 

 ciao
Di niente,
Ciao,
Max

ciao....
il codice crea una tabella prelevando dei campi di un file di excel....
poi dorei ordinare questi campi in base al cap e al comune.....(nn posso 
fare altrimenti...!!!)
ed infine aggiungere una colonna contatore a questa tabella.
il codice completo č questo:
la query č semplicemente: SELECT nominativi.* FROM nominativiORDER BY 
nominativi.cap, nominativi.comune, nominativi.azienda
Piu' di cosě nn saprei cosa dirti!!!
CIAOO
---------------------------------------------------------------------------
Private Sub Form_Load()
  'cancello la tabella esistente e ne creo una vuota
  Dim db As DAO.Database
  Dim tdf As DAO.TableDef
  Set db = CurrentDb
  For Each tdf In db.TableDefs
    If tdf.Name = "nominativi" Then
        DoCmd.DeleteObject acTable, "nominativi"
        Exit For
    End If
  Next
' funzione che importa i valori dal foglio excel nominativi.xls e crea una 
tabella con tali valori
On Error GoTo createTableTrap
Dim cnn1 As ADODB.Connection
Dim cnn2 As New ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Dim cat1 As ADOX.Catalog
Dim tbl1 As ADOX.Table
Dim pk1 As ADOX.Index
Dim strSql As String
'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 "nominativi" and append it to the Tables collection
With tbl1
    .Name = "nominativi"
    .Columns.Append "azienda", adWChar
    .Columns.Append "indirizzo", adWChar
    .Columns.Append "cap", adInteger
    .Columns.Append "comune", adWChar
    .Columns.Append "provincia", adWChar
End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''codice 
per ordinare i campi '''''''''''''''''''''''''''''''''''''''''''''''
DoCmd.OpenQuery ("QueryOrdina")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''codice 
per ordinare i campi '''''''''''''''''''''''''''''''''''''''''''''''
DoCmd.SetWarnings True
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:\nominativi.xls;" & _
"Extended Properties=Excel 8.0;"  ''''HDR=NO; IMEX=1; per importare prima 
riga
' open read-only recordset based on Excel source.
' Recall default is read-only
Set rst1 = New ADODB.Recordset
rst1.Open "nominativi", 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("indirizzo") = rst1.Fields(1)
    .Fields("cap") = rst1.Fields(2)
    .Fields("comune") = rst1.Fields(3)
    .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
createTableTrap:
If Err.Number = -
2147217857
 Then
    ' if the nominativi table already exists, delete it
    cat1.Tables.Delete "nominativi"
Else
    MsgBox (Err.Description)
End If
End Sub
--------------------------------------------------------------------------- 

 il codice completo è questo:
Ascolta, il codice completo è "scusami" assurdo.
Cancella una tabella se esiste, per poi ricrearla esattamente uguale...
immagino che questa cosa non l'hai fatta tu, visto soprattutto i commenti in inglese ;-)
Mi spieghi "LA LOGICA" e non come è fatto il codice che quello lo capisco da solo???
So che sono un pochino polemico, ma se non capisco cosa DEVI / VUOI fare non capisco come aiutarti... questo codice è assurdo a mio avviso
Dimmi, dobbiamo caricare un file di excel...
i dati vanno nella tabella "nominativi"
poi vanno stampati, vanno elaborati in un modo x, vanno ....
questo non capisco...
Ciao,
Max