Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [ACCESS/SQL]Join Where Between

    Salve Raga
    Sono anni che vi seguo, e fino ad oggi ho trovato tutti i vostri post molto esaustivi e completi. Vi spiego il mio problema: Lavoro in ambiente VB.Net ma questo poco c'entra(tanto per essere chiari), dovrei fare una query su tre tabelle (Partecipanti, Aggregazioni e Turnistica)contenute in uno stesso DB, la quale (query) dovrebbe estrarmi il nome e cognome da Partecipanti, il nome dell'Aggregazione, e tutti i campi contenuti in Turnistica, ma con una clausola (where) in base all'Aggregazione e (Between) in base all'orario della turnistica.

    Tabella Partecipanti
    ID
    ID_Aggregazione
    Cognome
    Nome
    Telefono

    Tabella Aggregazione
    ID
    Nome_Aggregazione
    Responsabile

    Tabella Turnistica
    ID
    Data_Inizio
    Data_Fine
    ID_Partecipanti
    ID_Aggregazione

    Ho scritto una query e come ben immaginate è errata(altrimenti non sarei qui a scrivere), ve la riporto:
    "SELECT Partecipanti.ID, Aggregazioni.Nome_Aggregazione, Aggregazioni.Responsabile, Turnistica.Data_Inizio, Turnistica.Data_Fine, Turnistica.Data_Txt, Turnistica.Ora_Txt, Partecipanti.Cognome, Partecipanti.Nome " & _
    "FROM Partecipanti INNER JOIN (Aggregazioni INNER JOIN Turnistica ON Aggregazioni.ID = Turnistica.ID_Aggregazione) ON Partecipanti.ID = Turnistica.ID_Partecipante Where Turnistica.ID_Aggregazione = " & Riferimento_Gruppo & _
    " AND Turnistica.Data_Inizio BETWEEN #" & Date1 & " 00:00:01" & "# AND #" & Date2 & " 23:59:00" & "# ORDER BY Turnistica.Data_Inizio"


    & Riferimento_Gruppo & è un intero
    & Date1 & " 00:00:01 e & Date2 & " 23:59:00 Sono la ricostruzione degli orari, e sono esatti...tanto per evitare discussioni sulla formattazione degli orari.

    Vi ringrazio Anticipatamente per l'aiuto

    Scusate avete ragione, mi da il messaggio di errore non appena passo il dataadapter al dataset lanciandomi questo errore: Nessun valore specificato per alcuni parametri necessari..

  2. #2

    Re: [ACCESS/SQL]Join Where Between

    Originariamente inviato da Golia.gianni
    ... Ho scritto una query e come ben immaginate è errata...
    che vuol dire? ti dà errore quando la esegui? non riporta il risultato che vorresti? quando la lanci il cane si mette ad abbaiare?

    facce sape'

  3. #3

    Re: Re: [ACCESS/SQL]Join Where Between

    Originariamente inviato da optime
    quando la lanci il cane si mette ad abbaiare?
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  4. #4
    Scusate avete ragione, mi da il messaggio di errore non appena passo il dataadapter al dataset lanciandomi questo errore: Nessun valore specificato per alcuni parametri necessari

  5. #5
    quindi la query è sbagliata; normalmente, in questi casi, i motivi sono:
    - nomi di campo errati
    - parametri vuoti
    - non corrispondenza tra tipo di campo e parametro (... WHERE Stato=ITALIA ... invece di ... WHERE Stato='ITALIA'...)

    è buona norma farsi stampare la stringa della query e controllarla (eventualmente postala)


  6. #6
    Ti ringrazio non appena ne esco fuori ti faccio sapere

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    Re: [ACCESS/SQL]Join Where Between

    Originariamente inviato da Golia.gianni
    & Date1 & " 00:00:01
    Date1 è una data in un DB Access

    Access ha solo il formato DataOra quindi quel Date1 presumibilmente è gia
    --- 12/12/2013 00:00:00
    se tu lo conocateni ti viene
    --- 12/12/2013 00:00:00 00:00:01


    Prova
    -- con DateAdd
    opure
    -- con la somma matematica brutale ( Date1 + 0.00001 )
    .

  8. #8
    Vi ringrazio delle risposte celeri....................

    purtroppo la concatenazione è fatta su due stringhe, il valore data dall'oggeto calendar la prendo e la formatto in inglese aggiungendo l'orario, di seguito la stringa SQL elaborata:

    SELECT Partecipanti.ID, Aggregazioni.Nome_Aggregazione, Aggregazioni.Responsabile, Turnistica.Data_Inizio, Turnistica.Data_Fine, Turnistica.Data_Txt, Turnistica.Ora_Txt, Partecipanti.Cognome, Partecipanti.Nome FROM Partecipanti INNER JOIN (Aggregazioni INNER JOIN Turnistica ON Aggregazioni.ID = Turnistica.ID_Aggregazione) ON Partecipanti.ID = Turnistica.ID_Partecipante Where Turnistica.ID_Aggregazione = 2 AND Turnistica.Data_Inizio >= #01/01/2013 00:00:00# AND Turnistica.Data_Inizio <= #05/14/2013 00:00:00# ORDER BY Turnistica.Data_Inizio;

    ho provato le due diverse sintassi BETWEEN e questa che ho riportato ma niente da fare.

    Provo a riempire un datareader e tira fuori sempre sto maledetto errore................

    codice che uso per il data reader:

    codice:
    Dim dread As OleDbDataReader 
    Dim Command As New OleDbCommand(StringaSQL, miaConn) 
    dread = Command.ExecuteReader

  9. #9
    prova a eseguire quella query direttamente in access

  10. #10
    Grazie
    Grazie optime, Grazie a tutti

    Era un errore di sintassi avevo il campo Aggregazioni.Responsabile con nessun valore, anche perchè nella query non mi serviva e non so che kazNo ce l'ho messo a fare.......quando uno è incompetente deve solo ke studiare..............................

    SELECT Partecipanti.ID, Aggregazioni.Nome_Aggregazione, Aggregazioni.Responsabile, Turnistica.Data_Inizio, Turnistica.Data_Fine, Turnistica.Data_Txt, Turnistica.Ora_Txt, Partecipanti.Cognome, Partecipanti.Nome FROM Partecipanti INNER JOIN (Aggregazioni INNER JOIN Turnistica ON Aggregazioni.ID = Turnistica.ID_Aggregazione) ON Partecipanti.ID = Turnistica.ID_Partecipante Where Turnistica.ID_Aggregazione = 2 AND Turnistica.Data_Inizio >= #01/01/2013 00:00:00# AND Turnistica.Data_Inizio <= #05/14/2013 00:00:00# ORDER BY Turnistica.Data_Inizio

    Per chi non sapesse cosa fa questa query lo posto ai posteri...........
    è un a doppia query Join tra la tabella Partecipanti, Aggregazioni e Turnistica.
    L'ho usata per controllare quante persone tra due certe date sono coinvolte in un dato evento e a quale Aggregazione/Gruppo queste persone fanno parte, al posto di:

    "AND Turnistica.Data_Inizio >= #01/01/2013 00:00:00# AND Turnistica.Data_Inizio <= #05/14/2013 00:00:00#"

    Potevo utilizzare anche:

    "AND Turnistica.Data_Inizio BETWEEN #01/01/2013 00:00:00# AND #01/01/2013 00:00:00#"

    Spero di essere stato chiaro.......................................
    Per chi capisce cosa ho scritto e pensa di saperlo esprimere meglio per favore non siate restii nelle spiegazioni.................

    Un Saluto

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.