Utilizzo criterio mm/yyyy con select

di
Anonimizzato12070
il
5 risposte

Utilizzo criterio mm/yyyy con select

Ciao a Tutti,
utilizzo access 2003/2007. Con il seguente codice vorrei recuperare
gli ordini relativi ai quarter. Il codice Sql l'ho fatto creare da access nella
sessione dedicata alla creazione delle query.E li funziona.

'ssql = "SELECT Dettagli_ordini.ID_ordine, Sum([Pezzi_Conf]*[Prezzo_Euro]) AS Tot, Ordini.Data_ordine, Format([Data_ordine]," & """mm/yyyy""" & ") AS Espr1" _
'& " FROM Ordini INNER JOIN Dettagli_ordini ON Ordini.ID_Ordine = Dettagli_ordini.ID_ordine" _
'& " GROUP BY Dettagli_ordini.ID_ordine, Ordini.Data_ordine, Format([Data_ordine]," & """mm/yyyy""" & ")" _
'& " HAVING (((Format([Data_ordine]," & """mm/yyyy""" & "))=" & mese & "/" & anno & "));"
'--------------------------------
Utilizzato con le due istruzioni qui sotto
Set cn = CurrentProject.Connection
Set Rst = cn.Execute(ssql)
la select viene eseguita , sintassi sembra quindi ok ,ma non mi trova niente.
Grazie per l'aiuto
Valgo54

5 Risposte

  • Re: Utilizzo criterio mm/yyyy con select

    Quello che hai fatto non distingue i QUARTERS ma i Mesi/Anno.

    La sintassi per la discriminazione dei QUARTERS è questa
    
    Quarters: Format([OrderDate];'\Qq yyyy')
    Quindi ho una cosa simile
    
    SELECT *, Format([OrderDate],'\Qq yyyy') AS Quarters
    FROM Orders;
    Ora su questo puoi FILTRARE i 4 Quarti.

    Mi sfugge l'uso di ADO per aprire un RS... quando con Access hai DAO nativo... ma è una scelta...
  • Re: Utilizzo criterio mm/yyyy con select

    Ciao Alex grazie della risposta. Ho fatto un errore confondendo quarter con mese.
    Tornado alla istruzione sql che con mi funziona, è la seguente:

    'ssql = "SELECT Dettagli_ordini.ID_ordine, Sum([Pezzi_Conf]*[Prezzo_Euro]) AS Tot, Ordini.Data_ordine, Format([Data_ordine]," & """mm/yyyy""" & ") AS Espr1" _
    '& " FROM Ordini INNER JOIN Dettagli_ordini ON Ordini.ID_Ordine = Dettagli_ordini.ID_ordine" _
    '& " GROUP BY Dettagli_ordini.ID_ordine, Ordini.Data_ordine, Format([Data_ordine]," & """mm/yyyy""" & ")" _
    '& " HAVING (((Format([Data_ordine]," & """mm/yyyy""" & "))=" & mese & "/" & anno & "));"

    Il risultato della Select è che non mi da errore di sintassi ma non mi trova niente nessun record.
    Cosa mi consigli
    Grazie in anticipo
    ciao

    P.S.
    Non sono espertissimo di Access, uso ADo perchè qualcuno dice che Dao è superato..Qual'è la tua opinione ?
  • Re: Utilizzo criterio mm/yyyy con select

    Prova questa
    
    ssql = "SELECT Dettagli_ordini.ID_ordine, Sum([Pezzi_Conf]*[Prezzo_Euro]) AS Tot, Ordini.Data_ordine, Format([Data_ordine],'mm/yyyy') AS Espr1"
    ssql = ssql & " FROM Ordini INNER JOIN Dettagli_ordini ON Ordini.ID_Ordine = Dettagli_ordini.ID_ordine"
    ssql = ssql & " GROUP BY Dettagli_ordini.ID_ordine, Ordini.Data_ordine, Format([Data_ordine],'mm/yyyy')"
    ssql = ssql & " HAVING Format([Data_ordine],'mm/yyyy')='" & mese & "/" & anno & "';"
    Scrivere
    
    StrSQL=Valore1+Valore2
    è diverso che scrivere
    
    strSQL=Valore1
    strSQL=strSQL+Valore2
    La differenza è sostanzialmente nel limite massimo di caratteri consecutivi che il VBEditor ammette(che non ricordo se sono 255)...
    Quindi la tua 1° scrittura, essendo fatta per concatenazione probabilmente superava il limite, oltre che contenere qualche errore di sintassi.

    Fai sapere.
  • Re: Utilizzo criterio mm/yyyy con select

    Ciao Alex
    ho fatto un test. Funziona!!
    Grazie
  • Re: Utilizzo criterio mm/yyyy con select

    Chi dice che DAO è superato...?
    La realtà è che il provider OLEDB per ADO è obsoleto...!
    Con NET esiste ADO.NET, ma gli inesperti confondono ADO ed ADO.NET pensando siano correlati... cosa assolutamente falsa.

    Quindi mentre ADO è fermo alla versione 2.8, e non verrà più sviluppato, DAO è ancora in sviluppo e supportato...!

    In tutti i casi ADO per Access è un'abominio, Access gestisce in modo nativo DAO, quindi risulta inutile e meno performante appoggiarsi ad ADO.
Devi accedere o registrarti per scrivere nel forum
5 risposte