Il giorno domenica 19 aprile 2015 11:50:41 UTC+2, Bruno Campanini ha scritto:
> on 19-04-15, archimede supposed :
> > ...WHERE NOME_CAMPO_COLONNA_D='a22'"
> > devi scrivere le query come se lo facessi in access con l'unica differenza
> > che la tabella la scrivi in questa forma [SPECCHIO$C7:E104] $incluso e poi
> > tutto il resto è uguale, Group by, Order by....inoltre rispetta sempre le " "
> > puoi anche fare le subquery:
> > " WHERE NOME = (SELECT NOME FROM [ARCHIVIO$A1:M" & AA & "] WHERE
> > NOME='Bruno');"
> La mia tabella è [Sheet1$A5:F17] e non ha Header;
> la condizione è che la colonna "C" contenga la stringa "a22"
> Se scrivo:
> "SELECT * FROM [Sheet1$A5:F17];"
> ottengo tutta la tabella.
> Vorrei che funzionasse:
> "SELECT * FROM [Sheet1$A5:F17] WHERE [Sheet1$C5:F17]='a22';"
> ma non funziona:
> Runtime error 3061.
> Too few parameters. Expected 1.
Ciao Bruno,
in una tabella senza intestazioni i campi si chiamano "F1", "F2", ...
Puoi verificarlo così:
Public Sub Test()
Const cstrDbsName As String = "D:\Percorso\Cartel1.xlsx"
Const cstrSql As String = "SELECT * FROM `Foglio1$C5:F17`;"
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Set dbs = DBEngine.OpenDatabase(cstrDbsName, _
False, _
True, _
"Excel 8.0;HDR=No;")
Set rst = dbs.OpenRecordset(cstrSql)
For Each fld In rst.Fields
Debug.Print fld.Name
Next
On Error Resume Next
rst.Close
dbs.Close
Set fld = Nothing
Set rst = Nothing
Set dbs = Nothing
End Sub
Quindi la stringa SQL nel tuo caso potrebbe essere:
SELECT * FROM `Foglio1$C5:F17` WHERE `F1`='a22';
-oppure-
SELECT * FROM `Foglio1$C5:F17` WHERE UCASE(`F1`)='A22';
se il caso.
--
Ciao! :)
Maurizio