IIF, non IF
IIF, non IF
Con IIF mi sputaun:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in query expression '( IIF (INSTR(description,words)>0, 5, 0) + IIF (INSTR(title,words)>0, 5, 0) + IIF (INSTR(keywords,words)>0, 5, 0) IIF (INSTR(description,words)>0, 5, 0) + IIF (INSTR(title,words)>0, 5, 0) + IIF (INSTR(keywords,words)>0, 5, 0) IIF (INSTR(description,wor'.
/gettsearch.asp, line 90
alla 90:
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, cn
:master:
www.telefoninook.com
contenuti e risorse gratis per il tuo cellulare
fatti stampare la query a video e posta quella
edit: così ad occhio e croce secondo me hai fatto l'en plein di parole riservate![]()
xxx
Lo stavo facendo nel frattempo
così come postato il codice il primo ciclo non veniva valorizzato
allora ho modificato così:sql = sql &" IIF (INSTR(description,words)>0, 5, 0) + "
e il response é:sql = sql &" IIF (INSTR(description,'" & words & "')>0, 5, 0) + "
select ( IIF (INSTR(description,'pippo')>0, 5, 0) + IIF (INSTR(title,'pippo')>0, 5, 0) + IIF (INSTR(keywords,'pippo')>0, 5, 0) IIF (INSTR(description,'gioca')>0, 5, 0) + IIF (INSTR(title,'gioca')>0, 5, 0) + IIF (INSTR(keywords,'gioca')>0, 5, 0) IIF (INSTR(description,'tanto')>0, 5, 0) + IIF (INSTR(title,'tanto')>0, 5, 0) + IIF (INSTR(keywords,'tanto')>0, 5, 0) ) AS Rilevance from data where description = 'pippo gioca tanto' OR testopag = 'pippo gioca tanto' OR description like '%pippo%' or keywords like '%pippo%' or title like '%pippo%' or url like '%pippo%' or testopag like '%pippo%' OR description like '%gioca%' or keywords like '%gioca%' or title like '%gioca%' or url like '%gioca%' or testopag like '%gioca%' OR description like '%tanto%' or keywords like '%tanto%' or title like '%tanto%' or url like '%tanto%' or testopag like '%tanto%' ORDER by Rilevance DESC
...è en plein?
www.telefoninook.com
contenuti e risorse gratis per il tuo cellulare
![]()
![]()
:master:
![]()
![]()
![]()
![]()
www.telefoninook.com
contenuti e risorse gratis per il tuo cellulare
Se non sbaglio Mysql ha la funzione Match per fare queste cose, ma richiede uan tabella MyISam , credo che con access sia meglio preparare uan funzione con regular expression che conta le parole usando un record disconnesso per paginare...
quindi
1] prima si ottiene il record da normale recordset..
2 ] si elabora con la funzione (conta parole) e si ottiene un valore numerico
3 ] si aggiunge al record disconnesso...
4] si pagina..
un aiutino più concreto???![]()
www.telefoninook.com
contenuti e risorse gratis per il tuo cellulare
Originariamente inviato da puffetto
Lo stavo facendo nel frattempo
così come postato il codice il primo ciclo non veniva valorizzato
allora ho modificato così:
e il response é:
select ( IIF (INSTR(description,'pippo')>0, 5, 0) + IIF (INSTR(title,'pippo')>0, 5, 0) + IIF (INSTR(keywords,'pippo')>0, 5, 0) IIF (INSTR(description,'gioca')>0, 5, 0) + IIF (INSTR(title,'gioca')>0, 5, 0) + IIF (INSTR(keywords,'gioca')>0, 5, 0) IIF (INSTR(description,'tanto')>0, 5, 0) + IIF (INSTR(title,'tanto')>0, 5, 0) + IIF (INSTR(keywords,'tanto')>0, 5, 0) ) AS Rilevance from data where description = 'pippo gioca tanto' OR testopag = 'pippo gioca tanto' OR description like '%pippo%' or keywords like '%pippo%' or title like '%pippo%' or url like '%pippo%' or testopag like '%pippo%' OR description like '%gioca%' or keywords like '%gioca%' or title like '%gioca%' or url like '%gioca%' or testopag like '%gioca%' OR description like '%tanto%' or keywords like '%tanto%' or title like '%tanto%' or url like '%tanto%' or testopag like '%tanto%' ORDER by Rilevance DESC
...è en plein?Questa è la tua query semplicemente riscritta in un modo "più umano", dacci un'occhiata e vedrai cosa manca.codice:select ( IIF (INSTR(description,'pippo')>0, 5, 0) + IIF (INSTR(title,'pippo')>0, 5, 0) + IIF (INSTR(keywords,'pippo')>0, 5, 0) IIF (INSTR(description,'gioca')>0, 5, 0) + IIF (INSTR(title,'gioca')>0, 5, 0) + IIF (INSTR(keywords,'gioca')>0, 5, 0) IIF (INSTR(description,'tanto')>0, 5, 0) + IIF (INSTR(title,'tanto')>0, 5, 0) + IIF (INSTR(keywords,'tanto')>0, 5, 0) ) AS Rilevance from data where description = 'pippo gioca tanto' OR testopag = 'pippo gioca tanto' OR description like '%pippo%' or keywords like '%pippo%' or title like '%pippo%' or url like '%pippo%' or testopag like '%pippo%' OR description like '%gioca%' or keywords like '%gioca%' or title like '%gioca%' or url like '%gioca%' or testopag like '%gioca%' OR description like '%tanto%' or keywords like '%tanto%' or title like '%tanto%' or url like '%tanto%' or testopag like '%tanto%' ORDER by Rilevance DESC
Inoltre:
- quando parlavo di "en plein" di parole riservate mi riferivo al fatto che come nomi campi e tabelle hai usato delle parole che in access sono considerate "riservate". questo significa che per utilizzarle come nomi di campo (se proprio non ne puoi fare a meno..) devi racchiuderle tra parentesi quadre (vedi nel tuo caso ex. data, non sono sicuro su title, keywords, description, url ma non ci starei tranquillo).
- Nell'order by dell'esempio che ti ho fatto sopra io ho messo apposta order by 1 (primo campo) perché non puoi usare un alias nella clausola order by.
- queste due righe:
description = 'pippo gioca tanto' OR
testopag = 'pippo gioca tanto' OR
nella query non ti servono a nulla viste le altre clausole che hai messo.
![]()
xxx
L'unica cosa che sono riuscito a trovare e che nel ciclo dell'IIF non ho inserito tutti i campi .
ho ordinato come indicato da te by 1
ho fatto alcune prove ma il risultato sempre -
ora il responso è:
se inserisco solo una parola come elemento di ricerca es: pippo:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'select
(
IFF (INSTR(description,'pippo')>0, 5, 0) +
IFF (INSTR(keywords,'pippo')>0, 5, 0) +
IFF (INSTR(title,'pippo')>0, 5, 0) +
IFF (INSTR(url,'pippo')>0, 5, 0) +
IFF (INSTR(testopag,'pippo')>0, 5, 0)
) AS Rilevance
from data
where description = 'pippo' OR
description like '%pippo%' or
keywords like '%pippo%' or
title like '%pippo%' or
url like '%pippo%' or
testopag like '%pippo%'
ORDER by 1 DESC
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'IFF' in expression.
/search_prova.asp, line 37
alla 37:
rs.Open sql, cn
se invece i termini sono più di uno es: "viva pippo"
il responso è:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '( IFF (INSTR(description,'viva')>0, 5, 0) + IFF (INSTR(keywords,'viva')>0, 5, 0) + IFF (INSTR(title,'viva')>0, 5, 0) + IFF (INSTR(url,'viva')>0, 5, 0) + IFF (INSTR(testopag,'viva')>0, 5, 0) IFF (INSTR(description,'pippo')>0, 5, 0) + IFF (INSTR(keywords'.
/search_prova.asp, line 37
che fare?
www.telefoninook.com
contenuti e risorse gratis per il tuo cellulare
Azz, e quest'errore non ti suggerisce proprio niente?? un piccolo sforzo potresti anche farloOriginariamente inviato da puffetto
..
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'IFF' in expression.
...
che fare?![]()
xxx