Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Evitare un doppio inserimento

    Buongiorno al forum.

    La mia pagina ASP:

    codice:
       SQL = " SELECT a.*, b.* "
       SQL = SQL & " FROM tbl_A a "
       SQL = SQL & " JOIN "
       SQL = SQL & " tbl_B b "
       SQL = SQL & " ON a.idL=b.idL "
       SQL = SQL & " AND a.DATA_E = '" & formatGMTDate(DATE(),0,"yyyy-mm-dd") & "' "
       SQL = SQL & " ORDER BY a.ID; "  
       
       Set Rs = CreateObject("ADODB.Recordset")
       Rs.Open SQL, cn
       
       if not Rs.eof then   
          do until Rs.EOF  
    
          //ESEGUI UNA QUERY INSERT INTO
    
          Rs.MoveNext()
       loop  
       
       end if
    Se la prima query JOIN restituisce un risultato all'interno del ciclo inserisco nella tabella tbl_A una serie di dati prelevati dalla tbl_B.

    Siccome questa pagina ASP è eseguita tramite un'operazione pianificata sul server ogni 20 minuti, ad ogni esecuzione della pagina la query INSERT INTO registra sempre gli stessi dati doppi.

    Come posso evitare il doppio inserimento ?
    Vi ringrazio

  2. #2


    cercali! se ci sono già non li inserisci

  3. #3
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da optime


    cercali! se ci sono già non li inserisci
    Un'ulteriore query select all'interno del ciclo ?

    Ho scritto così, intendi questo:?

    codice:
       SQL = " SELECT a.*, b.* "
       SQL = SQL & " FROM tbl_A a "
       SQL = SQL & " JOIN "
       SQL = SQL & " tbl_B b "
       SQL = SQL & " ON a.idL=b.idL "
       SQL = SQL & " AND a.DATA_E = '" & formatGMTDate(DATE(),0,"yyyy-mm-dd") & "' "
       SQL = SQL & " ORDER BY a.ID; "  
       
       Set Rs = CreateObject("ADODB.Recordset")
       Rs.Open SQL, cn
       
       if not Rs.eof then   
          do until Rs.EOF  
    
             SQL = " SELECT * FROM tbl_A "
             SQL = SQL & " WHERE "
             SQL = SQL & " idL = '" & Rs("idL_2") & "' "
             SQL = SQL & " AND DATA_E = '" & formatGMTDate(DATE(),0,"yyyy-mm-dd") & "' "        
             Set objRs = CreateObject("ADODB.Recordset")
             objRs.Open SQL, cn
             
             if objRs.eof then
    
                //ESEGUI UNA QUERY INSERT INTO IN TBL_A
             
             end if
    
             objRs.Close()
             Set objRs = Nothing 
    
          Rs.MoveNext()
       loop  
       
       end if

  4. #4
    puoi anche fare una COUNT(), così, se sono tanti record da controllare, vai un po' più spedito

  5. #5
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da optime
    puoi anche fare una COUNT(), così, se sono tanti record da controllare, vai un po' più spedito
    Scusa non ho capito come dovrei usare la COUNT() in questo contesto...

  6. #6
    la esegui, poi leggi objrs(0). se è>0 vuol dire che c'è già

  7. #7
    una curiosità che mi perseguita (non sei il primo a cui lo vedo fare)
    perchè fai

    SQL = " SELECT a.*, b.* "
    SQL = SQL & " FROM tbl_A a "
    SQL = SQL & " JOIN "
    SQL = SQL & " tbl_B b "
    SQL = SQL & " ON a.idL=b.idL "
    SQL = SQL & " AND a.DATA_E = '" & formatGMTDate(DATE(),0,"yyyy-mm-dd") & "' "
    SQL = SQL & " ORDER BY a.ID; "

    e non una cosa unica?

    SQL = " SELECT a.*, b.* FROM tbl_A a JOIN tbl_B b ON a.idL=b.idL AND a.DATA_E = '" & formatGMTDate(DATE(),0,"yyyy-mm-dd") & "' ORDER BY a.ID"

    ???
    non riesco a capire perchè creare tutte quelle righe di programma quando se ne può fare solo 1

  8. #8
    la stessa cosa al contrario sorprende me. la tua UNICA riga è breve. ma tu sai quanto può essere davvero LUNGA una stringa SQL.

    a quel punto diventa
    - illeggibile
    - ingestibile
    - inmanutenibile
    - foriera di errori

    IMHO, è meglio scrivere qualche riga in più di codice

  9. #9
    forse non mi sono mai posto il problema perchè le mie stringhe sql fino ad ora non sono mai state davvero lunghe

  10. #10
    Originariamente inviato da Grambo
    forse non mi sono mai posto il problema perchè le mie stringhe sql fino ad ora non sono mai state davvero lunghe
    ah, ecco...

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.