Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-02-2005, 18: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 08:57.
DarkSiDE è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2005, 16: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, 00: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, 08: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, 09: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 09:25.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2005, 13: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, 14: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, 16: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, 11: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, 11: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, 12: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, 12: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, 15: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, 15: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, 03: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, 09: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, 10: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, 12: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


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Instagram Plus arriva in Italia: cosa in...
XBOX: la nuova CEO non ha ancora le idee...
Intel non ha intenzione di abbandonare i...
La AI Mode sarà attiva di default...
Marvel's Wolverine non sarà un op...
Star Wars Zero Company esce ad agosto: n...
Bonus Decoder: fino al 70% di sconto con...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
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: 12:36.


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