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

    motore: problema di logica?

    Ciao a tutti,
    uso questo codice per un motore che cerca una parola o più tra le notizie:
    codice:
    chiave = "Musica"
    Rs_newsmusicali.Source = "SELECT * FROM Tabnotizie WHERE "
    
    For x = 0 To UBound(arrStringa)
    
    Rs_newsmusicali.Source = Rs_newsmusicali.Source & "Titolo LIKE '%" & arrStringa(x) & "%' OR Sottotitolo LIKE '%" & arrStringa(x) & "%' OR Testo LIKE '%" & arrStringa(x) & "%'"
    
    
    If x < UBound(arrStringa) Then
    Rs_newsmusicali.Source = Rs_newsmusicali.Source & " AND "
    End If
    
    Next
    
    Rs_newsmusicali.Source = Rs_newsmusicali.Source & " AND Categoria LIKE '"&chiave&"' ORDER BY Data DESC"
    Vorrei che cercasse solo tra le notizie della categoria Musica, invece ne trova di ogni Categoria.
    Immagino sia un problema di logica (troppi AND ), ma non riesco a capire come risolvere.
    Grazie in anticipo.
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

  2. #2
    non sono troppi AND, ma troppi OR! Metti la sequenza di OR tra parentesi, del tipo

    SELECT campi FROM tabella WHERE (xxx OR yyy OR zzz) AND aaa AND bbb

  3. #3
    Opppsss...
    Grazie mille.

    Una curiosità: se l'utente cerca "canzone rock" ad esempio, la stringa viene così:
    SELECT campi FROM tabella WHERE (Titolo LIKE 'canzone' OR Sottotitolo LIKE 'canzone' OR Corpo LIKE 'canzone') AND (Titolo LIKE 'rock' OR Sottotitolo LIKE 'rock' OR Corpo LIKE 'rock') AND Categoria = 'Musica' ORDER BY Data DESC

    In questo modo trova solo news di musica che abbiano contemporaneamente entrambe le parole, no?

    Così invece:
    SELECT campi FROM tabella WHERE (Titolo LIKE 'canzone' OR Sottotitolo LIKE 'canzone' OR Corpo LIKE 'canzone') OR (Titolo LIKE 'rock' OR Sottotitolo LIKE 'rock' OR Corpo LIKE 'rock') AND Categoria = 'Musica' ORDER BY Data DESC

    troverebbe tutte le news di musica che abbiano almeno una delle due parole, giusto?
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

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.