Preleva dati da query

di il
46 risposte

Preleva dati da query

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

46 Risposte

  • Re: Preleva dati da query

    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?
  • Re: Preleva dati da query

    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:
    8433_13d6fe0379b684c30a5b1af7a83ab94c.zip
    8433_13d6fe0379b684c30a5b1af7a83ab94c.zip
  • Re: Preleva dati da query

    Se il tuo scopo è solamente quello di scrivere i dati filtrati dalla query nella tabella ordini, potresti dare un'occhiata qui:
    **
  • Re: Preleva dati da query

    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
  • Re: Preleva dati da query

    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...
  • Re: Preleva dati da query

    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.
  • Re: Preleva dati da query

    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.
  • Re: Preleva dati da query

    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ì:
    
    INSERT INTO table2
    SELECT * FROM table1
    WHERE condition;
    Oppure de devi definire i campi
    
    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.
  • Re: Preleva dati da query

    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
  • Re: Preleva dati da query

    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..?
  • Re: Preleva dati da query

    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é ?
  • Re: Preleva dati da query

    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.
  • Re: Preleva dati da query

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

    ?????
  • Re: Preleva dati da query

    Un'altra cosa che non mi quadra è
    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.
Devi accedere o registrarti per scrivere nel forum
46 risposte