Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,648
    non mi pare access accetti aaaa/mm/gg nel campo di tipo data

    recupera le date in un formato gg/mm/aaaa
    all'atto dell'inserimento, se hai problemi a far digerire la data ad access,
    forza il formato anglosassone: format(#"&dataStart&"#, 'mm/dd/yyyy')
    ovviamente anche le query in lettura sulla tabella dovranno avere lo stesso formato

    questo per l'inserimento, devi fare ancora il controllo preliminare sulla disponibilità

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    359
    Grazie Vincent, ma avevo già provato e risultati nulli. Comunque questo è il codice che ho attualmente usato:
    codice:
    If (CStr(Request("compila")) = "1") Then
    	Nome = replace(request.Form("Torneo"),"'","''")
    	DataStart = request.Form("DataStartTorneo")
    	GiornoStart = Mid(DataStart, 9, 2)
    	MeseStart = Mid(DataStart, 6, 2)
    	AnnoStart = Mid(DataStart, 1, 4)
    	DataStart1 = MeseStart&"/"&GiornoStart&"/"&AnnoStart
    	
    	DataStop = request.Form("DataStopTorneo")
    	GiornoStop = Mid(DataStop, 9, 2)
    	MeseStop = Mid(DataStop, 6, 2)
    	AnnoStop = Mid(DataStop, 1, 4)
    	DataStop1 = MeseStop&"/"&GiornoStop&"/"&AnnoStop
    	
    	if (RsTornei.eof or RsTornei.bof) then		
    		Set cn1 = Server.CreateObject("ADODB.Connection")
    		cn1.Open strConn
    		GiorniTorneo = datediff("d", DataStart, DataStop)
    		for x = 0 to GiorniTorneo
    			sql = "INSERT INTO "&TabAttuale&"( Nome, Data, Occupato) " &_
    			 "VALUES ( '" & Nome & "',#" & DataStart1 & "#,1)"
    			cn1.Execute sql
    			DataStart1 = dateadd("d", 1, DataStart1)
    		next
    	end if
    		response.Redirect("crea_torneo.asp?m="&GiorniTorneo)
    end if
    Come vedi formatto la datastart1 mm/gg/aaaa ma quando inserisco i record nella tabella, finchè si tratta di date con il giorno minore o uguale a 12 li inserisce con mm/gg/aaaa, mentre dal 13 del mese in poi le mette come gg/mm/aaaa. Vedi sotto. Come faresti te?
    Data
    04/04/2017
    04/05/2017
    04/06/2017
    04/07/2017
    04/08/2017
    04/09/2017
    04/10/2017
    04/11/2017
    04/12/2017
    13/04/2017
    14/04/2017
    15/04/2017
    16/04/2017
    17/04/2017
    18/04/2017
    19/04/2017
    20/04/2017
    Chi Crede in Me non Perirà MAI

  3. #13
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    359
    No aspetta Vincent forse ci sono molto vicino, avevo dimenticato di seguire i tuoi insegnamenti e questo è il risultato.
    codice:
    If (CStr(Request("compila")) = "1") Then	Nome = replace(request.Form("Torneo"),"'","''")
    	DataStart = request.Form("DataStartTorneo")
    	DataStop = request.Form("DataStopTorneo")
    	
    	if (RsTornei.eof or RsTornei.bof) then		
    		Set cn1 = Server.CreateObject("ADODB.Connection")
    		cn1.Open strConn
    		GiorniTorneo = datediff("d", DataStart, DataStop)
    		for x = 0 to GiorniTorneo
    			sql = "INSERT INTO "&TabAttuale&"( Nome, Data, Occupato) " &_
    			 "VALUES ( '" & Nome & "',format(#"&DataStart&"#, 'mm/dd/yyyy'),1)"
    			cn1.Execute sql
    			DataStart = dateadd("d", 1, DataStart)
    		next
    	end if
    		response.Redirect("crea_torneo.asp")
    end if
    Adesso è quasi tutto ok, perchè le date le inserisce tutte giuste nel db tranne la prima, guarda.
    Che ne pensi? Le date vanno dal 10 al 20 aprile 2017.
    Data
    04/10/2017
    11/04/2017
    12/04/2017
    13/04/2017
    14/04/2017
    15/04/2017
    16/04/2017
    17/04/2017
    18/04/2017
    19/04/2017
    20/04/2017
    Chi Crede in Me non Perirà MAI

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    359
    RISOLTO!!!!!!
    ho aggiunto prima del ciclo for questa riga che server , non domandarmi il perchè a formattare anche il primo record nel formato mm/gg/aaaa
    DataStart = dateadd("d", 0, DataStart)
    Comunque grazie e se avrò altro bisogno, ti faccio un chat.
    GRAZIE e te a tutti gli altri
    Chi Crede in Me non Perirà MAI

  5. #15
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    359
    Adesso come faccio a fare il controllo sulla tabella per vedere se è occupato?
    nella tabella ho i campi (Nome, Data, Occupato), il campo nome è il nome del torneo, il campo data esprime le date dall'inzio del torneo alla fine e di conseguenza il campo occupato è fleggato su SI.
    Come posso procedere adesso? devo confrontare le date che immetto con il valori contenuti nella tabella, giusto ma in che modo ? con quale ciclo. Grazie
    Chi Crede in Me non Perirà MAI

  6. #16
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,648
    la soluzione che hai applicato (DataStart = dateadd("d", 0, DataStart)) credo ti abbia dato un risultato per caso, non affidabile. hai impostato il formato dati in italiano nelle pagina (session.lcid=1040)?

    il modo più conveniente per fare il controllo è sfruttare l'operatore between
    esempio teorico:
    codice:
    select * from tabella where data between dataStart and dataStop
    ....
    ....
    conta=0
    do while not rs.eof
    
    if rs("occupato") then
        conta=conta+1
        response.write " il "&rs("data")&" è occupato da "&rs("nome")&"<br>"
    else
        response.write " il "&rs("data")&" è libero<br>"
    end if
    
    rs.movenext
    loop
    
    if conta =0 then procedo else mifermo
    Ultima modifica di Vincent.Zeno; 09-04-2017 a 11:33

  7. #17
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    Quote Originariamente inviata da devil946 Visualizza il messaggio
    Aiuto mi ci sono annodato.
    codice:
    If (CStr(Request("compila")) = "1") Then
        Nome = replace(request.Form("Torneo"),"'","''")
        DataStart = request.Form("DataStartTorneo")
        GiornoStart = Mid(DataStart, 9, 2)
        MeseStart = Mid(DataStart, 6, 2)
        AnnoStart = Mid(DataStart, 1, 4)
        DataStart1 = MeseStart&"/"&GiornoStart&"/"&AnnoStart
        
        DataStop = request.Form("DataStopTorneo")
        GiornoStop = Mid(DataStop, 9, 2)
        MeseStop = Mid(DataStop, 6, 2)
        AnnoStop = Mid(DataStop, 1, 4)
        DataStop1 = MeseStop&"/"&GiornoStop&"/"&AnnoStop
        
        if (RsTornei.eof or RsTornei.bof) then        
            Set cn1 = Server.CreateObject("ADODB.Connection")
            cn1.Open strConn
            GiorniTorneo = datediff("d", DataStart, DataStop)
            for x = 0 to GiorniTorneo
                sql = "INSERT INTO "&TabAttuale&"( Nome, Data, Occupato) " &_
                 "VALUES ( '" & Nome & "',#" & DataStart & "#,1)"
                cn1.Execute sql
                DataStart = dateadd("d", 1, DataStart)
            next
        end if
            response.Redirect("crea_torneo.asp")
    end if
    DataStart e DataStop sono nel formato aaaa/mm/gg.
    Quando vado ad inserire i valori nella tabella , questo è il risultato: datastart : 05 aprile 2017 e datastop 21 aprile 2017.
    Come ne esco? Grazie
    Data
    05/04/2017
    04/06/2017
    04/07/2017
    04/08/2017
    04/09/2017
    04/10/2017
    04/11/2017
    04/12/2017
    13/04/2017
    14/04/2017
    15/04/2017
    16/04/2017
    17/04/2017
    18/04/2017
    19/04/2017
    20/04/2017
    21/04/2017
    Devi impostare prima di SQL un campo formattato correttamente nel formato corretto
    da come ho visto #mese/giorno/anno# usando un campo apposta e uno spicciolo di istruzioni prima della insert
    [quote]
    giorno=val(right(datastart,2)) + x
    datains="#"&mid(datastart(5,2)&"/"&giornoins&"/"&left(datastart,4)&"#"
    ....
    sql = "INSERT INTO "&TabAttuale&"( Nome, Data, Occupato) " &_
    "VALUES ( '" & Nome & "'," & datains & ",1)"
    cn1.Execute sql
    [/quota]
    poi come ti avevo suggerito, il flag potrebbe non servire a niente perche la presenza della data con il codice torneo è piu che sufficiente, se trovi il record tramite inquiry SQL vul dire che la data è impegnata e esci subito dal ciclo di controllo per dare l'errore....
    Ultima modifica di vic53; 09-04-2017 a 12:37
    Vic53

  8. #18
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    alla riga
    giorno=val(right(datastart,2)) + x
    sostituisci
    giornoins=right("00" &val(right(datastart,2)) + x,2)
    perchè se no no forma una data corretta con i giorni da 1 a 9 e poi avevo copiato male la variabile
    Vic53

  9. #19
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    359
    Grazie
    Si può chiudere
    Chi Crede in Me non Perirà MAI

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