Vai vēlaties uzzināt, kurš jūsu uzņēmumā pievienoja konkrētu ierakstu? Vai arī kurš to pēdējo reizi atjaunināja? Tā ir diezgan izplatīta prasība, taču diemžēl Microsoft Access nav iebūvējis funkcionalitāti šai prasībai. Vienkārši pievienojot tabulai lauku “pēdējoreiz atjaunināja” (daudzos gadījumos), var pietikt, lai apmierinātu lielāko daļu vajadzību, bet kā jūs zināt, kurš atjaunināja ierakstu, ja Access to nevar pateikt? Viss, kas jums nepieciešams, ir nedaudz VBA koda, kā parādīs šis raksts.
Lietotāja vārda tveršanai nav jāizveido sava “pieteikšanās” veidlapa
Ja vien jūsu datu bāzei nav savas pieteikšanās formas vai mehānisma, vienīgais veids, kā varēsiet uzzināt, kurš pašlaik izmanto / pieteicies datu bāzē, ir izmantot kādu no Windows operētājsistēmas failiem - īpaši “mpr.dll”. failu. Ja jūs savā kodā iepriekš neesat izmantojis ārējos dll, tas var šķist nedaudz biedējošs, bet, kā redzēsit zemāk esošajā kodā, tas faktiski ir diezgan taisni uz priekšu.
Tātad - definēsim, ko mēs vēlamies, lai mūsu kods dara ...
"Ļaujiet man norādīt pašlaik reģistrētā lietotāja vārdu"
Pirmkārt, kods:
Declare Function GetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal Name As String, ByVal UserName As String, Length As Long) As Long Public Function GetUserName() As String Dim returnStatus As Integer Dim Name, UserName As String 'Allocate space for user name to be stored in UserName = Space(255) ' Call the aliased function in the mpr.dll file. returnStatus = GetUser(Name, UserName, 255) If returnStatus = 0 Then 'Strip the username from the returned string UserName = Left(UserName, InStr(UserName, Chr(0)) - 1) Else ' An error occurred. GetUserName = "Error retrieving the user name." End End If GetUserName = UserName End Function
Kods, paskaidrots
Pirmā lieta, ko redzēsiet, ir tā, ka mēs atsaucamies uz ārējo funkciju, kas atrodas failā mpr.dll. Mēs to darām, deklarējot vietējo nosaukumu (GetUser) publiskajai funkcijai, kas atrodas dll (šajā gadījumā WNetGetUserA). - mēs arī definējam, kādi parametri ir nepieciešami funkciju izsaukumam - šajā gadījumā parametri “Name”, “UserName” un “Length”. Vienīgais, kas mūs šeit patiešām interesē, ir “UserName”, taču arī pārējais ir jāpiegādā, jo tieši tā funkcija tiek iestatīta dll.
Tagad, kad tas ir izdarīts, mēs izveidojam savu funkciju, no kuras izsauksim šo ārējo funkciju. Mūsu funkcijas kods ir diezgan minimāls, bet apskatīsim galvenos elementus:
- “UserName = Space(255)” — ja soli pa solim pārskatīsiet kodu atkļūdotājā, redzēsiet, ka, izsaucot funkciju “GetUser()”, mainīgais “UserName”, ko mēs tai nododam, faktiski tiek pārrakstīts. Lai tas notiktu, mainīgajam ir jāpiešķir pietiekami daudz atmiņas datu glabāšanai, tāpēc mēs mainīgajam piešķiram tikai 255 atstarpes rakstzīmes, jo ar to vajadzētu būt vairāk nekā pietiekami, lai tajā varētu ievietot lielāko daļu (ja ne visus) lietotājvārdus.
- Mēs atgūstam atgriešanās vērtību no funkcijas izsaukuma mainīgajā “returnStatus”. Nulle (0) šeit nozīmē, ka zvans bija veiksmīgs, jebkas cits nozīmē, ka ir notikusi kļūda.
- Visbeidzot, mainīgajam “UserName” ir jāsakopj, jo tas būtībā tiks aizpildīts ar nulles rakstzīmēm, tāpēc mēs izvelkam rakstzīmes, kas atrodas mainīgajā, pirms tiek atrasts Chr (0).
Redzi - tagad tas nebija tik slikti, vai ne! Un tagad, vismaz ja jums ir jārisina mdb datu bāzes korupcija, jūs zināt, kurš datubāzi izmantoja pēdējais, lai jūs varētu vainot! (Es, protams, šeit jokoju!)
Autora ievads:
Mičels Dīķis ir datu atkopšanas eksperts DataNumen, Inc., kas ir pasaules līderis datu atkopšanas tehnoloģiju, tostarp remonts SQL Server problēma un Excel atkopšanas programmatūras produkti. Lai iegūtu vairāk informācijas, apmeklējiet vietni www.datanumen. Ar
