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

    Select un pò "azzardata"

    Ciao a tutti e scusate il titolo, ma la domanda è un pò complessa :-(

    Ho una serie di dati, che devono essere estratti uno alla volta in base a delle priorità che gli detto io ovvero:

    - Data 1
    - Criterio 1
    - Data 2
    - Criterio 2
    - Data 3

    quindi mi deve tirare fuori un record che abbia Data 1 uguale alla data di oggi , se non me ne trova nessuno deve trovarmi i record che soddisfano il Criterio 1, se ancora non trova nulla mi deve trovare quelli con data 2 uguale alla data di ieri e così via....cosa si può fare ?

    In + inizialmente alcuni dati non sono presenti, quindi la Select mi va in errore, dato che i campi sul db (SQL) sono vuoti...
    Spero di essere stato chiaro...Grazie 1000
    - La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.

    - Se i fatti e la teoria non concordano, cambia i fatti

  2. #2
    se si tratta solo di un problema di sapere il numero di risultati usciti da una query sql esistono le proprietà del RecordSet RecordCount, la quale ti indica tale numero, oppure EOF che ti indica se ci sono record da leggere.

    per collegare il tutto usi una serie di if controllando che le query diano un risultato.

    Ciau!
    - Atari

  3. #3
    Non ho bisogno di sapere quanti record ci sono, ma mi deve tirare fuori un record che risponda alle mie specifiche.

    Io faccio "Select Top 1 * from tabella Where......"

    Come procedo ?

    grazie
    - La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.

    - Se i fatti e la teoria non concordano, cambia i fatti

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi avere dei criteri "finiti" non possono essere "infiniti".
    Il discorso "e così via...." non va bene.

    Roby

  5. #5
    Te gha rasun come dicono a Milano

    allora i criteri prioritari sono 4 e si basano su 4 campi del DB

    DATA E ORA
    VALORE
    DATA 2
    DATA 3

    la prima cosa che deve fare e pescare un dato che rispetti il primo criterio ovvero

    "Select Top 1 * From tabella where data = '"&data&"' and ora = '"&ora&"' "

    Se questa select non ha effetti, ovvero il REC.EOF = True, allora deve cercare per il secondo criterio (valore), presentandomi prima quelli con data oggi in base al valore(Alto, Medio,Basso) e poi quelli in data ieri.

    A questo punto se mi trova i dati me li deve presentare in questo modo:

    - prima tutti quelli di oggi con valore alto
    - poi quelli di ieri con valore alto
    - poi quelli di oggi con valore medio
    - poi quelli di ieri con valore medio
    - poi quelli di oggi con valore basso
    - e infine quelli di ieri con valore basso.

    Considerando che devo usare sempre la "Select TOP 1 *"

    spero di essere stato chiaro.
    Grazie ragazzi
    - La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.

    - Se i fatti e la teoria non concordano, cambia i fatti

  6. #6
    ciao,
    scusami continua a sfuggirmi il problema (pare che ti sia risposto da solo!) :

    1. Hai n criteri che esprimi tramite n query sql rappresentabili tramite n stringhe.
    2. Iteri su ogni stringa -> interrogazione al db, la quale ti produce al più un risultato.
    3. Se (if ~ then) questa lo produce lo visualizzi, altrimenti (else) continui ad iterare.
    4. Come fai a sapere se lo produce ? Ti sei risposto già : tramite la proprietà EOF.

    Esempio :
    codice:
    ' rappresenti i criteri tramite stringhe contenenti codice sql
    ReDim myArray(n)
    myArray(0) = "..." ' prima stringa sql
    myArray(1) = "..." ' seconda stringa sql
    ...
    myArray(n-1) = "..." ' ultima stringa sql
    
    ' connessione al db
    Set Conn = ...
    Conn.Open ...
    
    For I = 0 To UBound(myArray)
    Set RS = Conn.Execute(myArray(indice))
    If (NOT RS.EOF) Then ' e' presente un record
    %>
    qui visualizzi l'output
    <%
    End If
    Next
    
    Conn.Close
    Set Conn = Nothing
    Ciau!
    - Atari

  7. #7
    Be mi sarò anche risposto da solo , ma mi mancava giusto questo. Grazie 10000
    - La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.

    - Se i fatti e la teoria non concordano, cambia i fatti

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.