16. oktober 2000 - 05:12Der er
5 kommentarer og 1 løsning
Holde connection åben – ADODB
Holde connection åben – ADODB
Jeg ønsker i VB6 at have flere connections til forskellige DB. (6 stk) Jeg kan godt skabe connections, men når jeg vil bruge dem senere, så får jeg at vide, at Connectionen ikke genkendes.
Jeg ønsker at åbne alle 6 efterhånden som brugeren udpeger disse i commondialogs, og herefter blot bruge løs...
Eksempel: Public Function connect(DBType As String, DB As String) As Boolean
Dim ConnDBVariables as ADODB.Connection Dim connectionstring As String
connectionstring = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & DB -hvor DB er filename fra en commondialogboks
Set ConnDBVariables = New ADODB.Connection ConnDBVariables.Open connectionstring
... ... end sub
Nu er connection åbnet, men når jeg senere i programmet forsøger at genbruge min connection i en anden sub, placeret i et separat modul, så genkender den ikke min connection, ConnDBVariables.
Jeg troede at min connection var åben indtil jeg selv lavede kaldet: ConnDBVariables.Close
Kort og godt: Hvordan holder jeg min connection åbnet, sådan at jeg kan kalde en almindelige execute uden først igen at skulle åbne connection’en?
Når du nu har åbnet ovenstående rutine, så lav en sub. som skal kalde noget i db\'en, og du vil få et problem. Subben kan sikkert ikke se de variabler du har åbnet din db med, og det er her dit problem er.
Det må jeg prøve. Kan du kort give et hint om, hvor de placeret - jeg forestiller mig, at de bare lægges øverst i et modul. Det er nemlig det jeg gør nu. Men skal man fortælle særskilt, at de er public/general declarations?
Hvis du har f.eks. VB6, så prøv at starte en ny form, klik dig ind så du står i Private sub Form-Load(), herfra klikker du på bjælken hvor der står Form, vælg General, nu står du der hvor du skal... (general Declarations)
Det du vil opleve i det pågældende eksempel er faktisk en memory leak da du opretter et objekt men aldrig får det nedlagt igen, selvom jeg faktisk godt kunne forestille mig at VB styrer det for dig. *gg*
Det smarteste ville være at oprette et Modul og erklære de nødvendige variable her som public.
Men man kunne selvfølgelig også lave det i en klasse, der godt nok har de pågældende variable private men som har properties eller funktioner til at hente de ønskede variable! Så kunne du også refererer til dem via et navn hvis du vel og mærke laver en collection ud af klassen! Det skulle du næste prøve! Det er skide smart!
Fremgangs måde!
Lav en klasse med de public variable eller properties der skal kunne ses udefra!
Herefter tilføjer du endnu en klasse, dog benytter du VB Class Builder! Herefter vælger du at Add New Collection! Du vælger at lave en collection udfra den klasse du oprettede før!
Herefter har du en collection du selv har oprettet hvor du kan Add, remove og bruge For Each!
Det er sgu genialt!
Håber ikke jeg har forvirret dig alt for meget! Ellers skriv!
Synes godt om
Ny brugerNybegynder
Din løsning...
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.