SQL e VisualBasic

Tutta l'informatica

SQL e VisualBasic

Messaggioda clros » mar gen 18, 2005 11:38 am

Ho notato che NON posso eseguire una semplice Query SQL da visual basic, se questa contiene degli asterischi nel criterio di estrazione dei dati.

Ad esempio la query :

SELECT *
FROM tabella1
WHERE ((tabella1.nome) = "*Claudio*");

La query funge bene da access, ma se la specifico nella proprietà RecordSource del controllo ADO che uso in VB, non succede niente.
E' possibile che l'SQL di Access non sia tanto standard?Eventualmente, come posso risolvere il problema?

Esistono guide su internet su SQL, possibilmente in italiano?
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Messaggioda electric_g » mar gen 18, 2005 1:24 pm

Se gli asterischi prima del nome "Claudio" servono come carattere jolly, devi usare il carattere %
Come uguaglianza per le parole l'espressione è LIKE

SELECT *
FROM tabella1
WHERE tabella1.nome LIKE '%Claudio%';

Qua c'è una guida di base all'SQL
http://www.html.it/sql/
Faso uebsait in piacap? su server apasi, asp su server uindou, cieseese, acatiemeelle, giavascrip, compatibii co tuti i brauser, Ecsplorer, Mozila, Fairfocs, Netscheip, Opera, uso databeis aces e maiesecuele. So drio imparare a usare linucs co Debian.
E so drio studire l'inglese...

Tradotto in veneto da bak

Immagine
Avatar utente
electric_g

Veterano
 
Messaggi: 198
Iscritto il: sab ott 18, 2003 11:46 am
Località: Parma

Messaggioda Andrew586 » mar gen 18, 2005 1:54 pm

Sql di access nn è quello standard universalmente riconosciuto, tuttavia non è molto dissimile... anzi...

Nel tuo caso:

ADO nn so bene come funzioni, con DAO mi basta impostare una stringa normale in vb e passarla al metodo openrecordset

Tipo:
Codice: Seleziona tutto
dim strSql as string
strSql=  ""
strSql=strSql & "SELECT *"
strSql=strSql & " FROM tabella1"
strSql=strSql & " WHERE tabella1.nome = 'Claudio'"
'con la Like invece
strSql=  ""
strSql=strSql & "SELECT *"
strSql=strSql & " FROM tabella1"
strSql=strSql & " WHERE tabella1.nome LIKE '*aud*'" 'cerca una sottostringa (aud) in tutta la tabella (nel campo nome)
set rs=db.OpenRecordset(strSql, dbOpenDynaset) 'creo il rs attraverso la query presente nella stringa.


Cmq ripeto, nn so ADO, ma in DAO (sia 3.51 che 3.6) è facile.
Taci donna... lascia che il folle esprima il suo giudizio...

Ma lo sapevi che un uomo che si chiama porte ha inventato un sistema operativo che si chiama finestre !?! ghgh

Onore ai NoConsole per tutto ci? che hanno fatto.
Avatar utente
Andrew586

Maestro
 
Messaggi: 489
Iscritto il: mar gen 28, 2003 1:50 pm
Località: hmm

Messaggioda Trix180 » mar gen 18, 2005 9:10 pm

In generale Ogni DB tende ad aggiungere quelli che vengono chiamati dialetti SQL, questo è vero sia per Oracle, SQL Server, Mysql, ...

Tu stai accedendo tramite ADO e DAO allo stesso DB (e penso sia un MDB),

una cosa non ho capito, forse perchè sono molto arrugginito su VB,
perchè usi record source ?

io mi ricordo che per lanciare un query, la procedura std era

cn.Open("blabla")
rs.Open("SELECT * FROM tabella", cn, 1)

o qualcosa di simile.
[Trix180]
God invented man, and man invented the metric system.

La guerra e' pace
La liberta' e' schiavitu'
L'ignoranza e' forza

la religione ? l'oppio del popolo.

Jane, da quando ti ho conosciuto faccio caso alle piccole cose delle vita, gli uccellini che cinguettano, la rugiada che si spande tra le foglie, i semafori...
[/Trix180]
Avatar utente
Trix180

Maestro
 
Messaggi: 453
Iscritto il: sab mar 27, 2004 7:46 pm
Località: Val Di Taro

Messaggioda Andrew586 » mer gen 19, 2005 2:39 pm

Me lo hanno insegato così, (rs=recordset) si può anche eseguire tramite metodo apposito una query già esistente in access, ma al momento nn ricordo come...

Per il resto io so usare dao, ado, essendo multiutente e interfacciata al web e quindi più complessa non l'ho ancora studiata.
Taci donna... lascia che il folle esprima il suo giudizio...

Ma lo sapevi che un uomo che si chiama porte ha inventato un sistema operativo che si chiama finestre !?! ghgh

Onore ai NoConsole per tutto ci? che hanno fatto.
Avatar utente
Andrew586

Maestro
 
Messaggi: 489
Iscritto il: mar gen 28, 2003 1:50 pm
Località: hmm

Messaggioda afxgroup » gio feb 24, 2005 6:56 pm

Molto dipende dal provider che si usa per aprire la connessione. Se si usa ODBC si hanno dei risultati, se si usa OLEDB altri, se si usa JET altri ancora.. :riflette:
Oddio ODBC e OLEDB dovrebbero avere risultati simili perchè ODBC è uno strato sopra OLEDB.

Ciauz
Elf.library.. a noi due....
The BUG Hunter.. +1..
AMIGAONE - SAM - MOANA - A1200 - A600 - A500 - C64
Avatar utente
afxgroup

Admin
 
Messaggi: 3647
Iscritto il: ven giu 11, 2004 9:49 am
Località: Taranto


Torna a Tecnologia, internet, coding

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti