Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Rognosa Query di aggiornamento

    Salve.

    Sono qui a chiedervi possibili soluzioni a questo problema.

    In una tabella chiamata SCORTE ho una serie di prodotti di cancelleria; questa tabella SCORTE si alimenta tramite il caricamento delle fatture d'acquisto.

    I fornitori da cui acquistiamo sono diversi e ci possono vendere lo stesso prodotto che viene codificato con uno stesso codice interno, ad esempio in SCORTE potrò avere:

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 15

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 50

    ....

    Cioè enne Codice = CD43 matite bicolore quante sono i fornitori da cui sono state comprate.

    Fatta questa premessa, veniamo al problema:

    Lo scarico delle quantità delle SCORTE avviene tramite un file excel compilato dai vari operatori che così scaricano le SCORTE una volta a settimana e non tutti i giorni.

    Quando però avviene questo scarico automatico se nel file excel ho:

    Codice = CD43
    Descrizione = matita bicolore
    Quantità_da_scaricare = 3

    La query di aggiornamento, prevista all'interno di un loop:

    codice:
       SQL_UPDATE = " UPDATE "
       SQL_UPDATE = SQL_UPDATE & " SCORTE "
       SQL_UPDATE = SQL_UPDATE & " SET "
       SQL_UPDATE = SQL_UPDATE & " Q = " & replace(Q_DA_FILE_EXCEL, ",", ".") & " "
       SQL_UPDATE = SQL_UPDATE & " WHERE "
       SQL_UPDATE = SQL_UPDATE & " CODICE = '" & Rs("CODICE") & "' "
       objconn.Execute(SQL_UPDATE)
    La Quantità_da_scaricare = 3 sarà sottratta per due volte dalla tabella SCORTE perchè in tabella SCORTE si trovano:

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 15

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 50

    Quindi mi troverò con:

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 15 - 3 = 12

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 50 - 3 = 47

    Il che non è vero... ossia è sbagliato perchè dovrebbe essere :

    Codice = CD43
    Descrizione = matita bicolore
    Quantità = 65 - 3 = 62


    Cosa consigliate di fare per risolvere il problema ??
    Gracias....
    ER

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Cambiare la base dati!
    Non puoi avere "n" record con lo stesso codice.
    Il codice deve essere presente una sola volta.
    Poi potrai avere un solo campo con la somma delle scorte oppure tanti record per ogni scorta legata ad un fornitore, in quel caso l'aggiornamento dovrebbe prevedere anche il fornitore.

    Roby

  3. #3
    Originariamente inviato da Roby_72
    Cambiare la base dati!
    Non puoi avere "n" record con lo stesso codice.
    Il codice deve essere presente una sola volta.
    Poi potrai avere un solo campo con la somma delle scorte oppure tanti record per ogni scorta legata ad un fornitore, in quel caso l'aggiornamento dovrebbe prevedere anche il fornitore.

    Roby
    E' la prima cosa che ho pensato ma, intanto, non è un mio progetto e poi, soprattutto, quando ho visto la tabella SCORTE ho preferito percorrere strade alternative se ce ne sono... sono centinaia di migliaia di record.... VVoVe:

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il programma può solo seguire una scelta logica...
    A mente, come faresti l'operazione? Poi pensi a come realizzarla...

    Roby

  5. #5
    Originariamente inviato da Roby_72
    Il programma può solo seguire una scelta logica...
    A mente, come faresti l'operazione? Poi pensi a come realizzarla...

    Roby
    A parte cambiare la base dati, tu come faresti a mente ?

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    In teoria basterebbe togliere le scorte dal primo codice che trovi (quindi facendo una query estrando l'id del record della prima occorrenza di quel codice).
    In realtà non è sufficiente nel caso in cui la somma delle scorte da sottrarre è maggiore della quantità disponibile nel primo record che trovi e quindi dovresti passare ai successi...
    Ci devi lavorare. E' un po' dispendioso.

    Roby

  7. #7
    La query SELECT che utilizzo per associare i record tra le due tabelle SCORTE e TABELLA_EXCEL è questa:

    codice:
    SQL = " SELECT " 
    SQL = SQL & " SCORTE.*, " 
    SQL = SQL & " TABELLA_EXCEL.* "
    SQL = SQL & " FROM " 
    SQL = SQL & " TABELLA_EXCEL AS TBL_XLS "
    SQL = SQL & " INNER JOIN " 
    SQL = SQL & " SCORTE AS TBL_SCORTE " 
    SQL = SQL & " ON TBL_SCORTE.CODICE = TBL_XLS.CODICE " 
    SQL = SQL & " WHERE "
    SQL = SQL & " TBL_XLS.CODICE = " & adoRs(1)
    In cui adoRs(1) è il CODICE unico che arriva dal file excel per lo scaricamento.

    Devo lavorare su questa query ?

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non ti basta una query per fare quello che ti serve.

    Roby

  9. #9
    nella tabella scorte NON hai il codice del fornitore?

  10. #10
    Originariamente inviato da optime
    nella tabella scorte NON hai il codice del fornitore?
    Si c'è l'ho.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.