Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Cannot have aggregate function in expression (COUNT(Last(Tabella.MON))).![]()
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Cannot have aggregate function in expression (COUNT(Last(Tabella.MON))).![]()
Facciamo le cose più semplici:
Vedi se va bene.codice:strSQL = "SELECT Last(myTbl.ID) AS ID, myTbl.Cab, Last(myTbl.mon) AS mon, Last(myTbl.dist) AS dist, Last(myTbl.dData) AS dData, Last(myTbl.tot) AS tot, myTbl.NomeM, myTbl.IDM FROM myTbl GROUP BY myTbl.dist, myTbl.Cab, myTbl.IDM, myTbl.NomeM HAVING (((Last(myTbl.dData))=#2005/01/01#) AND ((Last(myTbl.tot))=0) AND ((myTbl.IDM)="&nrMeseprec&" Or (myTbl.IDM)="&nrMeseprec1&" Or (myTbl.IDM)="&nrMeseprec2&" Or (myTbl.IDM)="&nrMeseprec3&" Or (myTbl.IDM)="&nrMeseprec4&")) AND (myTbl.dist = 'AAA' OR myTbl.dist = 'BBB') ORDER BY Last(myTbl.ID), myTbl.Cab, myTbl.IDM" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, objconn, 3, 3 Dim strNome, strNomeOld, contaNomeUguale contaNomeUguale = 0 strNomeOld = "" Do Until objRs.Eof strNome = objRS("nome") if strNomeOld = strNome then contaNomeUguale = cInt(contaNomeUguale) + 1 else strNomeOld = strNome strNome = "" contaNomeUguale = 0 end if objRs.MoveNext Loop
Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!
Grazie, ma non capisco cosa stiamo facendo... adesso mi vengono restituiti 134 records ma che sono?Originariamente inviato da maximum
Vedi se va bene.![]()
Forse non mi sono spiegato... devo contare i record con lo stesso nome nella colonna Nome estratti dalla query e se minori di 8 escluderli dalla stampa del report...
Quel codice che ti ho postato, è l'apripista per la realizzazione ad hoc di un log da stampare a video dei record che vengono esclusi dalla query (sommati e totalizzati per voce).Originariamente inviato da fraude
Grazie, ma non capisco cosa stiamo facendo... adesso mi vengono restituiti 134 records ma che sono?![]()
Va perfezionato comunque...
Pensi di farcela, partendo concettualmente da quello che ho scritto su?![]()
Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!
Grazie Max, ci ho provato tutto il pomeriggio ma con scarsissimi risultati...![]()
Ho buttato già qualche altre riga:
codice:strSQL = "SELECT Last(myTbl.ID) AS ID, myTbl.Cab, Last(myTbl.mon) AS mon, Last(myTbl.dist) AS dist, Last(myTbl.dData) AS dData, Last(myTbl.tot) AS tot, myTbl.NomeM, myTbl.IDM FROM myTbl GROUP BY myTbl.dist, myTbl.Cab, myTbl.IDM, myTbl.NomeM HAVING (((Last(myTbl.dData))=#2005/01/01#) AND ((Last(myTbl.tot))=0) AND ((myTbl.IDM)="&nrMeseprec&" Or (myTbl.IDM)="&nrMeseprec1&" Or (myTbl.IDM)="&nrMeseprec2&" Or (myTbl.IDM)="&nrMeseprec3&" Or (myTbl.IDM)="&nrMeseprec4&")) AND (myTbl.dist = 'AAA' OR myTbl.dist = 'BBB') ORDER BY Last(myTbl.ID), myTbl.Cab, myTbl.IDM" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, objconn, 3, 3 Dim strNome, strNomeOld, contaNomeUguale, conta, vReport contaNomeUguale = 0 strNomeOld = "" conta = 0 Do Until objRs.Eof strNome = objRS("nome") if strNomeOld = strNome then contaNomeUguale = cInt(contaNomeUguale) + 1 else strNomeOld = strNome strNome = "" conta = conta + 1 end if if conta > 0 then vReport = "Nome: " & strNome & " Record Presenti: " & contaNomeUguale & " " contaNomeUguale = 0 vReport = "" end if objRs.MoveNext Loop
Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!
io access non lo uso molto, ma "select last" va fatto in quel modo?