Visualizzazione dei risultati da 1 a 6 su 6

Discussione: insert con select max

  1. #1
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916

    insert con select max

    ciao.

    con questa insert:

    codice:
    sqlmod="INSERT INTO tbProtocolliDdt (numddt,data,cliente,prodotto,causale,numfattura,numordine,operatore,noteddt) VALUES ((SELECT MAX(numDdt) FROM tbProtocolliDdt WHERE (YEAR(data) = "&YEAR(date)&") + 1 ),GetDate(),'"&strCliente&"','"&strProdotto&"','"&strCausale&"','"&strNumeroFattura&"','"&strNumeroOrdine&"','"&strOperatore&"','"&strNoteDDT&"')"
    
    objConn.execute sqlmod
    ottengo questo errore:

    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
    
    [Microsoft][ODBC SQL Server Driver][SQL Server]In questo contesto sono consentite solo espressioni scalari, non subquery.

    non è proprio possibile fare una query con subquery simile o sbaglio qualcosa io?

    grazie.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  2. #2

  3. #3
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    grazie!
    risolto così:

    codice:
    sqlmod = "INSERT INTO tbProtocolliDdt (numddt,data,cliente,prodotto,causale,numfattura,numordine,operatore,noteddt) SELECT MAX(numDdt) +1, GetDate(),'"&strCliente&"','"&strProdotto&"','"&strCausale&"','"&strNumeroFattura&"','"&strNumeroOrdine&"','"&strOperatore&"','"&strNoteDDT&"' FROM tbProtocolliDdt WHERE YEAR(data) = "&YEAR(date)&""
    Adesso ho il problema che la variabile della select max potrebbe esere null, quindi anche se aggiungo +1 mi risulta sempre null.

    Come posso risolvere?
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  4. #4
    con ISNULL, visto che usi M$SQL Server ! (sarebbe più standard COALESCE, a dire il vero )

  5. #5
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Grazie.

    ecco il codice:

    codice:
    sqlmod = "INSERT INTO tbProtocolliDdt (numddt,data,cliente,prodotto,causale,numfattura,numordine,operatore,noteddt) SELECT ISNULL( MAX(numDdt),0) +1, GetDate(),'"&strCliente&"','"&strProdotto&"','"&strCausale&"','"&strNumeroFattura&"','"&strNumeroOrdine&"','"&strOperatore&"','"&strNoteDDT&"' FROM tbProtocolliDdt WHERE YEAR(data) = "&YEAR(date)&""
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  6. #6

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.