Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Scusa forse ho capito.... io consideravo solo la tua funzione... invece devo considerarla nella select! Ecco perchè passavi il lotto! Giusto ???

    A questo punto mi resta solo l'ultimo dubbio, partendo dalla tua select, come posso inserire gli elementi che soddisfano la mia richiesta (in funzione delle quantità disponibili di ogni singolo lotto: QtaProdotta - QtaImpegnata) in una tabella di appoggio Tabella2??

  2. #12
    Originariamente inviato da valeria75
    Scusa forse ho capito.... io consideravo solo la tua funzione... invece devo considerarla nella select! Ecco perchè passavi il lotto! Giusto ???


    A questo punto mi resta solo l'ultimo dubbio, partendo dalla tua select, come posso inserire gli elementi che soddisfano la mia richiesta (in funzione delle quantità disponibili di ogni singolo lotto: QtaProdotta - QtaImpegnata) in una tabella di appoggio Tabella2??
    Insert into Tabella2(....) SELECT(...i campi che ti interessano...)

    N.B. verifica nella funzione anche tu quanto segue perchè mi sembra un bug

    (correzione da "<=" a "=" sulla seconda riga) :

    codice:
    ..........
     where T2.Articolo=@Art
             and ((T2.Data <=  @Data and T2.Lotto<@Lotto) or (T2.Data<@Data))
    .........
    
    che andrebbe corretta in :
    
    ........
     where T2.Articolo=@Art
            and ((T2.Data = @Data and T2.Lotto<@Lotto) or (T2.Data<@Data))
    ........
    Ultimo nota:

    anche se in genere l'uso di un cursore è sconsigliato, in questo caso non mi sentirei di escluderlo a priori perchè questa sp sembra essere piuttosto 'pesante' ;

    ...purtroppo non so dirti a priori quale sia la più performante perchè
    occorrerebbe avere sia una base dati corposa per provare ed ottimizzare
    che il tempo per farlo.

    Ciao sspintux

  3. #13
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Originariamente inviato da sspintux
    Insert into Tabella2(....) SELECT(...i campi che ti interessano...)
    Grazie ancora!

    Ma ancora non capisco come fare l'insert in funzione dei risultati della tua query

    Grazie

  4. #14
    Originariamente inviato da valeria75
    .............
    Ma ancora non capisco come fare l'insert in funzione dei risultati della tua query
    ..........
    ??? ...questa domanda non me l'apettavo e mi fa pensare che tu
    sia alle prime armi con sql server per cui ti consiglio di aiutarti
    con la sua guida in linea che a mio parere è ben fatta;
    (nel caso non l'avessi disponibile puoi scaricarla gratuitamente dal sito della microsoft)

    La query di cui abbiamo discusso fino ad ora
    e realtiva insert devi metterla in una Stored Procedure come segue :

    (nella select ho solo commentato i campi da te non richiesti
    e che avevo messo sola per facilitare la verifica dei risultati)

    codice:
    Create Proc dbo.TuaSP
     @Art varchar(10), -- articolo
     @QtaRic int         -- qta richiesta
    
    AS 
    
    --set @Art='art1'
    --set @QtaRic= 1
    --set @QtaRic= 4
    --set @QtaRic= 5
    --set @QtaRic= 6
    
    Insert into dbo.tabella2(Lotto,QtaDaImpegnare) '<< inserisco i record in tabella2
    /* la query */
    select --T1.Data,
           T1.Lotto,
           --T1.QtaProdotta,
           --T1.QtaImpegnata,
           --(T1.QtaProdotta-T1.QtaImpegnata) as QtaDisponibile,
           --dbo.fnProgQtaDisponibile(@Art,T1.Lotto,T1.Data,(T1.QtaProdotta-T1.QtaImpegnata)) as ProgressivoQtaDisponibile,
           (case when 
             dbo.fnProgQtaDisponibile(@Art,T1.Lotto,T1.Data,(T1.QtaProdotta-T1.QtaImpegnata))<=@QtaRic
            then 
             (T1.QtaProdotta-T1.QtaImpegnata)
           else 
    	 @QtaRic - dbo.fnProgQtaDisponibile(@Art,T1.Lotto,T1.Data,0)
            end) as QtaDaImpegnare
    from tabLotti T1
    etc...etc....
    ... a te il resto del lavoro e tutte le necessarie verifiche del caso.

    P.S.
    ti ricordo che questa SP non tiene conto del caso in cui la quantità
    richiesta sia 50 e quella disponibile solamente 20;
    ovvero in tabella2 ti troverai 20 articoli senza alcun tipo di avviso del problema.

  5. #15
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Si scusa per l'insert era banalissima, ma ieri non connettevo. E' tutto chiarissimo e ti ringrazio, in effetti è un po' complicata come select, da sola non sarei mai riuscita a generarla...

    Ti chiedo le ultime due info definitive

    where T2.Articolo=@Art
    and ((T2.Data = @Data and T2.Lotto<@Lotto) or (T2.Data<@Data))
    Ho fatto prove con entrambe le soluzioni ed in tutti i casi sembrava essere tutto OK! Tu che genere di problema ti aspettavi??

    ti ricordo che questa SP non tiene conto del caso in cui la quantità
    richiesta sia 50 e quella disponibile solamente 20;
    Di questo me ne ero accorta, va già benissimo cosi, ma volendo aggiungere un controllo all'interno della SP, dove dovrei aggiungerlo?

  6. #16
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie ancora per tutte le info.

    Tu cosa mi consigli di introdurre per effettuare un controllo sulle quantità??

    ti ricordo che questa SP non tiene conto del caso in cui la quantità
    richiesta sia 50 e quella disponibile solamente 20;
    Grazie ancora!

  7. #17
    Originariamente inviato da Valeria75_bis
    Grazie ancora per tutte le info.
    Tu cosa mi consigli di introdurre per effettuare un controllo sulle quantità??
    potresti prevedere un parametro di output (@Res) nella SP che valorizzi a S/N
    (oppure utilizzare il codice di ritorno Return x)
    .... qualcosa del tipo :

    codice:
    set @Res='S' -- suppongo che ci sia la disponibiltà
    
    if IsNull(select sum(...)) < @QtaRic 
    begin
     set @Res=N'
     Return
    end
    .... continua insert into etc...
    Ciao sspintux

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 © 2025 vBulletin Solutions, Inc. All rights reserved.