Newsgroup: it.comp.appl.access
Titolo: Conversione orari





Ciao a tutti


Ho un problema di conversione dati con un progetto 
.adp di access;


Devo modificare gli orari inseriti in campi di tipo 
DateTime su SQL Server, pescando i valori su una maschera e passandoli 
a una stored procedure.


Il problema è che la s.p. si pianta.


Credo che il problema sia la conversione dei dati 
al tipo 'DateTime' della tabella sul server.


Non so come risolvere il problema.


Di seguito, se mi volete aiutare, riporto lo 
stralcio della routine che richiama la S.P. e la S.P. stessa:


 


questa è la routine...


'----------------------------------------------------------------------------


    Dim OraInizio As String, orafine 
As String, giorno
        OraInizio = 
"30/12/1899 " & Me.Testo26 & 
".00"
        orafine = "30/12/1899 " 
& Me.Testo28 & ".00"
        
giorno = Me.Testo32
    CurrentProject.Connection.Execute 
"AggiornaOrarioDomenicaPomeriggioEstivoInvernale ('" & giorno & "', '" 
& OraInizio & "', '" & orafine & 
"')"
'----------------------------------------------------------------------------


 


e questa è la stored...


'----------------------------------------------------------------------------


set ANSI_NULLS ON


set QUOTED_IDENTIFIER ON


GO


ALTER PROCEDURE 
[dbo].[AggiornaOrarioDomenicaPomeriggioEstivoInvernale] 


@DataIns DATETIME, @OraIn DATETIME, @OraFin 
DATETIME


AS


BEGIN




SET NOCOUNT 
ON;


UPDATE [Servizi].[dbo].[TurnazioneDomenicale] 



Set Orainizio = @OraIn, 


[OraFine] = @OraFin 


Where DataDomenica >= @DataIns AND [M/P] = 
'P';


END


'----------------------------------------------------------------------------


...Ma chi c..zo l'ha inventato il tipo di dati 
'DATETIME' ? Se lo piglio lo strozzo! 


Ciao a tutti, grazie, a presto


Agos


 


 



Ti consiglio di passare le date alla s.p. come stringhe in questo
formato (yyyymmdd hh:MM:ss):
ad es. la data del 29/09/2007 in '20070929 00:00:00'.
Nella s.p. devi poi convertire il parametro stringa in datetime:
CONVERT (DATETIME; @varDate; 102). Quindi supponiamo che nella WHERE
vogliamo filtrare un intervallo di date la ns. s.p. la scriveremo
così: WHERE     (Data BETWEEN CONVERT(DATETIME, @varDate_Begin, 102)
AND CONVERT(DATETIME, @varDate_End, 102)).
Riccardo

 ha scritto nel messaggio
news:1191108237.6...@w3g2000hsg.googlegroups.com...

Ciao Riccardo
Grazie per l'interessamento
Il problema però è che devo passare un orario e non una data.
Ho fatto alcuni esperimenti direttamente sul server e se nella stored invece
della variabile metto direttamente un orario in formato hh:mm:ss, badando a
intercalare con i due punti e non con il punto, la s.p. funziona.
Quando però passo un orario da una routine VB dichiarando la variabile di
tipo 'Date', le cose sono due:
1) se provo a formattare così: Format$(Testo26, "yyyymmdd hh:mm:ss") ... mi
dà errore "Tipo non corrispondente"
2)Se invece provo così: Format$(Testo26, "hh:mm:ss"), e cioè intercalando
con i due punti, me la ritrasforma intercalando con i punti e la s.p. non
l'accetta.
L'unico modo in cui sono riuscito a fargliela 'digerire' e a modificare i 
dati in tabella è statodichiarando la
variabile di tipo stringa e concatenando così:
'----
Dim OraInizio as String
OraInizio = "30/12/1899 " & Me.Testo26 & ".00", ottenendo '30/12/1899 
15:30:00'
'----
Quando però vado a richiamare altre s.p. che utilizzano il dato così 
modificato (che in
tabella, almeno apparentemente, non si distingue dagli altri) queste si 
piantano.
Spero che tu ci capisca qualcosa, perché mi rendo conto che la questione non
è neanche facile da spiegare. Se per strigare la matassa ti serve qualche 
altra indicazione fammi sapere.
Ciao, Agos

Se non puoi o hai difficoltà a modificare la sp e vuoi quindi passare
un parametro data/orario:
1) - per l'orario passa il parametro con la funzione di VB: ad es.
CDATE('15.30.00') inserendo i punti tra ora.min.sec.
2) - se vuoi passare la data/ora come stringa devi cambiare la data 0
che in Access è 30/12/1899 invece in SQL Server è 01/01/1900.
Riccardo