Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: errore between????

  1. #1

    errore between????

    Salve a tutti,
    in una pagina asp, vorrei estrapolare i dati in base ad un intervallo di date inserite dall'utente tramite il form:
    <form id="form1" name="form1" method="get" action="stp_prezzi.asp">

    <input type="text" name="Search" id="Search" value="<%=Request.QueryString("Search")%>" />
    <input type="text" name="Search2" id="Search2" value="<%=Request.QueryString("Search2")%>" />
    <input type="submit" value="cerca" />
    </form>

    queste invece sono le righe di codice e la query

    Dim RsPrezzi_data1
    Dim RsPrezzi_data2
    RsPrezzi_data1 = Request.QueryString("Search")
    RsPrezzi_data2 = Request.QueryString("Search2")

    Set RsPrezzi_cmd = Server.CreateObject ("ADODB.Command")
    RsPrezzi_cmd.ActiveConnection = MM_CONN_STRING
    RsPrezzi_cmd.CommandText = "SELECT * FROM prezzi where [data] between #" & RsPrezzi_data1 & "# AND #" & RsPrezzi_data2 & "# ORDER BY [data] DESC"


    l'errore che mi restituisce è:
    Errore di sintassi nella data nell'espressione della query 'data between ## AND #'.
    /admin/prezzi/stp_prezzi.asp, line 24

    alla linea 24 c'è
    Set RsPrezzi = RsPrezzi_cmd.Execute


    chi mi può aiutare????

  2. #2
    RsPrezzi_data1 e RsPrezzi_data2 sono due date
    in sql la sintassi sarebbe quindi :
    SELECT * FROM prezzi where [data] between 'yyyyMMdd' and 'yyyyMMdd 23.59.59'

    dove
    yyyy = anno
    MM = mese
    dd = giorno

    devi fare in Modo che la data passata dall'utente sia in questo formato .
    OUTSHINE '84

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    prova cosi:
    Codice PHP:
    RsPrezzi_cmd.CommandText "SELECT * FROM prezzi where [data] between '#" RsPrezzi_data1 "#' AND '#" RsPrezzi_data2 "#' ORDER BY [data] DESC" 
    ho aggiunto l'apice '#data#', se non dovesse andare, specifica formato data utilizzato, db, tipo campo tabella (data/testo/memo)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Grazie per le risposte.

    Per Andrea:
    ho sostituito la riga come mi hai suggerito e la risposta è:
    "Tipi di dati non corrispondenti nell'espressione criterio.
    /admin/prezzi/stp_prezzi.asp, line 24"

    Per Outshine84:
    non credo che il problema sia il formato delle date, perchè l'errore arriva prima che si inseriscano le date per la ricerca. e poi facendo una prova con un solo valore di ricerca e mettendo nella query l'istruzione like funziona tutto.

    come posso risolvere??

    Grazie

  5. #5
    La query la fai prima che l'utente ti inserisca le date o dopo? Perchè in tal caso i due valori query string sarebbero nulli quindi ci sta che la query fallisca.
    OUTSHINE '84

  6. #6
    la query parte prima dell'inserimento. ma come dicevo prima, se imposto un solo campo di ricerca, la pagina viene visualizzata con tutti i record persenti nel db, e quando inserisco il valore viene rieseguita la query e filtrati i dati.

    il problema è con due date!!!

  7. #7
    è che la query col like va anche se rimangono solo i due ## senza testo in mezzo ... invece il between ...and invece ti darà smepre errore ... Secondo me dovresti diversificare le query nel caso che le date siano o meno state inserite anche solo con un semplice if sulla query.
    Se non ci sono selezioni tutti senza parametri, in caso contrario col between /and
    OUTSHINE '84

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    data1 = "mm/gg/aaaa"
    data2 = "mm/gg/aaaa"


    RsPrezzi_cmd.CommandText = "SELECT * FROM prezzi where [data] >= '"&data1&"' and [data] <= '"&data2&"' ORDER BY [data] DESC"
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  9. #9
    Grazie Outshine84
    ho risolto con un if, come dicevi tu!

    Funziona tutto bene.

    L'unico problema è che inserisco una data errata tipo 31/11/2009 logicamente va in errore , come posso gestirlo.

    Tipo di errore:
    Microsoft Office Access Database Engine (0x80040E07)
    Errore di sintassi nella data nell'espressione della query '[data] between #01/01/2010# AND #31/11/2010'.
    /admin/prezzi/stp_prezzi.asp, line 33

  10. #10
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    metti un controllo ..

    Response.Write IsDate("January 13, 2003") ' Prints True
    Response.Write IsDate(#1/13/03#) ' Prints True
    Response.Write IsDate("This is not a date") ' Prints False
    Response.Write IsDate("10:55") ' Prints True
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

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.