Newsgroup: it.comp.lang.visual-basic
Titolo: Help proprietà Filter di ADO

Ciao a tutti,
ho controllato la guida ma non ho trovato nulla.
E' possibile usare la filter con caratteri speciali diversi da "*" "%" ?
Mi servirebbe usare _ per indicare un qualsiasi carattere in quella
posizione
sSearch="PIPPO__PLUTO%"
Rs.Filter = "CODARTICOL LIKE " & sSearch
Es. se ho
PIPPO11PLUTO
PIPPO11PLUTOaltro
PIPPO55PLUTOaltro
Ma non vorrei
PIPPOPLUTOaltro
ecc.
Insomma l'equivalente che con una normale select funziona.
Mi pare funzioni solo "%" e se lo metto solo una volta.
-- 
DBMS Firebird
VB6 + Ado

Andrea [Work] ha scritto:

Hai provato a vedere se con una SELECT diretta funziona...?
Di certo non usare "*"
@Alex

 Di certo non usare "*"
Sisi con la select diretta nessun problema, č solo che in questo specifico
caso mi faceva comodo il .filter, perchč altrimenti dovrei fare un 20/50
select singole. Per questo preferivo prendermi tutti i righi subito e usare
la filter.
Per ora ho filtrato per 'PIPPO%' invece di 'PIPPO__PLUTO%' e per come serve
al cliente non ci saranno problemi, ma se uno ha configurato i codici
articolo diversamente non andrebbe piů.


1000"
Set Miors=FiltraRec(MIOFILTRO)
public function FiltraRec(mioFiltro as string) as Adodb.Recordset
parsing opportuno del tuo filtro...puoi anche inventarti un tuo linguaggio
Diego lo usava per far interrogare i db ai suoi utonti in italiano
Alla fine che hai?
La stringa SQL
filtrarec=ApreRecordset(StringSQL)
se non vuoi questa soluzione
fai
dim DumRS as adodb.recordset
DumRS=Aprerecordset
If dumRs.bof
	 genera quelloc he vuoi fai quello che vuoi
else
 	set FiltraRec=dumRS
end if
end function
Insomma l'idea č questa....molto piů comoda di un filter!

 Insomma l'idea è questa....molto più comoda di un filter!
Concordo.
Anche perchè, a mio avviso, lavorando con un DB_Server con Recordset
non disconnessi come con .NET è probabile riuscire ad ottimizzare
meglio l'accesso stesso ed il traffico in rete.
@Alex

 Insomma l'idea è questa....molto più comoda di un filter!
Il fatto è che con le select successive sono molto più lento (22 sec.
contro 10 sec.).
Con la filter mi prendo tutti i righi di DBase per quell'articolo e li
filtro poi, con la select prendo rigo rigo.
  sSQLNeutroDB = _
    "SELECT
A.CODARTICOL,DB.NARTBASE,DB.IDDBASE,DB.NART,DB.QTA,DB.CODDB,DB.CODLAVO,DB.DESCDB,DB.PROGDB
FROM FARTICOL A INNER JOIN FDBASE DB ON A.IDARTICOL=DB.NART AND
DB.NARTBASE= §IDART§ ORDER BY DB.PROGDB;"
[***** impiega 22 secondi *****]
'*Questo all'interno del do Loop*
sSQL = Replace(sSQLNeutroDB, "§IDART§", Rs("IDARTICOL").Value & " AND
A.CODARTICOL LIKE " & Clean(sCodArticolMask(NoNull(.Fields("CODARTICOL")),
False) & "%"))
RsAppo.Open sSQL
If Not RsAppo.EOF Then  
  .Fields(sColName).Value = RsAppo(sColName).Value
End If
RsAppo.Close
[***** impiega 10 secondi *****]
'*Questo prima del Do Loop*
sSQL = Replace(sSQLNeutroDB, "§IDART§", Rs("IDARTICOL").Value)
RsDB.Open sSQL, , adOpenStatic, adLockReadOnly  
'*Questo all'interno del do Loop*
RsDB.Filter = "CODARTICOL LIKE " &
Clean(Left$(NoNull(.Fields("CODARTICOL")), Val(NoNull(RsSet("MPINIZIO"))))
& "%")  
If Not RsDB.EOF Then  
  .Fields(sColName).Value = RsDB(sColName).Value
End If
RsDB.Filter = adFilterNone


 & "%")
Questo sopra funziona, ed è quello che mi tira fuori PIPPO%, io invece
volevo questa che mi tira fuori PIPPO____PLUTO%, ma non va con quel
bastardo di .filter.
Clean(sCodArticolMask(NoNull(.Fields("CODARTICOL")),
False) & "%"))
Se faccio un AdoCommand con come parametro il CodArticol LIKE Parametro
posso ottenere performance migliori? (ho visto che c'è la proprietà
.Prepared che dovrebbe servire a tale scopo).
Grazie
