Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-02-2005, 19:00   #1
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
[vb+access] query annidata

Codice:
sSql = sSql & "INSERT INTO scheda (cliente, giorno, esercizio)" & vbCrLf
sSql = sSql & "VALUES ('" & clienteA & "'+ SELECT giorno, esercizio FROM scheda where scheda.cliente='" & clienteDA & "')" & vbCrLf

mi sapete dire perchè non mi funziona? la query interna funziona perfettamente, credo che sia il concatenamento che non va


grazie
__________________
Non farò mai più affari con khalhell, 4HwGenXX.

Ultima modifica di DarkSiDE : 17-02-2005 alle 09:57.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2005, 17:40   #2
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
qualcuno mi può aiutare?
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 01:56   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Stampa la query già completata di tutti i campi su un file di testo o su una text box e verifica che funzioni veramente in Access...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 09:39   #4
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
Quote:
Originariamente inviato da cionci
Stampa la query già completata di tutti i campi su un file di testo o su una text box e verifica che funzioni veramente in Access...

una query funziona, il problema è nella "insert", precisamente credo sia il concatenamento che non va

Codice:
sSql = sSql & "VALUES ('" & clienteA & "'+
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 10:22   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Eh sì...devi emttere uno spazio alla fine della prima o all'inzio della seconda stringa...senza vbCrLf...prova così...

Inoltre non capisco a che serve mettere una SELECT dentro VALUES...sinceramente non l'ho mai fatto...

Ultima modifica di cionci : 18-02-2005 alle 10:25.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 14:14   #6
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
Quote:
Originariamente inviato da cionci
Eh sì...devi emttere uno spazio alla fine della prima o all'inzio della seconda stringa...senza vbCrLf...prova così...

Inoltre non capisco a che serve mettere una SELECT dentro VALUES...sinceramente non l'ho mai fatto...
meglio un ciclo?
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 15:10   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da DarkSiDE
meglio un ciclo?
Più che altro quello che mi domando è se funziona davvero
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 17:54   #8
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
Quote:
Originariamente inviato da cionci
Più che altro quello che mi domando è se funziona davvero

di funzionare funziona, io non conosco quali potrebbero esserele alternative
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 12:00   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi fai un esempio di una query di questo tipo completa (con tutti i parametri valorizzati) ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 12:41   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi spieghi quanti record vorresti aggiungere con quella query ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 13:02   #11
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
L'idea è giusta, ma forse c'è un errore, per fare una query di quel tipo tu devi dare alla select gli STESSI IDENTICI campi che hai messo nella insert... se nn dico una cacchiata, tu li hai messo un parametro fisso ed una select da 2 valori... nn credo che questo piaccia molto sai al database!


Secondo me l'unica maniera è fregare la query, danto un parametro fisso, ma già dentro alla query, nn fuori (come avevi fatto te), così in questa maniera lui crea la sottoquery identica ai campi che ti serve per la insert!


Prova a mettere questa:

Codice:
    sSql = sSql & "INSERT INTO scheda (cliente, giorno, esercizio)" & vbCrLf
    sSql = sSql & "VALUES (SELECT '" & clienteA & "' as cliente, giorno, esercizio FROM scheda where scheda.cliente='" & clienteDA & "')" & vbCrLf
Il risultato della variabile da passare sarà questo:
(nella mia prova cliente A e cliente DA valgono rispettivamente '123' e '456'

Codice:
INSERT INTO scheda (cliente, giorno, esercizio)
VALUES (SELECT '123' as cliente, giorno, esercizio FROM scheda where scheda.cliente='456')
Così facendo, ti potreggi anche dal problema che a volte potresti tirare fuori una query maggiore di una riga!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!"
A. Einstein
matpez è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 13:06   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da matpez
Così facendo, ti potreggi anche dal problema che a volte potresti tirare fuori una query maggiore di una riga!
Infatti...come ha scritto lui dovrebbe funziona solo su una riga e fa un concatenamento fra stringhe...quindi riempie un solo campo (di conseguenza la query è errata perchè ne aveva specificati 3 nella INSERT), ma bisogna capire per bene quello che ha intenzione di fare...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 16:22   #13
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
Quote:
Originariamente inviato da cionci
Infatti...come ha scritto lui dovrebbe funziona solo su una riga e fa un concatenamento fra stringhe...quindi riempie un solo campo (di conseguenza la query è errata perchè ne aveva specificati 3 nella INSERT), ma bisogna capire per bene quello che ha intenzione di fare...


Non avevo considerato la possibilità che la query potesse restituire più righe, ecco l'errore

non capisco perchè mi ha consigliato l''"as"

cmq visto che avevo fretta di risolvere, ho fatto con un ciclo


Codice:
   
    sFile = App.Path & "\db1.mdb"
    Set cn = New ADODB.Connection
    Set cn1 = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sFile
    cn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sFile
    cn.Open
    'insert into tabella2 select * from tabella1 where condizione
    sSql = ""
    sSql = "delete FROM Scheda WHERE Cliente='" & clienteA & "'"
    cn.Execute sSql
    
    sSql = "SELECT * FROM Scheda WHERE Cliente='" & clienteDA & "'"
    Set rs = cn.Execute(sSql)
    While Not (rs.EOF)
        cn1.Open
        sSql1 = ""
        sSql1 = "INSERT INTO Scheda" & vbCrLf
        sSql1 = sSql1 & "VALUES ('" & rs("Giorno") & "','" & rs("Esercizio") & "','" & rs("Ripetizioni") & "','" & rs("Note") & "','" & clienteA & "','" & rs("posizione") & "')"
        cn1.Execute sSql1
        cn1.Close
        rs.MoveNext
    Wend
   
    sSql = "SELECT giorno, esercizio, ripetizioni, note, posizione FROM scheda where scheda.cliente='" & clienteDA & "'" & vbCrLf
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2005, 16:26   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non importa fare un query per ogni ciclo...puoi fare uan cosa del genere:

INSERT INTO NomeTabella (Pippo, Pluto, Paperino)
VALUES (('1', '2', '3'), ('4', '5', '6'), ('7', '8', '9'));

In pratica ti componi la query durante il ciclo...e poi vai afare l'insert dopo il ciclo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2005, 04:14   #15
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
Ma scusa, ma se tanto il tuo campo clienteA è sempre fisso, come mai nn hai usato quella tecnica che ti ho suggerito? ti risparmiavi il ciclo
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!"
A. Einstein
matpez è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2005, 10:52   #16
DarkSiDE
Senior Member
 
L'Avatar di DarkSiDE
 
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
Quote:
Originariamente inviato da cionci
Non importa fare un query per ogni ciclo...puoi fare uan cosa del genere:

INSERT INTO NomeTabella (Pippo, Pluto, Paperino)
VALUES (('1', '2', '3'), ('4', '5', '6'), ('7', '8', '9'));

In pratica ti componi la query durante il ciclo...e poi vai afare l'insert dopo il ciclo...

già,non ci avevo pensato, grazie mille,c'è da dire che quelle righe vengono richiamate molto raramente e per poche righe, quindi non mi sono posto il problema più di tanto


matpez se hai la pazienza di spiegarmi..non ho capito come funziona la tua query
__________________
Non farò mai più affari con khalhell, 4HwGenXX.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2005, 11:24   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Puoi passare una SELECT anche alla INSERT INTO... In questo modo i risultati della SELECT verranno immessi nella tabella...

http://msdn.microsoft.com/library/de.../D2/S5A32B.asp
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2005, 13:33   #18
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
Come ti ho già accennato io e cionci ti ha dato il link, se tu vuoi fare una query di quel tipo, cioè una INSERT che richiama una SELECT la puoi fare benissimo ma con un unica particolarità: tutti i campi della insert devono essere i campi della select!

Se tu noti, nella tua prima query che hai postato, metti un campo fisso (preso da una variabile) e una select (che richiama 2 valori), questo nn è possibile, perchè come detto, tu nella select devi richiamare gli stessi campi della insert, non solo 2 come hai fatto.
In più nasce un secondario problema, (dico secondario perchè già in partenza è sbagliato il metodo che hai usato tu) cioè che la select tiri fuori più di un record, a questo punto proprio sarebbe sbagliato.

Per "fregare" la query, c'è un sistema che è molto usato in questi casi, proprio quando hai un parametro fisso e dei campi riciamati da una select; il trucchetto è proprio quello che ti avevo postato io. Tutto sta nel dire che il tuo campo "cliente" (ched ate era un fisso), lo mettiamo direttamente dentro alal select, in questa maniera:
Codice:
SELECT 'matteo' as cliente
naturalmente matteo è il contenuto della tua variabile, il resto della select si compone giustamente come avevi fatto te. A qeusto punto la select annidata alla insert prenderà una cosa di questo tipo:

matteo 10/10/2004 abcd
matteo 15/10/2004 efgh
matteo 18/10/2004 ilmn

cioè mettendo fisso il cliente.


Se nn ti è ancora molto chiaro, prova in sql a fare una query qlc e poi alla fine metti appunto questo: SELECT ......, 'matteo' as cliente ; e vedrai che ti tira fuori tutto quello che tu vuoi ma anche una riga con scritto sempre "matteo".


Se tu prendi la query che nn hai capito nel mio post, utilizza questo modo, questo ti risparmia tempo e velocità, perchè un for è più lento rispetto ad una query di questo tipo.

Spero di averti chiarito le idee
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!"
A. Einstein
matpez è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Gemini può usare i tuoi dati priv...
OPPO lancia in Italia la serie Reno15: n...
Stazione Spaziale Internazionale: rientr...
Forza Horizon 6: spunta la possibile dat...
Oral-B iO: sconti pazzeschi su spazzolin...
Intel Core Ultra 200 Plus: l'azienda pro...
Thinking Machines: la startup di Mira Mu...
Coalizione di gruppi di tutela chiede a ...
Reprompt è l'attacco invisibile s...
Robot aspirapolvere ECOVACS DEEBOT N20 P...
Batteria a stato solido: tra tre mesi Do...
iPhone 17 Pro in forte sconto su Amazon:...
Apple Studio Display finalmente in offer...
OpenAI sfida Google e lancia ChatGPT Tra...
Attenti ai commenti LinkedIn: come ricon...
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: 13:01.


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