Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ricerca in database

  1. #1

    ricerca in database

    ciao a tutti,
    HO UTILIZZATO:

    codice:
    		 	set elencamare=conn.execute("select * from magcamare where (codice like '%"& ricerca &"%') or (descrizione like '%"& ricerca &"%') or (posizione like '%"& ricerca &"%') order by descrizione, codice asc")
    PER LA RICERCA NEL DB, ORA NEL CASO CHE VOGLIA RICERCARE ANCHE PIù PAROLE...COME FARE?

  2. #2
    Ora che il forum è funzionante al 100% leggendo i vecchi post sono riuscito a ricavare qualcosa.....
    Aproposito Un grazie ai mmoderatori che lavorano per noi...Complimeti con l'ultima manutenzione il forum è velocissimo... da paura....

    codice:
    Dim stmSQL, tmpSQL 
    stmSQL = "SELECT * FROM magcamare WHERE " 
    tmpSQL = "(descrizione LIKE " 
    
    'Suddividi la stringa da cercare 
    Dim Pos 
    Pos = 1 
    While Pos > 0 
    Pos = InStr(1, ricerca," ") 
    If Pos = 0 Then 
    'Ho trovato una sola parola nella stringa da ricercare 
    tmpSQL = tmpSQL & "'%" & ricerca & "%')" 
    Else 
    'Ci sono più parole, quindi concateno le istruzioni LIKE SQL 
    tmpSQL = tmpSQL & "'%" & Mid(ricerca,1,Pos) & "%' " & operatore & " Descrizione LIKE " 
    ricerca = Mid(ricerca,Pos+1,len(ricerca)) 
    End If 
    Wend 
    'Costruisco la stringa finale dell'istruzione SQL 
    stmSQL = stmSQL & tmpSQL 
    stmSQL = stmSQL & " order by descrizione, codice asc"
    ora la mia esigenza e di farla in tutti i campi della tab e non solo in descrizione.
    L'idea per velocizzare il tutto e di crearmi un array con i nomi dei campi e poi fare un ciclo sull'array.
    Qualcuno può darmi una mano...

    Grazie

  3. #3
    un altro passo in avanti....
    ho recuperato i campi di una tab con :

    codice:
    set rsC = Server.CreateObject("ADODB.Recordset")
    mag="magcamare"
    Set RsC = Conn.OpenSchema(4, Array(Empty, Empty, "" & mag))
    do while not rsC.eof			 
    strCampi= rsC("COLUMN_NAME")& "
    "			
    response.Write strCampi			
    rsC.moveNext
    loop
    rsC.Close
    Set rsC = Nothing
    ora devo inserirli in un array e poi modificare il codice per la rixcerca......un aiutino per favore....

  4. #4
    ragazzi.....mi sto incartando nel codice.... magari con un piccolo suggerimento..risolvo :master: :master:

    help me....

  5. #5
    ecco cosa ho creato...sembra funzionare....forse un pò faragginoso...
    se c'è qualcuno di buona volontà che ci da un occhio per snellirlo....
    grazie

    codice:
    Dim strCampi,x
    			set rsC = Server.CreateObject("ADODB.Recordset") ' estraggo i campi
    			mag = "magcamare"
    			Set RsC = Conn.OpenSchema(4, Array(Empty, Empty, "" & mag))
    			Dim arr_strCampi(15)
    			do while not rsC.eof
    				strCampi= rsC("COLUMN_NAME") ' metto i campi in un array
    				arr_strCampi(x) = strCampi
    				x=x+1
    				rsC.moveNext
    			loop
    			rsC.Close
    			Set rsC = Nothing
    			'Definisci l'istruzione SQL
    			Dim stmSQL, tmpSQL
    			If TipoDiRicerca1="fraseintera"  Then ' costruisco le stringhe sql per il caso frase intera
    				stmSQL = "SELECT * FROM magcamare WHERE "
    				for xti = 0 to x-1
    					tmpSQL = "(" & arr_strCampi(xti)&" LIKE "
    						if xti=x-1 then
    							tmpSQL = tmpSQL & "'%" & ricerca & "%')"
    						else
    							tmpSQL = tmpSQL & "'%" & ricerca & "%') or "
    						end if
    					stmSQL = stmSQL & tmpSQL 
    				next	
    			Elseif TipoDiRicerca1="or" then ' costruisco le stringhe sql per il caso almeno una parola
    				stmSQL = "SELECT * FROM magcamare WHERE "
    				ArrayParole = Split(Trim(ricerca), " ")
    				for xti = 0 to x-1
    					For ContaParoleDaCercare = 0 to UBound(ArrayParole)
    					tmpSQL = "(" & arr_strCampi(xti)&" LIKE "
    						if xti = x-1 and ContaParoleDaCercare = UBound(ArrayParole) then
    							tmpSQL = tmpSQL & "'%" & ArrayParole(ContaParoleDaCercare) & "%' )" 
    						else
    						   tmpSQL = tmpSQL & "'%" & ArrayParole(ContaParoleDaCercare) & "%') " & TipoDiRicerca1 & " " 
    						end if   	
    					stmSQL = stmSQL & tmpSQL
    					next
    				next		
    			Elseif TipoDiRicerca1="and" then ' costruisco le stringhe sql per il caso tutte le parole
    				stmSQL = "SELECT * FROM magcamare WHERE ("
    				ArrayParole = Split(Trim(ricerca), " ")
    				for xti = 0 to x-1
    					For ContaParoleDaCercare = 0 to UBound(ArrayParole)
    						tmpSQL =   arr_strCampi(xti)&" LIKE "
    							if xti = x-1 and ContaParoleDaCercare = UBound(ArrayParole) then
    								tmpSQL = tmpSQL & "'%" & ArrayParole(ContaParoleDaCercare) & "%' )" 
    							else
    								if ContaParoleDaCercare = UBound(ArrayParole) then 'tolgo l'operatore dall'ultima sql
    									tmpSQL = tmpSQL & "'%" & ArrayParole(ContaParoleDaCercare) & "%' ) or ( "
    								else
    									tmpSQL = tmpSQL & "'%" & ArrayParole(ContaParoleDaCercare) & "%' " & TipoDiRicerca1 & " " 
    								end if	
    							end if   	
    						stmSQL = stmSQL & tmpSQL
    					next
    				next		
    			End If					
    			'Costruisco la stringa finale dell'istruzione SQL
    			stmSQL = stmSQL & " order by descrizione, codice asc"  
    					'response.write  stmSQL
    					'response.End()
    		 	set elencamare=conn.execute(stmSQL)

  6. #6
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    ciao, ho trovato il codice con la ricerca mi spieghi come funziona, per favore?
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  7. #7
    COSA NON TI TORNA.....

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.