15. december 2003 - 14:01Der er
13 kommentarer og 1 løsning
global, public hvordan ska det gøres i en class
hej!
Jeg har følgende i min class
Public Property Let databaseServer(ByVal DbServer As Variant) db_serverNane = DbServer End Property
Public Function dbqueuery(login As String) her i denne function vil jeg bruge db_serverNane
end function
i toppen af klassen har jeg forsøgt at sætte den først private så public, men selvom jeg initalisere den i property let kommer den ikke med i funktionen. Jeg ville jo helst holde private til klassen, men ved ikke lige hvordan man bruger værdier i funktioner hentet fra property
Øhhh - hvad er det du har sat Public / Private i toppen af din klasse? Er det db_serverNane ?? Hvis ja, så har du formentlig også brug for en Property Get til at læse servernavnet. Jeg kan godt gi' dig et eksempel på hvordan man kan bruge Property Let og Get sammen.
Her et eksempel der forhåbentlig forklarer forskellen på Let og Get. Jeg har ikke kigget nærmere på dit eksempel, men du burde kunne tilpasse det ved at tilføje en Property Get. Jeg starter altid med at definere en lokal variabel i toppen af klassen:
Dim LokalVar as Double
'''Herunder kommer Let og Get. Du skal tænke på Let som venstresiden af et '''argument, dvs. at i Let gi'r du en variabel en værdi. '''Get skal du tænke på som højresiden, dvs. du kan kun læse variablens værdi.
Property Let Navn(ind as Double) LokalVar = ind ''Evt. Anden kode der skal udføres ifbm med at der tildeles en værdi til Navn End Property
Property Get Navn() as Double Navn = LokalVar End Property
'---------------------------- Class1 ---------------------------- ' Hvis du laver en ActiveX.exe eller ActiveX.dll ' Skal Properties - Clase1 Instancing være 5 - MultiUse '---------------------------------------------------------------- Option Explicit
Private m_dbqueuery As String Private m_databaseServer As String
Public Property Get dbqueuery() As String dbqueuery = m_dbqueuery End Property
Public Property Let dbqueuery(ByVal strValue As String) m_dbqueuery = strValue End Property
Public Property Get databaseServer() As String databaseServer = m_databaseServer End Property
Public Property Let databaseServer(ByVal strValue As String) m_databaseServer = strValue End Property '---------------------------- Class1 ----------------------------
shjdsi < du kan nøjes med det her. du skal bare huske at sette vadi i databaseServer() før du bruger dbqueuery() ;)
'---------------------------- Class1 ---------------------------- ' Hvis du laver en ActiveX.exe eller ActiveX.dll ' Skal Properties - Clase1 Instancing være 5 - MultiUse '---------------------------------------------------------------- Option Explicit
Private m_databaseServer As String
Public Function dbqueuery(ByVal strValue As String) MsgBox m_databaseServer End Function
Public Property Let databaseServer(ByVal strValue As String) m_databaseServer = strValue End Property '---------------------------- Class1 ----------------------------
sjh> jeg mener bestemt at jeg har forsøgt med dit sidaste eksempel og jeg fik det ikke til at virke. jeg fik det derimod til at virke med det som både dig og slo har beskrevet tidligere :-) Så nu har jeg en klasse hvor jeg kan holde database queries logins adskilt fra den øvrige del af applikationen hvilket i min verden virker mere strukturet :-) jeg kunne måske tænke mig at compilere den som dll eller activeX, men så skal jeg rette lidt til tror jeg
nej ikke helt :-) havde jo hardcodet de ting i classen så jeg kunne chekke functionaliteten. Så det min øvelse gik ud på var at få server navn, user og password ud af koden og ind i en form eller rettere servan og bruger blviver gemt i registreringsdatabasen brugeren skal så type passworded ind når programmet starter.
Men det duer vist heller ikke for programmet skal køre i systray og polle databasen, chekke forskeligge værdier og sende mail udfra disse check. Det er i bund og grund et lille database monitor værktøj.
Ved du om man kan gemme en værdi i regedit krypteret eller på anden måde så man ikke kan læse password ved at kigge i keyen.
du kan godt gemme et password i dit program så man ikke kan se det..
Option Explicit
Private Sub Command1_Click() Dim i As Integer Dim strOne As String Dim strOut As String With Text1 For i = 1 To Len(.Text) strOne = Mid$(.Text, i, 1) strOut = strOut & "Chr(" & Asc(strOne) & ") & " Next .Text = "Me.Caption = " & Left$(strOut, Len(strOut) - 3) .SelStart = 0 .SelLength = Len(.Text) .SetFocus End With End Sub
Private Sub Form_Load() Me.Caption = Chr(101) & Chr(107) & Chr(115) & Chr(112) & Chr(101) & Chr(114) & _ Chr(116) & Chr(101) & Chr(110) & Chr(46) & Chr(100) & Chr(107) Text1 = "Skriv et password" End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.