29 messaggi dal 20 gennaio 2004
Qui mi pare che l'operatore AND non ne voglia sapere di funzionare,se passo un parametro vuoto per @search mi dovrebbe reatituire solo i valori per categoria invecie non restituisce nulla.
e anche l'ultimo parametro @search
e come non esistesse(cioè:
OR
Fornitori.Ragione_sociale LIKE '%' + @Search + '%
non restituisce nessun valore mentre con gli altri è ok, qualche accorgimento per passare una ricerca abbastanza precisa?


@CategoryId int,
@Search nvarchar(255)

)

AS
SELECT
Products.idFornitore,
Products.ProductId,
Products.ModelNumber,
Products.ModelName,
Products.UnitCost,
Products.Netto,
Products.Disponibilita,
Fornitori.Ragione_sociale ,
Products.Promo
FROM
Fornitori INNER JOIN
Products ON
Fornitori.IdFornitore = Products.idFornitore
WHERE
CategoryId = @CategoryId
AND
products.ModelNumber LIKE '%' + @Search + '%'
OR
products.ModelName LIKE '%' + @Search + '%'

OR
Fornitori.Ragione_sociale LIKE '%' + @Search + '%'


IF @@Rowcount > 0 BEGIN
e poi sotto cerco di passare con un parametro @categoryid a -1 quindi senza il suddetto parametro.

ciao grazie
prova a cambiare approccio così come è scritta non credo possa funzinare(non sono espertissimo di sql) in genre faccio così

IF (@Title <> '')
  BEGIN
    SET @SqlCondition = @SqlCondition + @Prefix + ' Title LIKE ''%' + CONVERT(nvarchar(30), REPLACE(@Title,'''','''''')) + '%'''
    SET @Prefix = ' AND '
  END


il frammento di codice fa parte di una storeprocedeure più grande

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
29 messaggi dal 20 gennaio 2004
Si ma non la capisco,

IF (@Title <> '')
BEGIN
SET @SqlCondition = @SqlCondition + @Prefix + ' Title LIKE ''%' + CONVERT(nvarchar(30), REPLACE(@Title,'''','''''')) + '%'''
SET @Prefix = ' AND '
END

ho cercato di applicarla ma @sqlcondition e @prefix sono i due parametri corrispondenti a CategoryId e Search? così a occhio mi pare che che quello che hai scritto sopra sia più che altro per concatenare i valori ma sicuramente dico una cazzata, puoi darmi solo qualche indicazione in più?
grazie ciao
esatto serve per concatenare porzioni di codice sql, è utile farlo quando i parametri di ricerca aumentano

se vuoi ti posto tutta la storeprocedure che utilizzo

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
29 messaggi dal 20 gennaio 2004
Ok, Se non tutta almeno attaccata a qualche blocco SELECT O Altro, in modo che capisca dove e come lavora, il mio problema principale è quello di passare l'intero + che la stringa visto che la vera differenza si nota quando si cerca di passare Il Parametro intero @CategoryID.
grazie ciao
ecco quà :) è propio tutta

nata da un articolo su devleap e il bellissimo libro di dino esposito
ciao marco
ALTER PROCEDURE sp_Image_Paging
@ImageID int = Null,
@GalleryID int = NULL,
@Description varchar(50) = '',
@PageSize int = 10,
@SortExpression varchar(100) = NULL,
@CurrentPage int = 1,
@RecordCount int OUTPUT
AS
  DECLARE @SqlStatement nvarchar(1000)
  DECLARE @SqlCondition nvarchar(1000)
  DECLARE @CustomColumn nvarchar(100)
  DECLARE @Prefix nvarchar(7)
  DECLARE @PrefixA nvarchar(7)
  DECLARE @SerchDateColumn nvarchar(100)
  SET @Prefix = ''
  SET @PrefixA = ''
  SET @SqlCondition = ''
  
  ------------------------------------------------------------------------------------------------------------------------------
  --                                  condizioni di ricerca                                                                   --
  ------------------------------------------------------------------------------------------------------------------------------
  --se ho il filtro sulla categoria
  IF (NOT @ImageID IS NULL)
  BEGIN
    SET @SqlCondition = @SqlCondition + @Prefix + ' ImageID = ' + CONVERT(nvarchar,@ImageID)
    SET @Prefix = ' AND '
  END
  --se ho il filtro sulla categoria
  IF (NOT @GalleryID IS NULL)
  BEGIN
    SET @SqlCondition = @SqlCondition + @Prefix + ' GalleryID = ' + CONVERT(nvarchar,@GalleryID)
    SET @Prefix = ' AND '
  END
  --filtro sul titolo
  IF (@Description <> '')
  BEGIN
    SET @SqlCondition = @SqlCondition + @Prefix + ' Name LIKE ''%' + CONVERT(nvarchar(30), REPLACE(@Description,'''','''''')) + '%'''
    SET @Prefix = ' AND '
  END
  
  
  
  ---------------------------------------------------------------------------------------------------------------------------------
  --                         imposta ordinamento                                                                                 --
  ---------------------------------------------------------------------------------------------------------------------------------  
  IF (@SortExpression  IS NULL)
  SET @CustomColumn  = 'ImageID'
    ELSE
  SET @CustomColumn  = 'CONVERT(nvarchar(100), ' + @SortExpression + ', 20)'
  -------------------------------------------------------------------------------------------------------------------------------
  IF (@SqlCondition <> '')
  SET @Prefix = ' WHERE '
  IF (@SqlCondition <> '')
  SET @PrefixA = ' AND '
  ----------------------------------------------------------------------------------------------------------------------------------
  --                          costruisce la query vera e propia                                    --
  ----------------------------------------------------------------------------------------------------------------------------------
  IF (@CurrentPage > 1)
  SET @SqlStatement = 'SELECT TOP ' + CONVERT(nvarchar, @PageSize) +
            ' * FROM Image_Image WHERE ImageID NOT IN
            (SELECT TOP ' + CONVERT(nvarchar, (@PageSize * (@CurrentPage - 1))) + ' ImageID FROM Image_Image ' + @Prefix + @SqlCondition  + ' ORDER BY ' + @CustomColumn + '  DESC)'
            + @PrefixA + @SqlCondition + ' ORDER BY ' + @CustomColumn + ' DESC'
  ELSE
  SET @SqlStatement ='SELECT TOP ' + CONVERT(nvarchar, @PageSize) + '
            * FROM Image_Image ' + @Prefix + @SqlCondition  + ' ORDER BY ' + @CustomColumn + ' DESC'    
  
  
  PRINT @SqlStatement
  
    
  EXEC sp_executesql @SqlStatement
  ----------------------------------------------------------------------------------------------------------------------------------
  --                             costruisco la query per contare gli item che rientrano nel criterio di riecerca                  --
  ----------------------------------------------------------------------------------------------------------------------------------
  SET @SqlStatement = 'SELECT @RC = Count(*) FROM Image_Image' + @Prefix + @SqlCondition
  
  EXEC sp_executesql @SqlStatement, N'@RC int OUTPUT', @RC = @RecordCount OUTPUT
  
  RETURN

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.