Newsgroup: it.comp.appl.access
Titolo: Data server

Salve a tutti voi, avrei bisogno di sapere la data del server per poter 
registrare i preventivi e non sò come procedere.
In una form sul client riesco con txtdata=date e associo il txt ad un campo 
nella tabella preventivi.
Purtroppo o per fortuna però ho anche un automatismo che mi azzera il 
numeratore in funzione dell'anno e se qualche client sballa la data mi mette 
in crisi tutto il sistema e perciò avrei bisogno di sostituire questa 
variabile con una txtdata=date server() ma così non funge.
Avete qualche consiglio?
Saluti Andrea 

 Saluti Andrea
Certo...
http://www.accessgroup.it/HomeArgomenti.asp?ID=120&Oggetto2=Recuperare%20DATI%20da%20SERVER%20REMOTO
;-)
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97 e 2000
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchč un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media." 

 
http://www.accessgroup.it/HomeArgomenti.asp?ID=120&Oggetto2=Recuperare%20DATI%20da%20SERVER%20REMOTO
Ciao Maurizio, mi sono dimenticato di specificare che il server che uso non 
č collegato ad internet, č un server in rete locale.
Pensi che vada bene comunque creare una pagina asp, non esiste un sistema 
piů semplice?
Saluti Andrea 

 Saluti Andrea
Se è un server locale, e ha il servizio IIS attivo (quindi sostiene cmq il 
Web - XP professional - WinNT/2k server) lo puoi fare richiamando l'IP 
locale.... quindi la chiamata risulterà 
http://192.168.0.1
(Es.)/data.asp
Altro sistema attendibile e valido come questo secondo me non ce n'è.
Ma ciò non toglie che potresti anche creare ad es. un file.txt con la data 
aggiornata di un PC che funge da server, e leggerne il contenuto dai pc 
client... questo però ti costringe a generare ogni giorno (anche se 
automatizzi il tutto) il file.txt aggiornato. (tutti gli altri tentativi 
secondo me non sono validi quanto il primo, ma questa è opinione personale.)

 personale.)
Purtroppo non ha il il servizio IISattivo, pertanto proverò con il sistema 
del txt come dici tu ma  non capisco una cosa, come faccio a generare il txt 
con la data del server senza usare il server? Se devo creare l'automatismo 
deve essere un'automatismo generato da un qualsiasi client e quindi anche 
questo dovrebbe interrogare il server per sapere che data è riproponendo il 
problema dall'inizio.
Sul server non ci sono installati programmi e quindi non potrei aprire 
access tutte le mattine per cambiar data e poi sarebbe comunque un passo 
indietro.
SalutiAndrea
Mi sembra strano però che non ci sia un sistema più semplice per interrogare 
un server e sapere da lui che data è oggi, 

 interrogare un server e sapere da lui che data è oggi,
Ma come potresti mai interagire da locale chiedendo da un S.O. Client info 
di sistema di un S.O. Server ? Fosse già solo per le autorizzazioni admin, 
già la vedrei complicata, ma poi, se il server, non genera la risposta a 
domande non consentire, che dato vorresti recuperare? Spero per te di 
sbagliarmi, e sono pronto eventualmente a segnare sulle mie note un altra 
cosa imparata.
;) 

 data, aggiornato. Poi i Client andrebbero ad interrogare quest'ultimo.
Anche su XP Pro o HOME si puà installare l'IIS (su pro in maniera nativa su 
home con un barbatrucco)

 cosa imparata.
Vediamo un pò come si sviluppa la cosa.
ci sarebbe un'altra soluzione.... si potrebbe proporre ad accesgroup o al 
sitocomune di metterci a disposizione una pagina asp con la data, chiedo 
troppo? ;)
Saluti Andrea 

 ha scritto nel messaggio 
news:efrcga$52o$1...@area.cu.mi.it...

Certo... 

 licenza Access e questo non è molto conveniente.
Ti basta un semplice file vbs creato con Blocco note e schedulato semel in 
die
MAssimiliano 

 Saluti Andrea

VedoTondo ha scritto:

Si può sapere cosa devi fare...?
Se devi sincronizzare il PC locale basta una SHELL...!
Usa il comando dos NET TIME \\server /SET /YES,
lanciato con shell
Altrimenti ti avevo giuà risposto anche privatamente su dove reperire
le API
per fare questo...!!
Metti il codice seguente in un Modulo e richiama così:
Me!txtora=GetServerTime("NomeSERVER")
per ricevere la data completa modifica la funzione DateSerial che
trovi....!
---------------------------------------------------------------------------­--------------------------------
NetRemoteTOD
The NetRemoteTOD function returns the time of day information from a
specified server.
Qui metto un esempio sull' uso di tale api:
Option Explicit
Private Type TIME_OF_DAY_INFO
    tod_elapsedt As Long
    tod_msecs As Long
    tod_hours As Long
    tod_mins As Long
    tod_secs As Long
    tod_hunds As Long
    tod_timezone As Long
    tod_tinterval As Long
    tod_day As Long
    tod_month As Long
    tod_year As Long
    tod_weekday As Long
End Type
Private Declare Function NetRemoteTOD Lib "Netapi32.dll" ( _
                    ByRef yServer As Any, _
                    ByRef pBuffer As Long _
                    ) As Long
Private Declare Function NetApiBufferFree Lib "Netapi32.dll" ( _
                    ByVal lpBuffer As Long _
                    ) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
                    ByRef Destination As Any, _
                    ByRef Source As Any, _
                    ByVal Length As Long _
                    )
Public Function GetServerTime(ByVal strServerName As String) As Date
    Dim apiRet As Long              '// ritorno della chiamata all' api
    Dim tod As TIME_OF_DAY_INFO     '// data e ora cercate
    Dim lpBuffer As Long            '// puntatore al buffer da copiare
nel record tod
    Dim arrServerName() As Byte     '// stringa Unicode da passare all'
api
    '// copia la stringa in formato unicode in un array
    '// terminato da carattere nullo, per passarlo a NetRemoteTOD
    '// occorre fare cosi' perche' se no VB la converte in stringa ANSI
    '// nel passarla all' api
    arrServerName = strServerName & vbNullChar
    apiRet = NetRemoteTOD(arrServerName(0), lpBuffer)
    Erase arrServerName()
    If apiRet = 0 Then
        '// copia il buffer di cui l' api ci ha fornito il puntatore
        '// nella struttura tod per leggere i dati facilmente
        CopyMemory tod, ByVal lpBuffer, Len(tod)
        '// libera il buffer allocato dall' api
        NetApiBufferFree lpBuffer
        '// calcola la data e ora ottenute
        With tod
        GetServerTime = DateSerial(.tod_year, .tod_month, .tod_day) + _
                    TimeSerial(.tod_hours, (.tod_mins - .tod_timezone),
.tod_secs)
        End With    '// tod
    Else
        '// si e' verificato un errore
        GetServerTime = 0
    End If 
End Function    '// GetServerTime 
@Alex

 Io la pagina te l'ho impostata.
Grazie! 

 Grazie!
Io dò certezze sulle mie cose, non su quelle degli altri... il server di 
Aruba è di aruba, pertanto non dovrebbero esserci problemi, ma in caso 
contrario non potrei garantirtelo.... cmq mi sembra che alessandro ti abbia 
suggerito dell'altro... e anche cosa molto interessante... io avevo pensato 
a GetServerDate di C++, ma come vedo c'è anche GetServerTime che non 
conosco... 

Pablitomf (Maurizio Facciuti) ha scritto:

GetServerDate non è C++ ma da quanto ho visto è una Funzione
richiamabile con Java o PHP ed immagino ASP, ma lato Server quindi
richiede sempre IIS(nel suo caso)...!
Altrimenti servirebbe creare un WebService da istanziare con
SOAP...!(che non sarà più supportato dal 2007 a vantaggio di NET).
;-)
GetServerTime (API) invece è fatto appositamente per lavorare in rete
LAN.
@Alex

 conosco...
GetServerDate non è C++ ma da quanto ho visto è una Funzione
richiamabile con Java o PHP ed immagino ASP, ma lato Server quindi
richiede sempre IIS(nel suo caso)...!
Altrimenti servirebbe creare un WebService da istanziare con
SOAP...!(che non sarà più supportato dal 2007 a vantaggio di NET).
;-)
Ma non era SAOP?
;-)
@Alex
Ciao
Daniele

 non conosco...
Ok! Grazie di tutto domani provo.
Saluti Andrea 

 ha scritto nel messaggio 
news:1159805640....@k70g2000cwa.googlegroups.com...
    Si può sapere cosa devi fare...?
    Se devi sincronizzare il PC locale basta una SHELL...!
Ti spiego, ho tre client ed un server e da tutte e tre le postazioni client 
prendo l'ultima data e l'ultimo numero assegnato + 1
poi ho una funzione che azzera il numeratore a fine anno e questa funzione 
ovviamente è sul FE pertanto se ho un client con la data sbagliata e non mi 
accorgo del problema mi fà azzerare il numeratore, pensa tu quando poi mi 
collego e richiedo il numero progressivo con il secondo client che ancora ha 
la data giusta (parlo di anno) succede un patatrac.
Pertanto devo trovare una soluzione che metta in condizione il sistema di 
non avere pecche e mi sembra di capire grazie a tutti voi che il sistema c'è 
anzi vedo che avete tirato fuori il meglio!!
Pertanto vedrò magari di usare un sistema misto visto che gli aggiornamenti 
spesso li faccio su un portatile con be e fe nella stessa cartella.
Quindi potrei usare il server interno con il sistema che tu indichi sotto 
(mi sembra chiaro ma se ho dei dubbi chiederò), in alternativa se il 
meccanismo non trova il server, gli proverò a chiedere la data con il 
sistema della pagina asp, se poi non trova nemmeno questa posso passargli la 
data del pc del FE.
    Usa il comando dos NET TIME \\server /SET /YES,
    lanciato con shell
Purtroppo non sò di che parli.
    Altrimenti ti avevo giuà risposto anche privatamente su dove reperire
    le API
    per fare questo...!!
Si avevo visto!
-----------------------------
    Metti il codice seguente in un Modulo e richiama così:
    Me!txtora=GetServerTime("NomeSERVER")
    per ricevere la data completa modifica la funzione DateSerial che
    trovi....!
[cut]
---------------------------------
Domani provo e vi faccio sapere ma mi sembra che mi abbiate dato suffiente 
materiale per farmi venire un bel mal di testa :)
Saluti Andrea 

Purtroppo non sò di che parli.
Beh cosa significa, basta leggere ed informarsi...!
NET TIME è un servizio che provvede a prelevare la DATA_ORA da un
Server ed impostarla.
Lanci la procedura ogni volta che apri l'applicativo....!
Essendo un comando DOS è semplicemente una stringa da eseguire...!
dim ret
ret=Shell("NET TIME \\NomeServer /SET /YES",vbHide)
Meglio ancora sarebbe attendere la fine del processo:
Sub MyShell(ByVal Percorso As String, _
            ByVal windowstyle As Integer, _
            ByVal Attendi As Boolean)
Dim wshell As Object
Set wshell = CreateObject("WScript.shell")
wshell.Run Percorso, windowstyle, Attendi
Set wshell = Nothing
End Sub
---------------
Per l'utilizzo
----------
MyShell "NET TIME \\NomeServer /SET /YES",0,1
A questo punto il Client è sincronizzato con il Server e non servono
altri accrocchi...!
@Alex

 ha scritto nel messaggio 
news:1159856621....@i3g2000cwc.googlegroups.com...
    Devi usare il comando per sincronizzare i Client non fare degli
    accrocchi...!
ci provo :-)
    Usa il comando dos NET TIME \\server /SET /YES,
    lanciato con shell
    Beh cosa significa, basta leggere ed informarsi...!
Hai perfettamente ragione, ma devo confessarti che più vado avanti e meglio 
riesco ad informarmi e a capire quello che dite e vari aspetti della 
programmazione che non avevo mai considerato.
Considera che sono autodidatta e quindi dedico poco del mio tempo alla 
programmazione, anche se devo ammettere che ne farei il lavoro principale se 
dipendesse da me.
Apro i libri spesso e non ci capisco una cippa anche se ti posso garantire 
che ne ho già diversi poi un pezzettino alla volta grazie anche al vostro 
aiuto (diretto /indiretto), riesco a entrare nei meriti ed a capire quello 
che c'è scritto.
Tu non ti immagini come sia fuso il tasto F8 dei miei PC per capire cosa gli 
fate fare a questi programmi e devo dire che spesso vi invidio.
    NET TIME è un servizio che provvede a prelevare la DATA_ORA da un
    Server ed impostarla.
Vedi! tu non ti rendi conto ma era quello che cercavo e lo dici con 
semplicità e disinvoltura!
Acc.... mi viene di dire così semplice?
    Lanci la procedura ogni volta che apri l'applicativo....!
Perfetto!
    Essendo un comando DOS è semplicemente una stringa da eseguire...!
dim ret
ret=Shell("NET TIME \\NomeServer /SET /YES",vbHide)
Meglio ancora sarebbe attendere la fine del processo:
Sub MyShell(ByVal Percorso As String, _
            ByVal windowstyle As Integer, _
            ByVal Attendi As Boolean)
Dim wshell As Object
Set wshell = CreateObject("WScript.shell")
wshell.Run Percorso, windowstyle, Attendi
Set wshell = Nothing
End Sub
---------------
Per l'utilizzo
----------
MyShell "NET TIME \\NomeServer /SET /YES",0,1
A questo punto il Client è sincronizzato con il Server e non servono
altri accrocchi...!
Ho messo a punto il sistema e funziona, ti dirò di più ho il FE che ha il 
relink automatico con il BE e avevo paura che se non trovasse il server si 
piantasse tutto ed invece con sommo stupore mi sono accertato che in 
mancanza di server tutto fila liscio anche se ho il BE in locale.
Nei prossimi giorni vedrò se posso rendere dinamico il nome del server in 
maniera che se sposto il programma  si registri il nome del server in 
automatico.
Non che mi serva ma sarebbe una leccatura eccezionale, magari finisco di 
strusciare un'altro pò il tasto F8 sul modulo di relink per vedere se già 
ricevo il nome del server da quell'automatismo.
Saluti Andrea

 Saluti Andrea
Fossi in te userei un File INI o il salvataggio nel Registry del nome
del server, non c'è
una procedura per ricavarlo, in una rete LAN possono esserci + server e
tu potresti connetterti
con tutti...!
In sostanza deve essere una Costante che devi rendere
Variabile(Gestibile).
@Alex

 ha scritto nel messaggio 
news:1159880579....@c28g2000cwb.googlegroups.com...
Fossi in te userei un File INI o il salvataggio nel Registry del nome
del server,
Sono cose che non conosco, magari nei prossimi giorni riposto un'altro 
thread e vediamo di approfondire.
Grazie per ora
Saluti Andrea