Qui est dans application

Résolu
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008 - 8 juil. 2004 à 16:09
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008 - 13 juil. 2004 à 21:49
Bonjour,

Toujours la même application! Nous travaillons en réseau et j'aimerais que le code de l'utilisateur qui est dans mon application, s'inscrive dans une table de ma base de données access qui est en arrière plan.

Je sais comment faire dans un module dans access, mais je ne sais pas comment modifier ce code pour que ça marche dans VB.

Voici le code utilisé dans Access, comment l'adapter pour VB???

Option Compare Database 

Public Type_Module As String 

Declare Function wu_GetUserName Lib "advapi32.dll" Alias _ 
   "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _ 
As Long 

Function ap_GetUserName() As Variant 
    
Dim strUserName As String 
Dim lngLength As Long 
Dim lngResult As Long 

   '-- Set up the buffer 
   strUserName = String$(255, 0) 
   lngLength = 255 

   '-- Make the call 
   lngResult = wu_GetUserName(strUserName, lngLength) 
    
   '-- Assign the value 
   ap_GetUserName = UCase(Left(strUserName, 7)) 
    
End Function




Si quelqu'u peut m'aider s.v.p J'ai besoin de vos lumières

11 réponses

kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
13 juil. 2004 à 21:49
J,AI TROUVÉ!!!!

'**********************************************
' Écrire le Code Nt dans la table DbBase      *
'**********************************************
Public Function EcrireQuiDepot(qui As String)
    If TesterBD() = True Then
        Dim chemin As String
        chemin = cheminDbBase
        adoDepannage.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin & ";Persist Security Info=False"
        adoDepannage.RecordSource = "quiDepot"
        adoDepannage.Refresh
        txtChemin.DataField = "quiDepot"
        If adoDepannage.Recordset.RecordCount > 0 Then
            adoDepannage.Recordset.Delete
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
            adoDepannage.Recordset.AddNew
            txtChemin.Text = qui
            adoDepannage.Recordset.Update
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
           
        Else
            adoDepannage.Recordset.AddNew
            txtChemin.Text = tempo
            adoDepannage.Recordset.Update
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
        End If
    End If
End Function


Fonction qui va me donne le code dans un message box

'*******************************************************************************************
' Fonction qui verifier le code NT de la personne connectée a la base de données Depot     *
'*******************************************************************************************
Public Function VerifierQuiDepot()
    Dim cnx As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim chemin As String
    chemin = cheminDbBase
    cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin & ";Persist Security Info=False"
    cnx.Open
    rst.Open "SELECT quiDepot FROM quiDepot", cnx
    While Not (rst.EOF)
        VerifierQuiDepot = rst("quiDepot")
        rst.MoveNext
    Wend
    cnx.Close
    Set cnx = Nothing
End Function


Merci Philippe de m'avoir frait réfléchir
3
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
9 juil. 2004 à 10:27
Exactement la même chose dans un module VB.
Par contre tu peux être amené à mettre ta fonction en Public si tu souhaites l'appeler d'ailleur (fenêtre, module différent, ...)
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
9 juil. 2004 à 15:09
Tu dis que c'est la même chose, mais je commence en vb et je ne sais pas comment je le mets dans mon code.

Dois-je le mettre dans mon formulaire? Dois-je appeler la fonction ap_GetUserName et où je vais voir le code de l'utilisateur???

Comme tu vois j'ai besoin des points sur les i :blush)
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
9 juil. 2004 à 15:28
Suite:

Autre question: Comment modifier la partie:

Public Type_Module As String 

Declare Function wu_GetUserName Lib "advapi32.dll" Alias _ 
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _ 
As Long 



pour VB car Declare Function n'est pas reconnu..

J'espère ne pas trop vous décourager!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
9 juil. 2004 à 16:12
Ce que je donne est à titre d'exemple pour VB6 (je ne connais pas .Net)

Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type

Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias _
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID)
As Long

Cet exemple de déclaration API doit être inséré dans un module VB (pas une fenêtre, pas un module de classe).
Il ne te reste plus qu'à insérer une fonction publique qui implémente ton API.
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
9 juil. 2004 à 16:33
J'ai créé un module et j'ai mis ton code dedans....Je travail en VB6 et non en .net....

Après tu dis d'insérer une fonction publique qui implémente ton API!

Comment faire, je suis vraiment à mes début, décourage toi pas!!!!

Où vais-je retrouver l'information soit le nom de la personne, dans une table, un message box... ....??
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
10 juil. 2004 à 12:26
Ton module doit ressembler à ceci

Option Explicit

Private Declare Function wu_GetUserName Lib "advapi32.dll" Alias _ 
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _ 
As Long 

Public Function ap_GetUserName() As Variant

Dim strUserName As String 
Dim lngLength As Long 
Dim lngResult As Long 

'-- Set up the buffer 
strUserName = String$(255, 0) 
lngLength = 255 

'-- Make the call 
lngResult = wu_GetUserName(strUserName, lngLength) 

'-- Assign the value 
ap_GetUserName = UCase(Left(strUserName, 7)) 

End Function


Tu récupères ton utilisateur avec la même fonction qu'avant ... ap_GetUserName
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
13 juil. 2004 à 18:55
Je pensais que tout fonctionnait bien mais voici le problème lorsque je recoit le nom de la personne qui est dans l'application, c'est toujours mon nom et non celui qui est branché avant moi.

Exemple: Boum23 est branché, j'essai de rentré dans l'application et je recoit comme nom dans mon msgBox truch34 (qui est mon code)????

Pouvez-vou m'aider?
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
13 juil. 2004 à 19:32
C'est tout à fait normal ... l'utilisateur récupéré est l'utilisateur courant.
Donc pour toi, cette fonction ne renverra que toi.
Pour les autres utilisateurs, cette fonction ne renverra que eux-même.

Tu disais vouloir stocker les noms dans une table, ne le fais-tu pas ?
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
13 juil. 2004 à 19:37
Je le récupère pas dans une table mais ça doit être la solution.

Comment au load du frm je pourrais récupérer le nom de l'utilisateur qui se branche avec ap_GetUserName et le mettre dans une table de ma base de données? Comme ça je pourrais savoir qui est branché!
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
13 juil. 2004 à 19:55
En regardant mon code je me demande si je peux dans le code suivant faire que le ap_GetUserName s'inscrive dans une table Qui lorsque l'utilisateur se log à la base...


'**********************************************
' Écrire le quelqu'UN dans la table DbBase *
'**********************************************
Public Function EcrireQuelquunReg(tempo As String)
    If TesterBD() = True Then
        Dim chemin As String
        
        chemin = cheminDbBase
        adoDepannage.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin & ";Persist Security Info=False"
        adoDepannage.RecordSource = "qqcnReg"
        adoDepannage.Refresh
        txtChemin.DataField = "qqcn"
        
        If adoDepannage.Recordset.RecordCount > 0 Then
            adoDepannage.Recordset.Delete
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
            adoDepannage.Recordset.AddNew
            txtChemin.Text = tempo
            adoDepannage.Recordset.Update
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
            
        Else
            adoDepannage.Recordset.AddNew
            txtChemin.Text = tempo
            adoDepannage.Recordset.Update
            adoDepannage.Refresh
            adoDepannage.Recordset.Requery
        End If
    End If

End Function
0
Rejoignez-nous