Newsgroup: it.comp.appl.access
Titolo: Come modificare l'ordine di lettura schede lan?

Quando creo un nuovo record, uso memorizzare alcune informazioni 
compreso l'ip address del pc che ha avviato la procedura di creazione 
nuovo record, all'interno di alcuni campi del record stesso
 
Uso questo codice
-----------------------------
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal 
wVersionRequired&, lpWSAData As WinSocketDataType) As Long
 
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
-----------------------------
Function GetIP() As String
     Dim IP$, DNS$, host$, x As Integer
     Dim GetComputer As String
     Dim Result%
     Dim LoBy%, HiBy%
     Dim SocketData As WinSocketDataType
 
     Result = WSAStartup(&H101, SocketData)
     If Result <> 0 Then
         MsgBox "Errore in winsock.dll", , "WINSOCK ERROR"
         End If
 
     x = 5
nt:
     IP = HostByName$(GetComputer, x)
 
     If Len(IP) = 0 And x >= 0 Then
         x = x - 1
         GoTo nt
         End If
 
     GetIP = IP
     CleanSockets
     End Function
--------------------------------
Private Sub CleanSockets()
    Dim Result&
    Result = WSACleanup()
    If Result <> 0 Then
       MsgBox "Errore in winsock.dll", , "WINSOCK ERROR"
      End If
End Sub
--------------------------------
 
Il problema e' che spesso, l'indirizzo restituito e' uno tra quelli 
disponibili per le schede rete del pc, e non e' detto sia sempre del 
tipo 192.168.1.xxx
E' possibile che la funzione sopra restituisca un 172.20.20.45 perche' 
la postazione ha anche una seconda scheda lan
 
E quindi la domanda e': come fare per 'ordinare' le schede lan pc in 
modo che la funzione sopra mi restituisca sempre un indirizzo del tipo 
192.168.1.xxx  ?
 


prova questa funzione
 
Public Function getIP()
 
     Dim objWMI As Object
     Dim objQuery As Object
     Dim objQueryItem As Object
     Dim vIpAddress
 
     Dim ipTarghet As String
     ipTarghet = "192.168.1"
 
     Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
     Set objQuery = objWMI.ExecQuery("Select * from 
Win32_NetworkAdapterConfiguration Where IPEnabled = True")
 
 
     For Each objQueryItem In objQuery
 
         For Each vIpAddress In objQueryItem.ipaddress
             If InStr(1, vIpAddress, ipTarghet) > 0 Then
                 Debug.Print vIpAddress
             End If
 
 
         Next
     Next
 
End Function
 
ti restituirà solo l'ip che corrisponde al tipo di rete che hai 
impostato in iptarghet... 192.168.1
 
 
ad ogni modo io non memorizzerei l'ip...visto che magari qualcuno è in 
dhcp o che in futuro in azienda possono cambiare le impostazioni di rete.
memorizzerei host e nome utente
 
BFS
 
 
 
 
 
 

 End Function
 
 
Si certo, pc e utente gia' vengono registrati, oltre all'ip, si sa mai
In realta' non l'ho mai usato nel senso che non e' mai servito a 
qualcosa praticamente, ma che alcuni pc dentro la stessa sottorete 
registrassero 192.168.xxx.yy ed altri 177.92.xx.yy mi urtava l'estetica  :)

 dhcp o che in futuro in azienda possono cambiare le impostazioni di rete. 
 
Già ... e c'è un'altra casistica svantaggiosa: ditte che utilizzano i programmi via RDP.
 
Saluti