Newsgroup: it.comp.lang.visual-basic
Titolo: Where ... "*" ALL

Ciao sto tentando di mettere una variabile in un WEHRE  del tipo:
---
Set RS = DB.OpenRecordset("SELECT COUNT(*) AS Quanti FROM TABELLA WHERE NOME
= '" & MyNome & "' AND Cognome = '" & MyCognome & "' ", dbOpenSnapshot)
---
che funziona perfettamente con dati esistenti... (non so solo se il
dbOpenSnapshot a cosa si riferisca... e se sia meghlio con senza o altro...)
Ma quale stringa dovrei mettere in MYCOGNOME o MYNOME al fine che mi trovi
tutto saltando l'opzione senza dover riscrivere la RS...?
Quattro casi:
MYNOME = "ALESSANDRO"
MYCOGNOME = "VOLTA"
oppure
MYNOME = "*"
MYCOGNOME = "VOLTA"
oppure
MYNOME = "ALESSANDRO"
MYCOGNOME = "*"
oppure
MYNOME = "*"
MYCOGNOME = "*"
Non ho trovato nemmeno nell'help un esempio... devo fare quattro query
ooppure c'e' un "jolly"?
ciao TNX!
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

 tutto saltando l'opzione senza dover riscrivere la RS...?
...
Potresti cambiare, mantenendo l'applicabilità, in questo modo:
...
WHERE NOME LIKE '" & MyNome & "' AND Cognome LIKE '" & MyCognome & "'"...
In questo modo se in MyNome e/o Cognome metti dei caratteri precisi ti
cercherà solo quelli (attento però a non usare i caratteri ?#*, vedi la
guida per LIKE), se metti * ti cercherà qualsiasi cosa, ovvero sarà come
dire ogni nome e/o cognome. Vantaggiosamente potresti passare, per esempio
in MyNome, "MAR*" e ti cercherà tutti quelli il cui nome inizia con "MAR" e
continua con qualsiasi numero di caratteri qualsiasi.

 WHERE NOME LIKE '" & MyNome & "' AND Cognome LIKE '" & MyCognome & "'"...
beh dato che dovrei creare dati fissi dovrebbe andare.... se riesco a creare
una LISTBOX come nel TR che ho appena fatto, lo blocco e non ci saranno
"intromissioni" di caratteri vari *%?...
Funzia!
GRAZIE!


> WHERE NOME LIKE '" & MyNome & "' AND Cognome LIKE '" & MyCognome & "'"...
rieccomi a rompere... azzz.... ma ora che mi funziona da dio...ci sto
godendo... ma vado piuttosto "in bianco"... non a causa  del non
funzionamento di F1 ma per miei limiti.
Cosa mi consigli di fare se, riferito alla linea WHERE... avessi una lista
di AND e LIKE che potrebbe essere da 1 a 20 volte?
Cioč trovare nella lista quanti CLAUDIO MARCO ANDREA LUCA MARCO GIOVANNI con
ad esempio una decina di cognomi...
Infatti traduco gli AND e LIKE dalla list BOX che ora creo e che puň variare
dal check che metto... e dal database cioč:
In un altro progetto avevo inserito un controllo che da 1 alla fine della
listbox se era checkato attaccava al WHERE un
... AND NOME_CAMPO LIKE VALORE_CHECKATO_IN_LIST
Ora in pratica ho cosě tradotto:
-------
Set RS = DB.OpenRecordset("SELECT COUNT(*) AS Quanti FROM TABELLA WHERE NOME
LIKE '" & mynome & "' AND Cognome LIKE '" & MyCognome & "' ",
dbOpenSnapshot)
-------
ma il "AND NOME LIKE ... o AND COGNOME LIKE...  potrebbero essere di piů,
quale soluzione "di costruzione" mi consiglieresti?
Inoltre non so ancora bene come mettere e dove mettere i risultati. Per ora
lavoro su un paio di textbox che mi danno il numero... ma sarebbe bello
avere un tabella, che comunque potrei costruire con delle textbox che poi
potrei stampare... boh... qui ogni consiglio... benvenga... č giŕ tanto che
riesca trovare il numero che cercavo!!! ma non vorrei complicare il lavroo
quando, con meno codice e l'indirizzo giusto di voi "PROFI!!!", lo potrei
accorciare...
CIAO GRAZIE e scusa la rottura...! :-(((
:-)))
ciao


 accorciare...
Direi che è un discorso da "progettare" prima: Vuoi davvero ottenere il
numero dei record con certi nomi _e_ certi cognomi? Ha senso? Non è forse il
caso di cercare per una singola coppia di nome e/o cognome?
Comunque, nel primo caso, se c'è almeno una scelta, ovvero una coppia di
nome e/o cognome selezionata, puoi precomporre una stringa del tipo:
sql="SELECT COUNT(*) AS Quanti FROM TABELLA WHERE "
Poi cicli per vedere i nomi e i cognomi selezionati (ma, domando, sono
sempre a coppie bel identificabili/parallele oppure può esserci un nome e 3
cognomi o viceversa? Vedi, i problemi sono progettuali, prima che di SQL) e,
trovata una coppia (qui si ipotizza in nome_corrente e cognome_corrente),
fai:
sql=sql & " (NOME LIKE '" & nome_corrente & "' AND Cognome LIKE '" &
cognome_corrente & "') OR "
e ricicli per la coppia nome/cognome successiva.
Alla fine, quando il ciclo ha termine, devi togliere l' " OR " finale con:
sql=left(sql,len(sql)-len(" OR "))
A questo punto la stringa sql dovrebbe essere del tipo:
"SELECT COUNT(*) AS Quanti FROM TABELLA WHERE
 (NOME LIKE 'nome_1' AND Cognome LIKE 'cognome_1') OR
 (NOME LIKE 'nome_2' AND Cognome LIKE 'cognome_2') OR
...
 (NOME LIKE 'nome_ultimo' AND Cognome LIKE 'cognome_ultimo')
ed esegui con:
Set RS = DB.OpenRecordset(sql, dbOpenDynaset)