Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema join tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    44

    Problema join tabelle

    Salve a tutti, ho un grosso problema e non riesco a venirne a capo:

    Stò facendo una pagina asp che gestisce un'agenda di impegni. Questa pagina ricevendo una data da un'altra pagina asp deve estrarre tutti gli impegni di quel giorno come in questo esempio:

    ore - impegno

    8.00 -
    8.30 - Appuntemento col dott. rossi
    9.00 -
    9.30 -
    10.00 - Riunione aziendale
    10.30 -
    11.00 - Consegna lavoro Xy
    ecc.

    Per fare questo utilizzo un db access con due tabelle

    tabella orario
    campo idoregiorno di tipo contatore
    campo oregiorno in cui sono elencati tutti gli orari da visualizzare (8.00, 8.30, 9.00, 9.30 ecc.)

    tabella agenda
    campo idagenda di tipo contatore
    campo dataimpegno (dove è scritta la data dell'impegno)
    campo impegno (dove sono elencati gli impegni)
    campo orarioimpegno (dove è scritto a che ora è l'impegno)

    Per estrarre i dati nella forma dell'esempio che ho scritto prima ho usato la seguente istruzione

    sqlString = "SELECT orario.oregiorno, agenda.impegno, agenda.orarioimpegno FROM agenda right join orario on agenda.orarioimpegno=orario.oregiorno where agenda.dataimpegno=#"&oggi&"# or agenda.dataimpegno is null order by orario.oregiorno"


    Quando l'agenda è vuota funziona tutto alla perfezione e mi mette l'elenco degli orari e vicino le caselle vuote, quando invece inserisco un impegno (ad esempio per la giornata di domani alle ore 9.00) se gli passo come data domani va tutto bene e mi mette tutti gli orari e a quello delle ore 9.00 mi inserisce l'impegno, mentre se gli passo una qualsiasi altra data mi mette tutti gli orari tranne le ore 9.00 (che è l' orario in cui avevo inserito l'impegno di domani) e quindi mi scrive cosi':

    ore - impegno

    8.00
    8.30
    9.30
    10.00
    10.30
    11.00
    ecc.

    Dove sbaglio??
    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Passi il "domani" come data da un form o #date(+1)# ? Spesso quando ci sono le date prese da un form si hanno questo genere di errori.....

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    44
    Prima di tutto grazie per la risposta...
    Il punto è questo, la data la passo bene(il giorno che tira fuori dal db è quello giusto), solo che se io metto nel giorno X un appuntamento alle 9.00 quando richiamo il giorno X si vede tutto bene e alle 9 è presente l'appuntamento inserito, ma se invece richiamo i giorni y,z ,t ecc l'appuntamento del giorno X non si vede (giustamente) ma il guaio è che non mi fa vedere neanche l'orario 9.00 con vincino la casellina vuota.. e passa direttamente da 8.30 a 9.30.

    es.
    Data: giorno X (giorno in cui ho inserito l'appuntamento)

    8.00 vuoto
    8.30 vuoto
    9.00 riunione
    9.30 vuoto

    Data: giorno Y (non mi appare l'orario 9.00)

    8.00 vuoto
    8.30 vuoto
    9.30 vuoto


    Spero di essermi spiegato bene, perchè mi rendo conto che è difficile capirlo per chi legge e non vede la schermata.

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma su Access la query funziona bene?
    Non vorrei fosse sbagliata la right join...

    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    44
    Non sò come altro farla...non sono ferratissimo in meteria... dal basso della mia ignoranza, l'idea che mi sono fatto è questa: lui associa l'orario della giornata con l'orario dell'impegno in maniera corretta, solo che quando la data passata è diversa da quella del giorno dell'impegno, la query oltre a scartare l'impegno, mi scarta anche l'orario della giornata che invece dovrebbe comunque apparire.

    Per farla breve, mettiamo che io occupo tutte le mezzore della giornata di oggi con impegni,quando visualizza la pagina con la data di oggi mi visualizza correttamente la giornata di oggi con orari e impegni, mentre tutti gli altri giorni prima o dopo oggi mi fa sparire tutti gli orari.

    Es.
    visualizzazione giorno oggi

    8.00 riunione
    8.30 riunione 2
    9.00 lavoro
    ecc

    visualizzazione giorno diverso da oggi

    tutto vuoto!
    e invece mi dovrebbe apparire
    8.00 vuoto
    8.30 vuoto
    ecc.

    Detto questo però non ho idea di come cambiare la query!


  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prova anche la LEFT JOIN.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    44
    Ho provato, e mi fa sparire tutte le righe tranne quelle dove c'e' inserito l'impegno. quindi mi ritrovo solo

    9.00 impegno

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    44
    Ho risolto finalmente!!!

    Ho modificato la striga Sql in questa maniera: (Magari puo' essere di aiuto a qualcuno in futuro)

    sqlString = "SELECT orario.oregiorno, agenda.* FROM (select * from agenda where agenda.dataimpegno=#"&oggi&"#)agenda right join orario on agenda.orarioimpegno=orario.oregiorno where agenda.utente='"& Request.Cookies("utente") &"' or agenda.dataimpegno is null order by orario.oregiorno"


    Questa stringa qui -agenda.utente='"& Request.Cookies("utente")- l'ho aggiunta solo perchè l'agenda verrà utilizzata da piu' utenti e quindi deve visualizzare solo gli impegni di quell'utente.(L'avevo omessa nei post precedenti solo per semplificare il codice.)

    Grazie comunque a tutti per le risposte che mi avete dato.



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.