Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870

    Query particolarmente rognosa...

    Ciao, pensavo d'avere risolto ma purtroppo questa query mi "tradisce"; nel db ho i seguenti records :
    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 2006/02/03
    TOTALEMOVIMENTI = 6
    IDMESEESTRATTO = 3
    NOMEMESEESTRATTO = MARZO


    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 3000/01/01
    TOTALEMOVIMENTI = 0
    IDMESEESTRATTO = 2
    NOMEMESEESTRATTO = FEBBRAIO


    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 3000/01/01
    TOTALEMOVIMENTI = 0
    IDMESEESTRATTO = 1
    NOMEMESEESTRATTO = GENNAIO


    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 3000/01/01
    TOTALEMOVIMENTI = 0
    IDMESEESTRATTO = 12
    NOMEMESEESTRATTO = DICEMBRE



    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 3000/01/01
    TOTALEMOVIMENTI = 0
    IDMESEESTRATTO = 11
    NOMEMESEESTRATTO = NOVEMBRE
    La query dovrebbe estrarre soltanto quelli che corrispondono alle condizioni previste che sono queste:
    SELECT Last(ID) AS ID, Luogo, Esercitazione, COUNT(montante) AS TotMontante, Last(montante) AS montante, Last(ente) AS ente, Last(dataevento) AS dataevento, Last(totalemovimenti) AS totalemovimenti, Last(NomeMeseEstratto) AS NomeMeseEstratto, Last(IDMeseEstratto) AS IDMeseEstratto FROM tabella WHERE (((IDMeseEstratto=11) OR (IDMeseEstratto=12) OR (IDMeseEstratto=1) OR (IDMeseEstratto=2) OR (IDMeseEstratto=3) ) AND (dataevento=#3000/01/01#) AND (totalemovimenti = 0) AND ((ente = 'ROSCIANO') )) AND (Esercitazione = 'VITERBO') GROUP BY MONTANTE, Luogo, Esercitazione HAVING ((COUNT(MONTANTE)) = 5) ORDER BY Luogo asc
    Perchè mi estrae anche il primo dei records, cioè questo: ??
    ESERCITAZIONE = VITERBO
    LUOGO = MONTAGNA
    MONTANTE = BERNARDO
    ENTE = ROSCIANO
    DATAEVENTO = 2006/02/03
    TOTALEMOVIMENTI = 6
    IDMESEESTRATTO = 3
    NOMEMESEESTRATTO = MARZO
    Grazie a tutti...

  2. #2
    controlla se le parentesi del'and e or sono messe bene e che abbiano senso logico

  3. #3
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Le ho già controllate e mi sembrano logiche; in pratica questa query quando trova una situazione come quella dei 5 records che ho postato non deve estrarli perchè pur essendo 5, uno di loro non rispetta tutte le condizioni previste nella query, mi spiego ?

  4. #4
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Togliendo gli alias la query funziona:
    strSQL = "SELECT Last(ID), Luogo, Esercitazione, COUNT(montante) AS TotMontante, Last(montante), Last(ente), Last(dataevento), Last(totalemovimenti), Last(NomeMeseEstratto), Last(IDMeseEstratto) FROM tabella WHERE (((IDMeseEstratto=11) Or (IDMeseEstratto=12) Or (IDMeseEstratto=1) Or (IDMeseEstratto=2) Or (IDMeseEstratto=3)) And (dataevento=#1/1/3000#) And (totalemovimenti=0) And ((ente='ROSCIANO'))) And (Esercitazione='VITERBO') GROUP BY MONTANTE, Luogo, Esercitazione HAVING ((COUNT(MONTANTE))=5) ORDER BY Luogo;"
    ma adesso quando cerco di recuperare i cmpi da cui ho tolto gli alias la pagina restituisce:
    Tipo di errore:
    ADODB.Recordset (0x800A0CC1)
    Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.

  5. #5
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Nessuna idea?

  6. #6
    brancolo nel buio come te

    codice:
    sql="SELECT Last(ID) AS ID, Luogo, Esercitazione, COUNT(montante) AS TotMontante, Last(montante) AS ultimo_montante, Last(ente) AS ente, Last(dataevento) AS dataevento, Last(totalemovimenti) AS totalemovimenti, Last(NomeMeseEstratto) AS NomeMeseEstratto, Last(IDMeseEstratto) AS IDMeseEstratto" &_
    
    " FROM tabella" &_
    " WHERE  (IDMeseEstratto=11 OR IDMeseEstratto=12 OR IDMeseEstratto=1 OR IDMeseEstratto=2 OR IDMeseEstratto=3 ) AND dataevento=#01/01/3000# AND totalemovimenti = 0 AND ente = 'ROSCIANO' AND Esercitazione = 'VITERBO' GROUP BY MONTANTE, Luogo, Esercitazione HAVING COUNT(MONTANTE) = 5 ORDER BY Luogo asc"

  7. #7
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Grazie per la buona compagnia, almeno questo...

    La cosa che mi manda in bestia è che se estrapolo questi records dalla tabella originale e li inserisco in una nuova tabella la stessa query funziona perfettamente sia in asp che in access... quindi non è un problema di query ma di fonte dati a questo punto o no?

  8. #8
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Ho individuato il problema nella fonte dati originale: i records in questione hanno nel campo IDMeseEstratto anche i mesi anteriori al mese di novembre (la query dovrebbe estrarre mese corrente -5), quindi 10-9-8-7-6-5-4-3-2 e 1.

    Quando ho eliminato dalla tabella originale tutti i records con IDMeseEstratto minore del mese di novembre l'estrazione ha funzionato.

    Adesso mi chiedo come trasformo tutto questo in ASP? nella tabella originale mi serve lo storico quindi anche i mesi anteriori al mese di novembre.

    Avete suggerimenti ? Grazie

  9. #9
    l'anno non ti può essere d'aiuto?

  10. #10
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da optime
    l'anno non ti può essere d'aiuto?
    Grazie Optime, si forse può essere d'aiuto ma in che modo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.