Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
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
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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
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 ...
Il nuovo OnePlus Nord 6 è vicino al debu...
Tesla svela i risultati del Q4: conferma...
Nuova rimodulazione da Fastweb: fino a 3...
La NVIDIA RTX 5090 potrebbe presto costa...
ASUS non produrrà più smar...
CoopVoce sta per lanciare il 5G: ecco qu...
Factorial, azienda di batterie allo stat...
Le specifiche fuori di testa della Yangw...
I numeri incredibili di Xiaomi: nel 2025...
In Cina è pronto il parco fotovol...
Neuralink accelera: produzione di massa ...
Starlink abbassa l'orbita di migliaia di...
Dal MIT una nuova batteria per auto elet...
Adam Mosseri parla di IA su Instagram: l...
Suonerie personalizzate e Tone Store: il...
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: 09:37.


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