Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757

    Ciclo For Next ed inserimento in db

    Ciao a tutti.

    Ho un codice del tipo:
    codice:
    Function dataShort(dtData) 
    dataShort = right("00"&day(dtData),2)&"/"&right("00"&month(dtData),2)&"/"& Year(dtData)
    End Function 
    
    ...
    
    do while not rs1.EOF
    
    data1=rs1("data1")
    data2=rs1("data2")
    
    for i = data1 to data2 step 1
    response.write dataShort(i) & "
    "
    next
    
    rs1.MoveNext
    loop
    Che restituisce tutte le date comprese tra data1 e data2... è possibile inserire queste date (quelle comprese tra data1 e data2) in un database? Se si, come?

    Grazie

  2. #2
    codice:
    Function dataShort(dtData) 
    dataShort = right("00"&day(dtData),2)&"/"&right("00"&month(dtData),2)&"/"& Year(dtData)
    End Function 
    
    ...
    
    do while not rs1.EOF
    
    data1=rs1("data1")
    data2=rs1("data2")
    
    for i = data1 to data2 step 1
     SQL = "INSERT INTO tabella_date (campo_data) VALUES (#" & dataShort(i) & "#)"
     Connessione.execute SQL 
    next
    
    rs1.MoveNext
    loop
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Ti ringrazio adesso inserisce nel dbase, ma c'è un problema: fai conto che:

    -data1 è 15-08-2005
    -data2 è 18-08-2005
    -date comprese nell'intervallo: 15-16-17-18/08/2005

    Si registrano due records uguali alla fine del ciclo (rec 4 e rec 5):
    codice:
     
    ID	Attiv	  Data1           Date2	
    1	xxxxx	2005/08/15	2005/08/18	
    2	xxxxx	2005/08/16	2005/08/18
    3	xxxxx 	2005/08/17	2005/08/18
    4	xxxxx	2005/08/18	2005/08/18
    5	xxxxx	2005/08/18	2005/08/18

  4. #4
    prova un po' così...

    codice:
    Function dataShort(dtData) 
    dataShort = right("00"&day(dtData),2)&"/"&right("00"&month(dtData),2)&"/"& Year(dtData)
    End Function 
    
    ...
    
    do while not rs1.EOF
    
    data1=rs1("data1")
    data2=rs1("data2")
    
    for i = 0 to datediff("d",data1,data2) step 1
     SQL = "INSERT INTO tabella_date (campo_data) VALUES (#" & dataShort(dateadd("d",data1,i))  & "#)"
     Connessione.execute SQL 
    next
    
    rs1.MoveNext
    loop
    ovviamente le modifiche sono sempre e solo quelle in rosso...
    san imente saluta

    * http://simonecingano.it *

  5. #5
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Grazie ma continua nel "problema":
    codice:
    FUNCTION dataShort(dtData) 
    dataShort = Year(dtData) &"/"& right("00"&month(dtData),2) &"/"& right("00"&day(dtData),2)
    END FUNCTION 
    
    DATA1  = datashort(Request.Form("DATA1"))
    DATA2  = datashort(Request.Form("DATA2"))
    
    for i = 0 to datediff("d",cDate(DATA1),cDate(DATA2)) step 1
      strSql = "INSERT INTO TABELLA_DATE (DATA1,DATA2) values (#" &dataShort(dateadd("d",cDate(DATA1),i))& "#, #" &DATA2 &"#)"
     objCONN.execute strSql
    next

  6. #6
    la cosa è a dir poco curiosa...
    ho testato con le mie mani e nessun tipo di problema...

    intanto comunque possiamo togliere i richiami alla tua funzione
    lavorando con dati DATE e inserendo in campo DATE la tua fuznione è ora inutile

    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    for i = 0 to datediff("d",DATA1,DATA2) step 1
      strSql = "INSERT INTO TABELLA_DATE (DATA1,DATA2) values (#" & dateadd("d",cDate(DATA1),i) & "#, #" &DATA2 &"#)"
     objCONN.execute strSql
    next
    non è ciò che causa il problema però pulire il codice è sempre buona cosa...

    -------------------

    ora come ora non riesco a vedere il problema...
    per ovviare possiamo fare una sconcezza...

    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    dim date_last, date_current
    for i = 0 to datediff("d",DATA1,DATA2) step 1
     date_current = dateadd("d",cDate(DATA1),i)
     if datediff("d",date_current,date_last) <> 0 then
      strSql = "INSERT INTO TABELLA_DATE (DATA1,DATA2) values (#" & formatdatetime(date_current,vbshortdate) & "#, #" & formatdatetime(DATA2,vbshortdate) &"#)"
     objCONN.execute strSql
      date_last = date_current
     end if
    next
    -------------------

    in ogni caso può essere utile che tu avvii QUESTO codice

    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    response.write "|" & DATA1 & "|-|" & DATA2 & "|"
    e mi dici che cosa viene a schermo
    san imente saluta

    * http://simonecingano.it *

  7. #7
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da imente
    la cosa è a dir poco curiosa...
    ho testato con le mie mani e nessun tipo di problema...
    -------------------
    in ogni caso può essere utile che tu avvii QUESTO codice

    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    response.write "|" & DATA1 & "|-|" & DATA2 & "|"
    e mi dici che cosa viene a schermo
    Restituisce questo:
    codice:
    |0.00.00|-|0.00.00|

  8. #8
    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    response.write "|" & Request.Form("DATA1") & "|-|" & Request.Form("DATA2") & "|
    "
    response.write "|" & formatdatetime(DATA1,vbshortdate) & "|-|" & formatdatetime(DATA2,vbshortdate) & "|"
    e questo?

    te lo chiedo per il semplice motivo che non ho tutto il codice, e siccome il problema non è nel codice ma nel meccanismo di input sto cercando di capire...

    --------------------------------------------------------

    in ogni caso prova l'ultimo codice che ti ho dato e guarda se funziona...

    codice:
    DATA1  = cdate(Request.Form("DATA1"))
    DATA2  = cdate(Request.Form("DATA2"))
    
    dim date_last, date_current
    for i = 0 to datediff("d",DATA1,DATA2) step 1
     date_current = dateadd("d",cDate(DATA1),i)
     if datediff("d",date_current,date_last) <> 0 then
      strSql = "INSERT INTO TABELLA_DATE (DATA1,DATA2) values (#" &  formatdatetime(date_current,vbshortdate)
     & "#, #" & formatdatetime(DATA2,vbshortdate) &"#)"
     objCONN.execute strSql
      date_last = date_current
     end if
    next
    dovrebbe ovviare al problema di DOPPIONI
    san imente saluta

    * http://simonecingano.it *

  9. #9
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Con il nuovo codice questa è la query restituita:
    codice:
    INSERT INTO TABELLA_DATE (DATA1, DATA2) values (#29/08/2005#, #31/08/2005#)
    
    INSERT INTO TABELLA_DATE (DATA1, DATA2) values (#30/08/2005#, #31/08/2005#)
    
    INSERT INTO TABELLA_DATE (DATA1, DATA2) values (#31/08/2005#, #31/08/2005#)

  10. #10
    beh... se come date gli hai dato

    da 29/08/2005 a 31/08/2005

    allora siamo a cavallo
    san imente saluta

    * http://simonecingano.it *

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.