Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-01-2007, 14:27   #1
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
[VB6-ADO-ACCESS]-Problema Stored Query E Operatore LIKE...

Il problema è semplicissimo all'apparenza... All'atto pratico invece...

Devo eseguire una query parametrica da VB, passando un parametro stringa ad una Stored Query di Access 2003 che utilizza l'operatore LIKE.
In pratica il RecordSet risultante deve contenere tutti i prodotti della tabella Prodotti, che cominciano con un numero imprecisato di caratteri stabiliti dall'utente...

Qui il codice del Criterio di Access su Nome_Prodotto :
Like [Input Iniziali Nome_Prodotto] & "*"

Faccio notare che ovviamente la query, lanciata da Access funziona perfettamente, e funziona allo stesso modo se il Criterio è :
Like [Input Iniziali Nome_Prodotto] + "*"
Oppure
Like [Input Iniziali Nome_Prodotto] & '*'
Oppure
Like [Input Iniziali Nome_Prodotto] + '*'

Qui invece il codice VB che chiama ed esegue la Stored Query :


...
...
Dim CMD As ADODB.Command
Set CMD = New ADODB.Command
With CMD
Set .ActiveConnection = dbConnection
.CommandText = nomeQuery
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(nomeCriterio, adVarChar, adParamInput, Len(valoreCriterio), valoreCriterio)
End With

Set RS = New ADODB.Recordset
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.CursorLocation = adUseClient
RS.Open CMD

MsgBox RS.RecordCount


Dopo l'operazione il Recordcount mi ritorna sempre '0' e ovviamente ogni successivo tentativo di leggere il Recordset produce un errore...

Faccio notare che il codice VB riguardo all'uso del Command è lo stesso medesimo di un'altra procedura che NON usa l'operatore LIKE di Access, ma cerca direttamente il Nome_Prodotto, e che FUNZIONA.

E' proprio l'operatore LIKE di Access che crea problemi ? Come risolvere ?
So benissimo che ci sono molti altri modi, come passare tutta la stringa della Select da VB6 ecc..., ma voglio cmq usare la query già costruita in Access, passandole un parametro.

Spero di essere stato abbastanza chiaro, e perdonate la lunghezza della domanda...

GRAZIE a chiunque abbia un idea !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 14:36   #2
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
se hai estrema necessità di usare quel sistema provo ad analizzare come mai il tuo codice sbaglia, altrimenti se è il risultato che ti interessa la soluzione ce l'ho già, fatta con query "già costruita" ma senza usare i parametri...ora vedo
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 14:44   #3
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da akyra
se hai estrema necessità di usare quel sistema provo ad analizzare come mai il tuo codice sbaglia, altrimenti se è il risultato che ti interessa la soluzione ce l'ho già, fatta con query "già costruita" ma senza usare i parametri...ora vedo
Ti ringrazio.
In effetti vorrei proprio usare questo metodo. Da VB6 avevo già risolto.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 16:00   #4
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
allora, il codice corretto è il seguente:
Codice:
Dim Cmd As ADODB.Command
Dim Param As ADODB.Parameter
Dim Rs As ADODB.Recordset

Set Cmd = New ADODB.Command
Cmd.ActiveConnection = CurrentProject.Connection
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "Query1"

Set Param = Cmd.CreateParameter("cercaNome", adVarChar, adParamInput, Len("pippo"))
Param.Value = "pippo"
Cmd.Parameters.Append Param
Set Rs = Cmd.Execute()

'due righe per testarne il corretto funzionamento:
Rs.MoveFirst
MsgBox "Il valore ritornato dalla ricerca è: " & Rs![Nome]
non che il tuo non sia corretto, ma non ho avuto tempo di analizzarlo, per cui non so dire se hai scritto qualcosa di errato, anche se a prima vista mi sembra sia giusto (scusa l'eccesso di zelo ma sono al lavoro per cui preferisco risolverli i problemi invece che cercare di capirli ). Comunque, cambia la query che esegue la ricerca creando un NUOVO CAMPO , nella query stessa, che ha come dati la seguente dicitura (il codice sottostante lo devi inserire nella testata "Campo", non in "Criterio"):
Codice:
Verifica: InStr(Left([Nome];Len([cercaNome]));[cercaNome])
[Nome] = campo su cui eseguire la ricerca (stringa).
[cercaNome] = PARAMETRO passato alla query.
come "Criterio" per questo nuovo campo, scrivi soltanto >0
In questo modo verrà creato un nuovo campo calcolato, denominato "Verifica", che potrà assumere valori interi >=0 a seconda che la stringa passata come argomento corrisponda all'inizio del campo in cui si sta cercando.

puoi cambiare i nomi di questi campi con i nomi, rispettivamente, del campo su cui devi fare la ricerca, e del parametro che la query accetta.

Ti posto anche un database di esempio su cui è implementato tutto il discorso.
Se ci son problemi chiedi pure.
(cerco di essere dettagliato in maniera quasi maniacali così da non far sorgere dubbi...)
Allegati
File Type: zip db1.zip (17.8 KB, 3 visite)
__________________

Ultima modifica di akyra : 31-01-2007 alle 16:04.
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 18:52   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Sì, in effetti è un escamotage piuttosto macchinoso per aggirare l'operatore LIKE che a quanto pare è proprio la causa dell'intoppo.

Ho provato a snellire un po' la tua soluzione:

1. Il mio codice VB ha un suo perchè in effetti :
Set RS = New ADODB.Recordset
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.CursorLocation = adUseClient
RS.Open CMD

Mi permette di modificare a piacere i parametri di RS PRIMA che lo stesso venga aperto, mentre la procedura
Set Rs = Cmd.Execute()
istanzia ed apre in un colpo solo e i parametri di default di RS non mi vanno bene...

2. Non ho creato nessun campo aggiuntivo, ma mi sono limitato ad aggiungere in "Campo" la tua stringa, ossia :
InStr(Left([Nome];Len([cercaNome]));[cercaNome])

- Checkbox "Mostra" NON selezionata.
- Criterio : >0

3. L'istruzione SQL risultante è molto pulita :
SELECT *
FROM T_Prodotti
WHERE (((InStr(Left([Nome_Prodotto],Len([Iniziali_NomeProd])),[Iniziali_NomeProd]))>0));


Funziona perfettamente in Access, e anche con il mio codice VB !

Ti ringrazio ancora per l'utile suggerimento , anche se resto un po' di stucco davanti ad una limitazione del genere... In pratica il LIKE di Access è inutilizzabile per via parametrica !

Ovviamente chiunque fosse interessato all'argomento, se ce la fa con LIKE, sarei proprio curioso di sapere COME !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2007, 01:36   #6
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
Quote:
Originariamente inviato da MarcoGG
2. Non ho creato nessun campo aggiuntivo, ma mi sono limitato ad aggiungere in "Campo" la tua stringa, ossia :
InStr(Left([Nome];Len([cercaNome]));[cercaNome])

- Checkbox "Mostra" NON selezionata.
- Criterio : >0
forse mi sono espresso male, ma era proprio quello che intendevo io, cioè che mettessi nell'espressione "Campo" l'istruzione che avevo fatto, in modo, appunto, di creare un nuovo campo calcolato nella query (non nella tabella di partenza, tanto per capirci).

Per quanto riguarda il resto, bisognerebbe un po' sbatterci su la testa per capire come mai il codice VB non riesce a far girare correttamente la query...in tutta sincerità, su due piedi, non lo saprei....ci dovrei ragionare...comunque se va bene lo stesso così, sono felice di esserti stato utile
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2007, 09:11   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da akyra
forse mi sono espresso male, ma era proprio quello che intendevo io, cioè che mettessi nell'espressione "Campo" l'istruzione che avevo fatto, in modo, appunto, di creare un nuovo campo calcolato nella query (non nella tabella di partenza, tanto per capirci).
No no, ti eri espresso bene.
Intendevo "Aggiungere un campo" nel senso dell'uso della "AS", e quindi ritrovarsi poi un Field aggiuntivo e inutile anche nel RS...
- Il tuo codice SQL era :
PARAMETERS cercaNome Text ( 255 );
SELECT Tabella1.Codice, Tabella1.Nome, InStr(Left([Nome],Len ([cercaNome])),[cercaNome]) AS Verifica FROM Tabella1
WHERE (((InStr(Left([Nome],Len([cercaNome])),[cercaNome]))>0));


Nessuno che sappia come farcela con LIKE ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v