Preleva dati da query

Forum dedicato interamente a Microsoft Access

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Preleva dati da query

Messaggioda mazda91 » 06 nov 2017, 17:36

Ciao a tutti,
premessa per inquadrare il problema. E' solo un esercizio ma serve per capire.

In una MascheraOrdini
con un tasto avvio
la query QueryProdotti
che cerca nella
TabellaProdotti (nella quale sono indicati diversi campi come Codice, Articolo, Prezzo1, Prezzo2, IVA, Sconto)
il Codice inserito dall'utente e mostra il risultato, quindi Codice1, Articolo1 e cosi via.
Vorrei far si che una volta trovato quello che si cerca fosse possibile selezionare con un clic i vari campi e far popolare alcuni campi di una seconda tabella (TabellaOrdini).
Naturalmente la TabellaOrdini ha altri campi perciò parlo di ... alcuni campi.
P.S.: Curiosando in giro ho trovato risultati relativi alle query di accodamento o creazione tabella ma non credo sia ciò di cui ho bisogno.

Grazie
ettore56
Utente Senior
Messaggi: 237
Iscritto il: 09 mag 2017, 10:56
Località: Lecco
Contatta:

Re: Preleva dati da query

Messaggioda ettore56 » 07 nov 2017, 09:36

mazda91 ha scritto:Ciao a tutti,
premessa per inquadrare il problema. E' solo un esercizio ma serve per capire.

In una MascheraOrdini
con un tasto avvio
la query QueryProdotti
che cerca nella
TabellaProdotti (nella quale sono indicati diversi campi come Codice, Articolo, Prezzo1, Prezzo2, IVA, Sconto)
il Codice inserito dall'utente e mostra il risultato, quindi Codice1, Articolo1 e cosi via.
Vorrei far si che una volta trovato quello che si cerca fosse possibile selezionare con un clic i vari campi e far popolare alcuni campi di una seconda tabella (TabellaOrdini).
Naturalmente la TabellaOrdini ha altri campi perciò parlo di ... alcuni campi.
P.S.: Curiosando in giro ho trovato risultati relativi alle query di accodamento o creazione tabella ma non credo sia ciò di cui ho bisogno.

Grazie

Potresti essere più chiaro?
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 07 nov 2017, 09:43

Ciao, ecco come sono strutturate le tabelle:
TabellaProdotti: IDProdotto, Codice, Descrizione, Prezzo1, Prezzo2, IVA, Sconto
TabellaOrdini. IDOrdine, Prodotto, Quantità
QueryCercaProdotto: Cerca prodotto in base a Codice e mostra il risultato, una volta trovato vorrei ?prendere' questi dati e far popolare i campi relativi in TabellaOrdini.
Non so essere più chiaro di così.

Allego un file di esempio (formato compresso)
Grazie
Allegati

[L’estensione zip è stata disattivata e non può essere visualizzata.]

ettore56
Utente Senior
Messaggi: 237
Iscritto il: 09 mag 2017, 10:56
Località: Lecco
Contatta:

Re: Preleva dati da query

Messaggioda ettore56 » 07 nov 2017, 12:07

Se il tuo scopo è solamente quello di scrivere i dati filtrati dalla query nella tabella ordini, potresti dare un'occhiata qui:
http://forum.masterdrive.it/access-79/access-leggere-scrivere-dati-nelle-tabelle-tramite-vba-dao-13176/
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 08 nov 2017, 14:10

Ciao Ettore,
ho provato ad abbinare al pulsante immetti il seguente codice

Private Sub Comando17_Click()

DBEngine(0)(0).Execute "Insert InTo M_Dati (ArticoloRichiesto) Select [ArticoloCercato] As Espr1 From CercaArticolo"
End Sub

ma non va. Dà messaggio di errore dicendo che non trov la query CercaArticolo che invece c'è e funziona.

Grazie
Avatar utente
@Alex
Utente Senior
Messaggi: 3590
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Preleva dati da query

Messaggioda @Alex » 08 nov 2017, 15:21

Il predicato della Query che non trova lo possiamo vedere...?
Perchè se la query è semplice... invece di mettere un SELECT di SELECT ti basta incollare il predicato SQL nella Query INSERT...
Sono contrario al CROSSPOST
@Alex
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 08 nov 2017, 17:22

Ciao,
questo è l'SQL della query incriminata

SELECT [M_Dati].Articolo, [M_Dati].Prezzo1, [M_Dati].Prezzo2, [M_Dati].Prezzo2, [M_Dati].Descrizione
FROM [M_Dati]
WHERE ((([M_Dati].Descrizione) Like "*" & [ Descrizione ] & "*"));

la query di selezione funziona correttamente, l'ho provata.
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 09 nov 2017, 13:43

Questo, invece, è il messaggio di errore che appare ....

ERRORE DI RUNTIME 3076. Impossibile trovare la tabella o la query di input CercaArticolo. Verificare che esista e che il nome sia stato digitato correttamente.
Avatar utente
@Alex
Utente Senior
Messaggi: 3590
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Preleva dati da query

Messaggioda @Alex » 09 nov 2017, 15:13

Ma cosa devi fare accodare nella Tabella dati della stessa tabella...?
Mi pare ovvio... ma quella è una Query Parametrica con Parametro a DIGITZIONE ed il parametro lo hai chiamato con lo stesso nome di un Campo...?
Chi può valorizzare quel parametro in una QueryAction...?

Devi scriverla in modo che possa recuperare il valore... quindi da una TextBox di una Form Aperta o da una Function... allora lanciandola si risolve il valore cercandolo e la query SELECT verrebbe risolta e passata alla query Action.
Poi verifica bene la questione dei CAMPI... in quanto nella SELECT hai più di 1 Campo, quindi sbagli anche il predicato SQL, che è così:

Codice: Seleziona tutto

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

Oppure de devi definire i campi

Codice: Seleziona tutto

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;


Leggi questo:
https://www.w3schools.com/sql/sql_insert_into_select.asp
Ora prova a riflettere con più calma e riscrivere una cosa sensata seguendo le indicazioni.
Sono contrario al CROSSPOST
@Alex
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 10 nov 2017, 13:50

Ciao a tutti,
ringrazio quanti mi stanno dando una mano.
Ecco cosa ho scritto finora

Private Sub Comando17_Click()
INSERT INTO T_Dati (Prodotto)
SELECT Articolo
FROM T - Prodotti
WHERE Prodotto= ((([T-Prodotti].Descrizione) Like "*" & [ Descrizione ] & "*"));
End Sub

Il messaggio d'errore stavolta è
ERRORE DI SINTASSI
Avatar utente
@Alex
Utente Senior
Messaggi: 3590
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Preleva dati da query

Messaggioda @Alex » 10 nov 2017, 14:04

mazda91 ha scritto:Ciao a tutti,
ringrazio quanti mi stanno dando una mano.
Ecco cosa ho scritto finora

Private Sub Comando17_Click()
INSERT INTO T_Dati (Prodotto)
SELECT Articolo
FROM T - Prodotti
WHERE Prodotto= ((([T-Prodotti].Descrizione) Like "*" & [ Descrizione ] & "*"));
End Sub

Il messaggio d'errore stavolta è
ERRORE DI SINTASSI


Ma quel coso non fa nulla...!!!! e meno male che Access è stato gentile con solo l'errore di sintassi...

Perchè nei Nomi degli Oggetti volete sempre usare Caratteri che creano problemi... spazi ed ammennicoli vari...
Almeno utilizza la medesima struttura... non vedi che hai messo degli spazi...?
Usa le Quadre, almeno Access capisce che deve portare pazienza e far finta di nulla...

E poi quel testo è un Comando non va scritto così devi inserirlo in una Stringa e farlo eseguire con un Execute o RunSQL... lo hai usato nei primi post, possibile che tu dovendo fare la stessa cosa non capisca cosa stai facendo...?
Il difetto del Copia/Incolla... ora ti è evidente..?
Sono contrario al CROSSPOST
@Alex
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 10 nov 2017, 15:29

Con questo comando

Option Compare Database
Private Sub Comando17_Click()
DBEngine(0)(0).Execute "Insert InTo M_Dati (Prodotto) Select [Articolo] As Espr1 From "CercaProdotto""
End Sub

ottengo l'errore. ERRORE DI COMPILAZIONE. ERRORE DI SINTASSI. Perché ?
mikelemm
Utente Junior
Messaggi: 93
Iscritto il: 17 dic 2014, 19:52

Re: Preleva dati da query

Messaggioda mikelemm » 11 nov 2017, 11:08

mazda91 ha scritto:Con questo comando

Option Compare Database
Private Sub Comando17_Click()
DBEngine(0)(0).Execute "Insert InTo M_Dati (Prodotto) Select [Articolo] As Espr1 From "CercaProdotto""
End Sub

ottengo l'errore. ERRORE DI COMPILAZIONE. ERRORE DI SINTASSI. Perché ?

Ciao mazda91,
magari non è questo il problema ma perché hai messo il doppio apice prima e dopo CercaProdotto?
L'origine dati non mi sembra che abbia bisogno degli apici.
mazda91
Utente Senior
Messaggi: 262
Iscritto il: 08 mar 2011, 13:54

Re: Preleva dati da query

Messaggioda mazda91 » 11 nov 2017, 14:30

Ciao Michelemm,
togliendo gli apici ho comunque errore ....
ERRORE DI RUN-TIME 3061. Parametri insufficienti. Previsto 2.

?????
mikelemm
Utente Junior
Messaggi: 93
Iscritto il: 17 dic 2014, 19:52

Re: Preleva dati da query

Messaggioda mikelemm » 11 nov 2017, 15:26

Un'altra cosa che non mi quadra è

Codice: Seleziona tutto

SELECT [Articolo] As Espr1

Come si chiama il campo dal quale prelevi il valore? Articolo o Espr1?
Forse potrebbe essere questo il problema perché il resto sembrerebbe corretto.

Torna a “Microsoft Access”

Chi c’è in linea

Visitano il forum: @Alex, max.riservo e 64 ospiti