Preleva dati da query

di il
46 risposte

46 Risposte - Pagina 3

  • Re: Preleva dati da query

    mazda91 ha scritto:


    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)"
    Ti ripropongo quello che ti avevo già proposto... e pare che per lunghi percorsi tu stia arrivando ad usare quello che dicevo...!
    Ora fai uno sforzo ancora prima di riproporre il tema... già suggerito peraltro.
    
    INSERT INTO table2 (column1)
    SELECT column1FROM table1
    WHERE condition; 
  • Re: Preleva dati da query

    Ciao a tutti,
    il modo per imparare per ognuno è diverso, per me è quello di tentare.
    Ad ogni modo ora il nodo è la condizione WHERE che non so proprio come strutturare


    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti Where Articolo=(NomeQueryCheCercaProdotto)"

    mi restituisce errore di Run-TIme 3061. Parametri insufficienti. Previsto 1.
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao a tutti,
    il modo per imparare per ognuno è diverso, per me è quello di tentare.
    Ad ogni modo ora il nodo è la condizione WHERE che non so proprio come strutturare


    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti Where Articolo=(NomeQueryCheCercaProdotto)"

    mi restituisce errore di Run-TIme 3061. Parametri insufficienti. Previsto 1.
    Ciao mazda91,
    la condizione WHERE la puoi strutturare così, ad esempio:
    Dim prodotto As String
    ...
    prodotto = Me.CasellaDiTestoNomeProdotto
    ...
    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti Where Articolo='" & Prodotto & "'"
    
    Io ritengo che il problema stia nel fatto che come parametro della condizione WHERE vuoi passare una Query. Se il nome del prodotto selezionato non riesci a recuperarlo in modo semplice, ad esempio dalla Maschera come ho scritto nell'esempio sopra, dovresti eseguire la Query da codice, recuperare il nome del prodotto ed assegnarlo ad una variabile che poi utilizzerai come parametro.
    Vedi se il seguente link può esserti di aiuto:
    http://www.excelvba.it/Forum/story/Visual_Basic_for_Applications/Recupero_Dati_query.html
    Nella variabile strSQL scrivi l'SQL della tua QueryCheCercaProdotto.
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao a tutti,
    il modo per imparare per ognuno è diverso, per me è quello di tentare.
    Ad ogni modo ora il nodo è la condizione WHERE che non so proprio come strutturare


    DBEngine(0)(0).Execute "Insert InTo TOrdini (Prodotto) Select [Articolo] From ElencoProdotti Where Articolo=(NomeQueryCheCercaProdotto)"

    mi restituisce errore di Run-TIme 3061. Parametri insufficienti. Previsto 1.
    Converrai con me che se non hai un minimo di conoscenza, puoi fare prove finchè vuoi ma non ne ricavi molto... mi pare sia dimostrato.
    Quindi nel tuo caso forse, basta un passaggio logico... la Clausola WHERE è la Condizione che consente di Ciscoscrivere o Filtrare i Records... nel tuo caso devi ottenere tutti Records della Tabella ElencoProdotti il cui Articolo è quello che prelevi da qualche parte...!

    La prima cosa su cui devi ragionare è fare una Query select e verificare che questa funzioni poi se va la inserisci come predicato nel predicato più complesso che da origine alla Query Action.
    Nel tuo caso da dove prelevi o dove ritieni di avere il Dato con cui VALORIZZARE Articolo nella Query...?
    Se è nella maschera al Record Attivo ti basta far riferimento a quello...!!!

    Seconda cosa devi fare attenzione che noralmente le Tabelle in relazione si basano su campi INdicizzati che fungono da Chiavi(Primarie ed Esterne).
    Questi campi di norma NON SONO TESTO ma Numeri e sarebbe bene che tu utilizzassi queste chiavi per riferirti in Modo UNIVOCO a QUELLO SPECIFICO ARTICOLO...!
    Questi concetti, purtroppo, non li si impara per tentativi... e sono estremamente fondamentali in quanto la base dell'efficienza e della funzionalità di sistemi relazionali... e siccome questo non è Excel... ti suggerisco quanto meno di conoscerli per riuscire a sfruttarli.

    Quindi io il suggerimento di [mikelemm], sintatticamente corretto, lo ritengo tecnicamente errato... in una gestione normale e coerente... motivo per cui ti inviterei a riflettere in modo più completo.
  • Re: Preleva dati da query

    Ciao Alex, certo che convengo con quanto dici circa le conoscenze. Tieni però presente che proprio per questo sono a chiedere aiuto al forum altrimenti frequenterei un corso, sarei forse uno studente universitario invece stò solo come si dice smanettando. Sono quindi grato a chi sapendo cerca di trasmette agli altri. Ti ringrazio in particolare per quanto riguarda il 'passaggio logico' ma quello c'è tanto che la query (parametrica) di selezione c'è e funziona ... ciò per cui chiedo aiuto e come materialmente 'scrivere' l'istruzione WHERE e quindi far aggiungere il dato selezionato alla Tabella Ordini e poi alla Maschera (correlata) Ordini.
    Ho cercato guide e/o esempi circa l'istruzione INSERT INTO e WHERE ma non ho trovato ciò che può farmi fare il passaggio ulteriore.
    SIcuramente per mia mancanza di conoscenze!

    Grazie ancora a tutti
  • Re: Preleva dati da query

    Ciao a tutti, ancora qui a sbattere la testa.
    La sintassi stavolta dovrebbe essere corretta eppure ho errore ...
    La condizione WHERE richiama i campi giusti, cosa manca ?

    Il comando inserito è
    Private Sub Comando7_Click()
    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select CercaProdottoPerCodice from TProdotti WHERE CercaProdottoPerCodice='" & Descriizone & "'"
    End Sub

    ERRORE DI RUN-TIME 3061
    Parametri insufficienti. Previsto 1
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao a tutti, ancora qui a sbattere la testa.
    La sintassi stavolta dovrebbe essere corretta eppure ho errore ...
    La condizione WHERE richiama i campi giusti, cosa manca ?

    Il comando inserito è
    Private Sub Comando7_Click()
    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select CercaProdottoPerCodice from TProdotti WHERE CercaProdottoPerCodice='" & Descriizone & "'"
    End Sub

    ERRORE DI RUN-TIME 3061
    Parametri insufficienti. Previsto 1
    E' scritta giusta quella parola...? Ha 2 non sarà un errore di scrittura...?
  • Re: Preleva dati da query

    Ciao Alex
    si l'errore di scrittura c'è ma anche correggendolo (quindi il codice diventa quello che vedi)
    ottengo sempre lo stesso messaggio d'errore.

    Private Sub Comando7_Click()

    DBEngine(0)(0).Execute "Insert InTo TOrdini (Merce) Select CercaProdottoPerCodice from TProdotti WHERE CercaProdottoPerCodice='" & Descrizione & "'"

    End Sub
  • Re: Preleva dati da query

    Ma CercaProdottoPerCodice è una funzione, oppure un campo della tabella TProdotti ?
  • Re: Preleva dati da query

    Ciao i campi delle due tabelle sono:
    in TOrdini: IDOrdine/Merce/Quantità
    in TProdotti:IDProdotto/Codice/Descrizione/Prezzo1/Prezzo2/IVA/Sconto

    CercaProdottoPerCodice è una query parametrica
  • Re: Preleva dati da query

    mazda91 ha scritto:


    Ciao i campi delle due tabelle sono:
    in TOrdini: IDOrdine/Merce/Quantità
    in TProdotti:IDProdotto/Codice/Descrizione/Prezzo1/Prezzo2/IVA/Sconto

    CercaProdottoPerCodice è una query parametrica
    E come ti è stato detto ormai troppe volte la query parametrica, non serve a nulla, basta inserire il predicato SQL della SELECT sulla TProdotti direttamente nel predicato della ACTION... ma nonostante tutto siamo sempre quì...
  • Re: Preleva dati da query

    mazda91 ha scritto:


    CercaProdottoPerCodice è una query parametrica
    A parte quello che ti scrive @Alex,

    quale senso può avere scrivere:

    Select CercaProdottoPerCodice from TProdotti

    ???
  • Re: Preleva dati da query

    Alex, Gibra
    come posso 'cercare' il prodotto dalla tabella/maschera Prodotti se non con una query ?
    Sicuramente mi sfugge qualcosa ma - ripeto - l'obiettivo è:
    inserire nella tabella e quindi nella maschera Ordini un prodotto che è in tabella/maschera Prodotti dopo averlo cercato da un elenco.
  • Re: Preleva dati da query

    Infatti... ma per te una Query cosa è di preciso...?
    Intendi una Query salvata nell'elenco delle Queries...?

    Un Predicato SQL usato direttamente da codice per te non è una Query...?

    IN 30 Post hai inserito 10 Predicati SQL parziali esemplificativi con nomi approssimativi... e continuamente ti vengono ripetute le medesime cose... anche facendo un Esempio specifico fare 1+1 riesci a farlo risultare 5

    Se questo predicato che ti ho già esposto, non ti dice proprio nulla... facciamo prima a chiudere:
    
    INSERT INTO table2 (NomeCampoInTable2)
    SELECT NomeCampoInTable1 FROM table1
    WHERE condition; 
  • Re: Preleva dati da query

    Ciao a tutti, permettetemi una premessa .... se io per mio limite non riesco ad arrivare a un 1+1 è chiedere troppo quello di avere uno sforzo ulteriore anche da chi ne sa di più ?
    Nel comando INSERT INTO la condizione Where NON riesco a metterla giù correttamente, evidentemente.
    Allora vi ringrazio e chiudo il tema capendo (questo di sicuro) che se non si vuole fare uno sforzo da entrambe le parti e inutile continuare. Buona giornata a tutti
Devi accedere o registrarti per scrivere nel forum
46 risposte