Salta al contenuto
  • Categorie
  • Recenti
  • Tag
  • Popolare
  • Utenti
  • Gruppi
Collassa
Logo del marchio
  1. Home
  2. Elettronica e Programmazione
  3. Programmazione
  4. ACCESS 2007 utilizzo della SELECT

ACCESS 2007 utilizzo della SELECT

Pianificato Fissato Bloccato Spostato Programmazione
2 Post 0 Autori 2.1k Visualizzazioni
  • Da Vecchi a Nuovi
  • Da Nuovi a Vecchi
  • Più Voti
Rispondi
  • Risposta alla discussione
Effettua l'accesso per rispondere
Questa discussione è stata eliminata. Solo gli utenti con diritti di gestione possono vederla.
  • R Non in linea
    R Non in linea
    ravasiolorenzo
    scritto su ultima modifica di
    #1

    Ciao a tutti! sono nuovo di questo forum e volevo chiedervi già un favore.

    sto facendo in access un daabatabe per il mio capo.. molto semplice piccola azienda quindi di utilizzo limitato ma trovo difficoltà nello sviluppare una sua richiesta. in una maschera di riassunto finale devo potergli mostrare tutti i costi (ovvero - costo materiali, costo lavorazioni esterne, costo trattamenti termici), il prezzo di vendita della commessa, il totale delle spese e il guadagno.. fino a qui tutto ok.

    inoltre lui mi ha richiesto di aggiungere un al' altro tipo di spesa ovvero COSTO LAVORAZIONE OPERAI.

    io ho una tabella lavorazioni (con ID,nomelavorazione,costoorario) e una lavorazioni_eseguite, con dentro nome dipendente commessa lavorazione e ore di lavorazione..

    io devo poter trovare tutte le lavorazioni fatte su una commessa (quindi con una normale SELECT) e qua ok ma poi devo moltiplicare le ore per ogni costoorario della lavorazione ad esse annessa! ovvero se io per una commessa faccio 3 ore dilavorazione1,5 di lavorazione2 ecc alla fine devo poter ottenere questo risultato:

    tot=(costoorario1 * oredilavorazione1) + (costoorario2 * oredilavorazione2) + ..ecc

    ma non riesco a trovare una combinazione giusta di SQL che renda possibile questa cosa!

    mi sono impuntato sulla SELECT ma non so se è corretta perche so che può restituire solo valori ma se faccio DoCmd.RunSQL(stringa) mi dice "prevista function o variabile" eppure tutte le librerie sono presenti per utilizzo anche INSERT INTO ecc..non riesco proprio a capire come sviluppare questa parte di programma!

    per favore aiuto!

    1 Risposta Ultima Risposta
    0
    • R Non in linea
      R Non in linea
      ravasiolorenzo
      scritto su ultima modifica di
      #2

      Ciao a tutti! sono nuovo di questo forum e volevo chiedervi già un favore.

      sto facendo in access un daabatabe per il mio capo.. molto semplice piccola azienda quindi di utilizzo limitato ma trovo difficoltà nello sviluppare una sua richiesta. in una maschera di riassunto finale devo potergli mostrare tutti i costi (ovvero - costo materiali, costo lavorazioni esterne, costo trattamenti termici), il prezzo di vendita della commessa, il totale delle spese e il guadagno.. fino a qui tutto ok.

      inoltre lui mi ha richiesto di aggiungere un al' altro tipo di spesa ovvero COSTO LAVORAZIONE OPERAI.

      io ho una tabella lavorazioni (con ID,nomelavorazione,costoorario) e una lavorazioni_eseguite, con dentro nome dipendente commessa lavorazione e ore di lavorazione..

      io devo poter trovare tutte le lavorazioni fatte su una commessa (quindi con una normale SELECT) e qua ok ma poi devo moltiplicare le ore per ogni costoorario della lavorazione ad esse annessa! ovvero se io per una commessa faccio 3 ore dilavorazione1,5 di lavorazione2 ecc alla fine devo poter ottenere questo risultato:

      tot=(costoorario1 * oredilavorazione1) + (costoorario2 * oredilavorazione2) + ..ecc

      ma non riesco a trovare una combinazione giusta di SQL che renda possibile questa cosa!

      mi sono impuntato sulla SELECT ma non so se è corretta perche so che può restituire solo valori ma se faccio DoCmd.RunSQL(stringa) mi dice "prevista function o variabile" eppure tutte le librerie sono presenti per utilizzo anche INSERT INTO ecc..non riesco proprio a capire come sviluppare questa parte di programma!

      per favore aiuto!

      1 Risposta Ultima Risposta
      0
      • D Non in linea
        D Non in linea
        Devil_Mcry
        scritto su ultima modifica di
        #3

        Ciao, a primo sguardo quello che vuoi fare è complicato dal fatto che manca almeno una tabella, che è in realtà una relazione N,N tra tabella_lavorazione e lavorazione_eseguite. Come fai a legare l'ID della tabella lavorazioni alle ore lavorate per una data commessa?

        Quando hai progettato il DB hai utilizzato una metodologia formale per la realizzazione o sei andato a intuito?

        Ovviamente in quanto stiamo parlando di query devi fare una SELECT su qualcosa ma a naso credo che nel tuo caso siano query annidate

        Considera che sono anni che di lavoro molto con l'SQL, quindi la query sotto potrebbe non essere ottimizzata, in ogni caso dovresti fare qualcosa del tipo (ti metto gli schemi usati da me ma ovviamente per te sarà diverso anche perchè manca una relazione).

        CREATE TABLE costi(ID int,orelavorate int);

        CREATE TABLE costoore(ID int,costoora int);

        Prima query, conto totale delle ore per la stessa operazione (che è rappresentata da ID, viene da se che ID in ore è chiave primaria, in costi non)

        SELECT ID, SUM(orelavorate) as orelavorate FROM costi GROUP BY ID

         

        Questo ritorna la somma delle ore della stessa lavorazione, a questo punto si annida la query con un'altra di moltiplicazione

        SELECT costoore.ID, costoore.costoora*costi.orelavorate AS parziale FROM costoore, (SELECT ID, SUM(orelavorate) as orelavorate FROM costi GROUP BY ID) AS costi WHERE costi.ID=ore.ID

        Questa seconda query che annida la prima ti ritorna un elenco di costi veri (Xore * costo orario) mostrandoti anche l'ID

        Puoi vedere l'esempio fatto al volo qui http://sqlfiddle.com/#!9/23792/2 dove c'è sia il concetto di somma che prodotto. C'è una leggera differenza nel fatto che nell'esempio costoore l'ho chiamato ore solo per velocità ma quando ho poi scritto qui mi sono reso conto che magari era equivocabile

        Come ti dicevo però nel tuo testo mancano delle informazioni, ovvero la relazione tra la tabella con i costi orari e quella con le lavorazioni. Questo esempio che ti ho fatto è concettualmente quello che devi andare a fare tu ma potrebbe mancare una condizione di WHERE o HAVING a seconda di come strutturi la query e manca una JOIN quasi di sicuro. Insomma as is non funziona ma dovrebbe darti la soluzione del problema.

        Ivan

        1 Risposta Ultima Risposta
        0

        Ciao! Sembra che tu sia interessato a questa conversazione, ma non hai ancora un account.

        Stanco di dover scorrere gli stessi post a ogni visita? Quando registri un account, tornerai sempre esattamente dove eri rimasto e potrai scegliere di essere avvisato delle nuove risposte (tramite email o notifica push). Potrai anche salvare segnalibri e votare i post per mostrare il tuo apprezzamento agli altri membri della comunità.

        Con il tuo contributo, questo post potrebbe essere ancora migliore 💗

        Registrati Accedi
        Rispondi
        • Risposta alla discussione
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti


        • Accedi

        • Non hai un account? Registrati

        • Accedi o registrati per effettuare la ricerca.
        Powered by NodeBB Contributors
        • Primo post
          Ultimo post
        0
        • Categorie
        • Recenti
        • Tag
        • Popolare
        • Utenti
        • Gruppi