Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Data e query per database

    Salve a tutti.
    Grazie a questo forum ho risolto molti problemi.
    Tempo fa ero riuscito grazie a utili suggerimenti a risolvere un problema.
    Da due giorni, e non riesco a capire perchè due script asp hanno smesso di funzionare.
    Ho un database access con il quale sto sviluppando un sistema di gestione on line di un almanacco di una squadra di calcio.
    Il problema che avevo risolto era il seguente.
    Avendo una tabella partite (tPartite) nel quale uno dei campi contiene la data dell'incontro (Data_Partita) estrapolare le ultime tre gare disputate e le prossime tre da disputare.
    Problema inizialmente risolto con questi script che da due giorni non unzionano piu'.
    Quello che dvrebbe darmi le ultime 3 gare disputate grazie al "<" mi segnala invece tre gare future saltando quella imminente.
    Quello che invece dovrebbe darmi le 3 gare future non da nè risultati ne errori.

    questi sono i due script che hanno smesso di fnzionare in modo corretto. Voi che ne dite? avete un perchè?


    questa estrapolava le ultime tre gare -----------------------------------

    <%
    Dim rs, strSQL, strConn
    oggi=Date()
    strSQL="SELECT TOP 3 * FROM tPartite WHERE Data_Partita <#"& oggi & "# ORDER BY Data_Partita desc"
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../../mdb-database/campionato.mdb")&";Persist Security Info=False"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open strSQL, strConn
    WHILE NOT rs.EOF AND NOT rs.BOF
    partita=rs("Partita")
    risultato=rs("Risultato")
    data=rs("Data_Partita")
    vis="<a href=partite_dati.asp?view=Display&ID="&rs("Partit a_ID")&">"&rs("Partita")&"</a>"
    response.write" " & vis & "" & risultato & "
    " & "del: " & data & "
    "
    rs.MoveNext()
    WEND
    rs.Close
    Set rs = Nothing

    Questo è invece lo script con stringa che estrapolava le tre gare future -------------


    <%
    Dim rs, strSQL, strConn
    oggi=Date()
    strSQL="SELECT TOP 3 * FROM tPartite WHERE Data_Partita >#"& oggi & "# ORDER BY Data_Partita"
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../../mdb-database/campionato.mdb")&";Persist Security Info=False"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open strSQL, strConn
    WHILE NOT rs.EOF AND NOT rs.BOF
    partita=rs("Partita")
    risultato=rs("Risultato")
    data=rs("Data_Partita")
    vis="<a href=partite_dati.asp?view=Display&ID="&rs("Partit a_ID")&">"&rs("Partita")&"</a>"
    response.write" " & vis & "" & risultato & "
    " & "del: " & data & "
    "
    rs.MoveNext()
    WEND
    rs.Close
    Set rs = Nothing
    %>

  2. #2
    Magari qualcuno ha un'idea su perchè lo script non funziona piu' correttamente o mi da un suggerimento per una query che faccia la stessa cosa ma in modo diverso...

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Come memorizzi la data nel campo data?
    Ti consiglio il formato yyyy-mm-dd in un campo testo di 10 caratteri.
    La prima query diventerà:

    codice:
    strSQL="SELECT TOP 3 * FROM tPartite WHERE Data_Partita <'"& oggi & "' ORDER BY Data_Partita desc"
    La seconda di conseguenza.

    Roby

  4. #4
    O!!! intanto grazie per la risposta...
    Uso access e il formato del campo (data/ora) è gg/mm/aaaa.
    Ho provato a inserire anche session.LCID = 1040

    Adesso provo con il tuo suggerimento.
    Quello che vorrei capire pero' è come è possibile che fino a ieri il tutto funzionava perfettamente.

  5. #5
    Non va.
    Non credo che il problema sia nel database.
    Il sistema funzionava e nel frattempo ho inserito nel database i dati di circa 1000 partite!!!.
    Ci sono forse troppi dati? uhmm non so

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Di regola il database ragiona all'inglese quindi nella forma mm/dd/yyyy
    Per tagliare la testa al toro puoi fare come ti ho suggerito.

    Roby

  7. #7
    Premesso che sono un grandissimo ignorante e mi diletto con asp solo per passare il tempo non credo che risolvere i problemi tagliando la testa al toro possa essrmi di aiuto.
    A me piacerebbe sapere perchè uno script e una stringa oggi funziona e domani no.
    Se il database è lo stesso e la stringa è la stessa l'unica cosa che è mutata è la data attuale.

    Credo che la strada da seguire sia quella di provare a dettaglaire la query magari su questa strada:
    sql="SELECT top 3 * FROM tPartite where (Data_Partita giorno+'/'+mese+'/'+anno > oggi)ORDER BY Data_Partita DESC"

    piu' o meno...

    :master: :master:
    che ne dici?

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) Può darsi che a marzo funzionava perché, ad esempio, il 27/03 non è mai mal interpretabile nemmeno in inglese mentre ora lo 06/04 in italiano è il 6 aprile mentre in inglese è il 4 giugno e quindi il controllo delle date non è più come te lo aspetti.
    2) Può essere che chi ti fa hosting abbia cambiato qualcosa sul server.
    3) Varie & eventuali

    Roby

  9. #9
    Sicuramente si tratta della prima ipotesi.
    Ti ringrazio per aver perso tempo con me.
    Voglio continuare a provare con le mie query strampalate o magari con una function esterna.
    Vedremo se un Homo Semi Sapiens vincerà su una Server Sapiens...
    :master:

  10. #10
    Se puo' tornare utile a qualcuno riporto la parte di query che risolve il problema della data:

    Nel mio database ho varie tabelle:
    Una di queste tyabelle (tCalendario) contiene vari campi con informazioni relative a eventi sportivi. ogni evento ha un campo Data con formato (gg/mm/aaaa)


    Per estrarre gli ultimi 3 eventi e quindi con data inferiore a quella attuale:

    current_year = year(now)
    current_month = month(now)
    current_day = day(now)
    current_date = current_year & "/" & current_month & "/" & current_day

    strSQL = "Select top 3 * from tCalendario where Data <#"& current_date & "# order by Data desc"


    qui invece si etraggono le 3 date successive a quella attuale:

    current_year = year(now)
    current_month = month(now)
    current_day = day(now)
    current_date = current_year & "/" & current_month & "/" & current_day

    strSQL = "Select top 3 * from tCalendario where Data >#"& current_date & "# order by Data"

    Grazie a tutti e Grazie a Roby_72!

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.