Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con date in NT server

Ho fatto un programma in vb6 e installato su un server NT.
Questo programma lavora su delle query SQL e date, prende anche la data
odierna dal server.
Se lo lancio con NT in login funziona perfettamente, mentre in logout no,
come se capisse la data del server in modo errato.
avete suggerimenti ?
p.s. è appoggiato a un db di access
pp.ss. ho utilizzato Format$(vData, "mm/dd/yyyy")
grazie
marco s.
www.marcosanti.it

[Xymox = 
circa_marcosa...@people.it
 in
c52rul$2nc05j$
1...@ID-122915.news.uni-berlin.de
] ha scritto:

Facci vedere la query, comunque, argomento che sta finendo in un polveroso
archivio per non essere mai più cercato..., le date in una Where verso
Access, vanno espresse nella forma #MM/GG/AAAA#, senza apicini...


Il problema non è della query, perchè funziona perfettamente quando il
server è in logon e anche sul mio winXP.
Credo che tutto dipenda dal NT server quando è in logout, cioè con la
finestra in cui devi inserire la password ... per intenderci.
p.s. il programma lo schedulo di notte e quindi il server è in questo stato.
cmq ecco la query:
vDataF = Format(DateAdd("d", -2, (Date)))     'Prendo la data di oggi e gli
tolgo due giorni
vDataI = DateAdd("d", gDay, vDataF)
T2.MoveFirst
Do Until T2.EOF
 While vDataI <= vDataF          'Controllo tutti i giorni lavorativi
  vDataI = Format(DateAdd("d", 1, vDataI), "dd/mm/yy")
  If (Format(vDataI, "w") <> 1) And (Format(vDataI, "w") <> 7) Then '"w"
    sSql = " SELECT T_Ore_Prog.CodDip, T_Ore_Prog.Data, Sum(T_Ore_Prog.NOre)
AS SommaDiNOre FROM T_Ore_Prog"
    sSql = sSql & " GROUP BY T_Ore_Prog.CodDip, T_Ore_Prog.Data"
    sSql = sSql & " HAVING (((T_Ore_Prog.CodDip)=" & Chr(34) & T2!offdCod &
Chr(34) & ") AND ((T_Ore_Prog.Data)=" & "#" & Format$((vDataI),
"mm/dd/yyyy") & "#" & "));"
    Set T3 = New ADODB.Recordset
    Set T3.ActiveConnection = dbADO
    T3.CursorLocation = adUseServer
    T3.Open sSql, , adOpenKeyset, adLockOptimistic
ecc.
ciao e grazie
marco s.

 vDataF = Format(DateAdd("d", -2, (Date)))
Non vado oltre.
vDataF deve essere di tipo Date (altrimenti il seguito sarebbe il caos).
Quindi perchè gli fai un format???
Il tuo codice è in realtà questo:
vDataF = CDate(Format(DateAdd("d", -2, (Date))))
quindi hai un CDate, che risente delle impostazioni internazionali. Una cosa
che ti frega è anche che oggi è l'otto, e 8<13 (capito mi hai?)
Ciao
Alberto

 quindi hai un CDate, che risente delle impostazioni internazionali.
Umh...
Qui potrei aver detto una cazzata, perchè Format senza argomenti è un CStr,
e CDate(Cstr si annullano, quindi è come se il format non ci fosse proprio.
A questo punto controllerei i tipi delle variabili.
Sei sicuro di avere dimensionato vDataI e vDataF come date?
Perchè se sono stringhe, hai dei CDate impliciti sparsi qua e là nel codice,
e Format (quando inserisci un formato specifico, anzichè lasciarlo come
parametri), non coincide più col CStr, quindi non si elide più col CDate
implicito e ti incasina.
Ciao
Alberto

 Sei sicuro di avere dimensionato vDataI e vDataF come date?
Sì, sono sicuro perchè all'inizio avevo commesso questo errore,ma in quel
caso non funzionava correttamente mai.
ciao marco s.

 quel caso non funzionava correttamente mai.
OK.
Allora questa č una cazzata immane:
vDataI = Format(DateAdd("d", 1, vDataI), "dd/mm/yy")
perchč equivale a:
vDataI = CDate(Format(DateAdd("d", 1, vDataI), "dd/mm/yy"))
e, come ti dicevo prima, un format con formato esplicitato non equivale ad
un CStr e non si elide, per cui questa cosa funziona solo con localizzazione
ITA o nei giorni del mese dal 13 in poi.
E, appunto oggi č l'otto.
ciao
Alberto

 T2!offdCod & Chr(34) & ") AND ((T_Ore_Prog.Data)=#" &
right(str(100+month(vDatal)),2) & "/" &
right(str(100+day(vDatal)),2) & "/" &
right(str(10000+year(vDatal)),4) & "#"

 vDataI = Format(DateAdd("d", 1, vDataI), "dd/mm/yy")
Ho messo vDataI = DateAdd("d", 1, vDataI) : funziona in egual modo.
Questo programma controlla le ore che inseriscono i dipendenti e crea un
file di testo con scritto quelli che si sono scordati e lo spedisce via
email.
Quindi guardando questo file capisco se ha funzionato correttamente o no.
In sintesi quando NT è in logout crea una lista che non ha senso, come se
traducesse la data odierna in modo errato.
Il problema stà tutto qui (imho)
 vDataF = Format(DateAdd("d", -2, (Date)))
ora provo così poi ti faccio sapere:
vDataF = DateAdd("d", -2, (Date))
Quello che continuo a non spiegarmi è perchè funziona correttamente solo con
NT in login.
p.s. Impostazioni internazionali ho settato quelle italiane.


 p.s. Impostazioni internazionali ho settato quelle italiane.
Questo per l'utente, non per LocalSystem, per cui sarebbe una possibilità.
Ciao
Alberto