Newsgroup: it.comp.appl.access
Titolo: [2010] query: filtrare dati con carattere jolly

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 funziona: eseguendo la query non vedo più ABCD e ABEF ma solo AB*
 
viene da pensare che sia "mal collocato" l'asterisco
 
inoltre se SEMPRE estrai per le prime (due ?) lettere 
si può usare un criterio left("elencomio";2) ="AB" (o quel che è)

Salve,
 
Giorgiodaprato ha scritto:

Non capisco la descrizione del problema. Per questo solo una obiezione:
 
Con un criterio che include una funzione stringa come Left() non è più 
possibile di usare un eventuale indice sul campo. Con Like "AB*" invece 
sì. Potrebbe fare una grande differenza nella prestazione.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 
 
per Karl:
spero di essere stato più chiaro con la descrizione sopra :)


 
 
p.s.
ho provato anche mettendo Like prima del valore Criteria:
 
Like [Forms]![MENU]![ElencoDIST]
 
ma non funziona: non trova i record (che ci sono, una dozzina) e non mi 
accoda nulla alla tabella (vuota) di  destinazione


 
 
penso che con la insert si possa essere nella situazione di utilizzo di una query parametrica, questione presente anche nel 3D "quasi in corso"
 
https://groups.google.com/forum/#!topic/it.comp.appl.access/qNhRPQa07rs
 
 
e quindi dover utilizzare eval() oppure la dichiarazione preventiva dei parametri
 
altra possibilità: DUE query in sequenza ?
la queryInsert ha come origine la querySelect dimostratasi funzionante
ma questo vale se puoi "adoperare" query salvate 
(docmd.openquery queryInsert)
 

 
 
allora, forse ci siamo: invece di usare la query fatta venti anni fa dal 
programmatore che ora cerco di sostituire, ho preparato una query "al volo" 
inserendo i valori che mi servono:
 
Dim SQLcommand As String
 
    ' GB 27.03.2018
    SQLcommand = "INSERT INTO _DIST_DELIVERED_TMP ( Y, M, DIST, MAN, 
QTY_DEL, VALUE_DEL, QTY_TOBEDEL, VALUE_TOBEDEL ) "
    SQLcommand = SQLcommand + "SELECT Year([ManInvoiceDate]) AS Y, 
Month([ManInvoiceDate]) AS M, TOrderConfirmationProduct.Dist, 
TOrderConfirmationProduct.Man, Sum(TOrderCompletion.QtyDelivered) AS 
QTY_DEL, Sum(TOrderCompletion.TotEuro) AS VALUE_DEL, 0 AS Espr1, 0 AS Espr2 
"
    SQLcommand = SQLcommand + "FROM (TOrderConfirmation INNER JOIN 
TOrderConfirmationProduct ON TOrderConfirmation.LinkToOCProduct = 
TOrderConfirmationProduct.LinkToOrderConfirmation) INNER JOIN 
TOrderCompletion ON TOrderConfirmationProduct.LinkToOrderCompletion = 
TOrderCompletion.LinkToOCProduct "
    SQLcommand = SQLcommand + "GROUP BY Year([ManInvoiceDate]), 
Month([ManInvoiceDate]), TOrderConfirmationProduct.Dist, 
TOrderConfirmationProduct.Man, 0, 0 "
    SQLcommand = SQLcommand + "HAVING (((Year([ManInvoiceDate]))=" + 
Str([Forms]![MENU]![RIFYEAR]) + ") AND ((TOrderConfirmationProduct.Dist) 
Like " + Chr(34) + [Forms]![MENU]![ElencoDIST] + Chr(34) + ")) OR 
(((Year([ManInvoiceDate]))=" + Str([Forms]![MENU]![RIFYEAR] - 1) + ") AND 
((TOrderConfirmationProduct.Dist) Like " + Chr(34) + 
[Forms]![MENU]![ElencoDIST] + Chr(34) + ")); "
 
    DoCmd.RunSQL SQLcommand
 
 
Morale: funziona :)
 
Adesso vedo di sistemare anche le altre millemila :(
 
...e grazie, neh ;)
