Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    girando ho trovato come fare una select che considera la rilevanza della query
    Ho aggiunto questa funzione:

    function Rilevanza(QueRic,MyCampo)
    QueRic=replace(QueRic,"`","")
    QueRic=replace(QueRic,"'","")
    Qsql = "("
    Primo=true
    QArray = split(QueRic," ")
    for Qi = 0 to uBound(QArray)
    if Len(QArray(Qi))>3 then
    if Primo then
    Qsql = Qsql & "if(instr(["&MyCampo&"],'"&QArray(Qi)&"')=0,0,1)"
    Primo=false
    else
    Qsql = Qsql & "+" & "if(instr(["&MyCampo&"],'"&QArray(Qi)&"')=0,0,1)"
    end if
    end if
    next
    Qsql=Qsql&")"
    Rilevanza=Qsql
    end function

    se ad esempio devo cercare "pizzeria corsaro nero" la select risultante è la seguente:

    SELECT *, (if(instr([nome],'pizzeria')=0,0,1)+if(instr([nome],'corsaro')=0,0,1)+if(instr([nome],'nero')=0,0,1)) As relevante From MyTable where g_lat=43 and (nome LIKE '%pizzeria%' OR nome LIKE '%corsaro%' OR nome LIKE '%nero%' ) order by rilevante

    Ho provato con IIF, senza le quadre ... ma non funziona. Non mi da errore ma mi torna un recordset pieno di campi nulli.
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  2. #12
    dovrebbe essere IIF, non IF. se usi access, oc

  3. #13
    si con IIF è corretto.
    Ma non riesco a farla funzionare. Mi torna sempre questo errore
    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  4. #14
    il problema dovrebbe essere la ORDER BY RILEVANTE, visto che RILEVANTE non è un campo di tabella. prova a mettere l'istruzione IIF *prima dell'asterisco della SELECT * (quindi verrebbe SELECT IIF.... , * FROM table WHERE ... ORDER BY 1)

    lavoraci un po'

  5. #15
    infatti è proprio li. Se metto un altro campo dell'order funziona tutto e vedo in lista anche rOBJ("rilevante")

    ora tu dici di mettere le condizioni IIf prima della lista dei campi o dell' * ... ci provo
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  6. #16

  7. #17
    ... che botto!
    la query:

    SELECT (iif(InStr(nome,'corsaro')=0,0,1)+iif(InStr(nome,' nero')=0,0,1)), * AS RILEVANTE From MyTable where (nome LIKE '%corsaro%' OR nome LIKE '%nero%' ) order by RILEVANTE desc


    questo è l'errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

    ---------------------------------------------------------------------------------
    Cambiando ancora la query (AS RILEVANTE, * FROM)
    SELECT (iif(InStr(nome,'corsaro')=0,0,1)+iif(InStr(nome,' nero')=0,0,1)) AS RILEVANTE, * From MyTable where (nome LIKE '%corsaro%' OR nome LIKE '%nero%' ) order by RILEVANTE desc


    questo è l'errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  8. #18
    ORDER BY 1 L'HO LETTO DOPO ... MA NON CAMBIA L'ERRORE

    ... ops (le maiuscole)
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  9. #19
    bello bello funziona ... una pizza pagata!
    Grazie
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

  10. #20

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 © 2026 vBulletin Solutions, Inc. All rights reserved.