Preleva dati da query

di il
46 risposte

46 Risposte - Pagina 2

  • Re: Preleva dati da query

    Il campo dal quale prendere i dati è Descrizione

    ..............

    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select [Descrizione] As Espr1 From CercaProdottoPerCodice"
  • 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é ?

    mazda91 ha scritto:


    Il campo dal quale prendere i dati è Descrizione

    ..............

    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select [Descrizione] As Espr1 From CercaProdottoPerCodice"
    A prescindere dal fatto che tra questi due post hai cambiato la Query di inserimento, facendo una prova su un database creato al volo, ho copiato ed incollato il secondo codice che hai postato, ho cambiato i nomi, di origine dati e campi, lasciando pure "As Espri1" e tutto ha funzionato correttamente.
    Considerando che TOrdini è una tabella, il problema dovrebbe essere quasi sicuramente nell'origine dati della Select, che dovrebbe essere una Query. Non è che questa Select non restituisce valori?
  • Re: Preleva dati da query

    Ciao,
    il db c'è l'ho nel pc dell'ufficio e in quello di casa magari ho usato termini diversi.
    La query restituisce valori, c'è un però che la tua domanda fa venire fuori.
    Ho strutturato una tabella che viene 'chiamata' dalla query perché altrimenti nella query che cerca il prodotto non potrei inserire il tasto che permetta di prendere il dato dalla tabella prodotti e metterlo nella tabella ordini.
    Sarà quello il problema ?
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao,
    il db c'è l'ho nel pc dell'ufficio e in quello di casa magari ho usato termini diversi.
    La query restituisce valori, c'è un però che la tua domanda fa venire fuori.
    Ho strutturato una tabella che viene 'chiamata' dalla query perché altrimenti nella query che cerca il prodotto non potrei inserire il tasto che permetta di prendere il dato dalla tabella prodotti e metterlo nella tabella ordini.
    Sarà quello il problema ?
    Sinceramente non ci ho capito molto. Mi sembra una cosa un po' articolata.
    Ma provare a semplificare un po'!? Una volta individuato il prodotto puoi passarlo alla condizione WHERE della SELECT andando a prendere i dati direttamente dalla tabella. Pensavo ad una cosa del genere:
    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select Prodotto From TProdotti WHERE Prodotto ='" & ProdottoSelezionato & "'"
  • Re: Preleva dati da query

    Ciao Michelemm,
    sicuramente è un po' articolata la cosa. Te ne spiego il motivo, se poi c'è una via più semplice .... ben venga.
    Ho immaginato di dover compilare una serie di dati in una maschera (Maschera1 che si appoggia a Tabella1) nella quale alcuni campi dovevano invece che essere scritti a mano, popolati prendendoli da un'altra tabella (Tabella2) con tanti campi e tanti record (per esempio un prontuario medico). Ho anche immaginato di evitare una tabella lunghissima nel quale dover andare a scorrere cercando quello che serve ma farlo fare a una query che una volta trovato il prodotto lo facesse selezionare popolando n campi nella Maschera1.
    Ecco perché parlavo di query; che ho messo nella Maschera1che cerca il dato nella Tabella2.
    Nella Maschera2 ho poi messo il pulsante che dovrebbe 'Importare il dato nella Maschera1 (e quindi Tabella1).
    Pensi che si possa semplificare il meccanismo ? Se si, ammetto di non avere proprio idea di dove cominciare.
    Come sempre
    GRAZIE
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao Michelemm,
    sicuramente è un po' articolata la cosa. Te ne spiego il motivo, se poi c'è una via più semplice .... ben venga.
    Ho immaginato di dover compilare una serie di dati in una maschera (Maschera1 che si appoggia a Tabella1) nella quale alcuni campi dovevano invece che essere scritti a mano, popolati prendendoli da un'altra tabella (Tabella2) con tanti campi e tanti record (per esempio un prontuario medico). Ho anche immaginato di evitare una tabella lunghissima nel quale dover andare a scorrere cercando quello che serve ma farlo fare a una query che una volta trovato il prodotto lo facesse selezionare popolando n campi nella Maschera1.
    Ecco perché parlavo di query; che ho messo nella Maschera1che cerca il dato nella Tabella2.
    Nella Maschera2 ho poi messo il pulsante che dovrebbe 'Importare il dato nella Maschera1 (e quindi Tabella1).
    Pensi che si possa semplificare il meccanismo ? Se si, ammetto di non avere proprio idea di dove cominciare.
    Come sempre
    GRAZIE
    Quello che hai immaginato lo vedo un po' confuso e non dai indicazioni molto precise. Credo che si debba fare un passo per volta e partire strutturando delle cose semplici, dalle quali arrivare a delle cose più complesse.
    Parli di 2 Tabelle, di 1 Query e di una Maschera che si appoggia ad una Tabella (quindi presumo che l'origine dati della Maschera sia una Tabella) e nella stessa Maschera ci sono altri campi che devono essere scritti a mano o presi da un'altra Tabella? Ma la Tabella su cui si appoggia la Maschera, è la stessa su cui devi fare l'inserimento dei dati?
    Poi, hai una Query che ti cerca il prodotto selezionandolo in quale modo? Come popola gli n campi della Maschera?
    Ma non sarebbe possibile mettere in relazione queste 2 Tabelle in una Query ed utilizzare questa per l'origine dati della Maschera cercando il prodotto con una semplice funzione di ricerca sul codice?

    mazda91 ha scritto:


    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ì.
    Rileggendo uno dei tuoi primi post, se è questo che ti serve fare, quando hai visualizzato nella maschera il prodotto cercato fai l'inserimento del prodotto nella TabellaOrdini prendendo i dati che ti servono direttamente dalla Maschera
    DBEngine(0)(0).Execute "INSERT INTO TabellaOrdini(Prodotto, Quantità, ...) VALUES (" & Me.CaselladiTestoProdotto & ", " & Me.CaselladiTestoQuantità & ", ...)"
    Io non conosco come è strutturato il tuo Database perciò non posso trovarti una via più semplice. Posso darti un aiuto in base alle mie conoscenze e spunti di riflessione per rivedere un po' il meccanismo che non fa il suo dovere. Poi sta a te trovare una soluzione funzionante che soddisfi le tue esigenze.
  • Re: Preleva dati da query

    Ciao Mikelemm,
    non mandarmi a quel paese ma siccome a me continua a darmi errore non potresti allegare il db sul quale hai provato (riuscendo) a lavorare.
    io ho usato il tuo codice ma continua ad avere errore, stavolta
    ERRORE DI COMPILAZIONE. Impossibile trovare il metodo o il membro dei dati
    ????

    DBEngine(0)(0).Execute "INSERT INTO TOrdini(Prodotto) VALUES (" & Me.CaselladiTestoDescrizione & ")"
  • Re: Preleva dati da query

    Ciao mazda91
    ora non posso allegartelo. Per caso, non è che prima dell'insert chiudi la Maschera?
    Prova a fare qualche test inserendo un valore testuale che inserisci direttamente nella stringa, e non dalla casella di testo, per vedere se il codice funziona e inserisce.
    Eventualmente, se puoi, posta tutto il codice della routine che usi per fare l'inserimento.
  • Re: Preleva dati da query

    CIao Mikelemm,
    continuo ad avere errore. Le maschere le tengo aperte, una volta trovato il prodotto cercato faccio solo clic sel tasto che dovrebbe trasferire i dati.
    Inserendo solo valore testuale quindi

    DBEngine(0)(0).Execute "INSERT INTO TOrdini(Merce) VALUES ( Sedia)"
    mi restituisce
    Parametri insufficienti. Previsto 1
  • Re: Preleva dati da query

    mazda91 ha scritto:


    CIao Mikelemm,
    continuo ad avere errore. Le maschere le tengo aperte, una volta trovato il prodotto cercato faccio solo clic sel tasto che dovrebbe trasferire i dati.
    Inserendo solo valore testuale quindi

    DBEngine(0)(0).Execute "INSERT INTO TOrdini(Merce) VALUES ( Sedia)"
    mi restituisce
    Parametri insufficienti. Previsto 1
    [Sedia] è un Testo e va formattato come tale... con gli Apicetti...!
    DBEngine(0)(0).Execute "INSERT INTO TOrdini(Merce) VALUES ('Sedia')"
  • Re: Preleva dati da query

    Ciao a tutti,
    sembra vedersi una luce all'orizzonte (ma è ancora lontana)
    il comando sql digitato direttamente in una query

    insert into TOrdini(Merce) values ('Sedia')

    funziona e aggiorna la tabella TOrdini

    Ora, però, dovrebbe farlo comandata da tasto nella tabella TProdotti e quindi aggiornare non solo la tabella TOrdini ma anche la maschera MOrdini.
    Pensavo di chiudere e riaprire la MOrdini perchè si aggiorni ma mi sembra macchinoso (forse esiste altro modo) e poi dare il valore da parametro cercato dalla query.
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao a tutti,
    sembra vedersi una luce all'orizzonte (ma è ancora lontana)
    il comando sql digitato direttamente in una query

    insert into TOrdini(Merce) values ('Sedia')

    funziona e aggiorna la tabella TOrdini

    Ora, però, dovrebbe farlo comandata da tasto nella tabella TProdotti e quindi aggiornare non solo la tabella TOrdini ma anche la maschera MOrdini.
    Pensavo di chiudere e riaprire la MOrdini perchè si aggiorni ma mi sembra macchinoso (forse esiste altro modo) e poi dare il valore da parametro cercato dalla query.
    Ciao mazda91,
    se il codice funziona vuol dire che il problema, molto probabilmente, stava nei dati che passavi per fare l'inserimento. Prova ad andare per gradi facendo delle prove e vedi se riesci a trovare dove sta il problema.
    Per l'aggiornamento della maschera ci dovrebbero essere i metodi "Refresh" o "Repaint" che forse potrebbero esserti utili.
    https://msdn.microsoft.com/en-us/vba/access-vba/articles/form-refresh-method-access
    https://msdn.microsoft.com/en-us/vba/access-vba/articles/form-repaint-method-access
    Fai delle prove e vedi se funzionano e fanno al caso tuo. Il chiudere e riaprire la maschera può essere un'alternativa ma non ti saprei dire se è tecnicamente corretto.
  • Re: Preleva dati da query

    E' il progetto che non va bene come è impostato.
    Innanzitutto nella tabella Ordini non devi inserire il campo prodotto ma il campo IDProdotto, che dovrà essere relazionato alla tabella dei Prodotti tramite il suo campo IDProdotto.
    L'inserimento dell'Ordine deve essere fatto nella maschera degli Ordini dove devi inserire un controllo casella combinata, con l'elenco dei Prodotti, dove selezionare quello che ti interessa, poi inserire la Quantità nel relativo controllo testo e alla fine, quando i due dati precedenti saranno presenti nei relativi controlli, potrai salvare gli stessi nella tabella Ordini tramite un evento su click di un pulsante con relativa istruzione di inserimento dati.
  • Re: Preleva dati da query

    Ciao,
    la scelta di non utilizzare la casella combinata partiva dal fatto che mi sono immaginato un elenco particolarmente lungo di prodotti.
    Per evitare di scorrere quest'elenco ho pensato a qualcosa di alternativo.Mi rendo conto che il tutto è macchinoso ... ma almeno evito questa lungaggine. La procedura che descrive CarlettoFed so realizzarla ad esclusione del passaggio immetti/salva una volta selezionato il prodotto.
  • Re: Preleva dati da query

    Un piccolo aggiornamento
    il codice
    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti"
    mi copia tutti gli articoli dalla tabella ElencoProdotti nella tabella TOrdini
    come faccio a dare la condizione Where (solo quello selezionato ??).
    Dovrebbe essere:

    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti Where Articolo=(prodotto selezionato)"
Devi accedere o registrarti per scrivere nel forum
46 risposte