Avatar billede herman01753 Nybegynder
15. september 2003 - 10:20 Der er 22 kommentarer og
1 løsning

outlook form database forbindelse

Jeg er igang med at lave en form i outlook, hvor jeg af gode gunde bruger vb kode til at programmere funktionaliteten. Jeg har brug for at kunne lave et databaseudtræk, og putte det ind i en combobox. er det nogen som har arbejdet med det? eller ved hvordan man gør?

Hilsen Herman
Avatar billede kedde65 Praktikant
15. september 2003 - 10:22 #1
Er det en brugertilpaset forrmular med VBSCript bagved eller er det en formular i VBA?

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 11:28 #2
det er en brugertilpasset formular. der skal tilføjes et faneblad til den form der hedder meeting request
Avatar billede kedde65 Praktikant
15. september 2003 - 12:19 #3
Hvad er det for en database du skal udtrække fra?

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 12:28 #4
jeg har en ms sql server kørende på en windows 2000 server maskine. herpå ligger der en database, som hedder FPA i databasen findes en tabel med navnet "state", og kolonnenavn "navn". det der står i navn, vil jeg gerne have til at stå i en combobox i min outlook form.
er det svar på det du spørger om?
Avatar billede kedde65 Praktikant
15. september 2003 - 12:45 #5
Hermed et eksempel på en connection til en SQLServer 2000 database. Navnet på databasen er Northwind, og navnet på serveren er Mail. Navnet på tabellen er Customers og jeg udtrækker kolonnen Navn



Dim itm
dim pgs
dim pg
dim ctls
dim rs

Function Item_Open()
    on error resume next   
        Set itm = Item.GetInspector
        Set pgs = itm.ModifiedFormPages
        Set pg = pgs(1) 'side nummer som comboboxen er på
        Set ctls = pg.Controls   
        set rs = ctls("ComboBox1") 'Navnet på combobox
        Dim conn
        Dim recordSet
        Set conn = CreateObject("ADODB.Connection")
            conn.ConnectionString = "Provider=SQLOLEDB.2;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=MAIL"
            conn.Open
            Set recordSet = conn.Execute("SELECT * FROM Customers")
 
            While Not recordSet.EOF
                rs.AddItem recordSet("Navn")
                recordSet.MoveNext
            Wend
        if err.number<>0 then
            err.clear
        end if
End Function

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 13:41 #6
min form går fuldstændig i stå. kan det have noget at gøre med der er userid og passwordbeskyttelse af databasen?
Avatar billede kedde65 Praktikant
15. september 2003 - 13:41 #7
Jeg kører med integratet security i min kode. Så ja det kan sagtens have noget med det at gøre
Avatar billede herman01753 Nybegynder
15. september 2003 - 13:47 #8
ved du hvordan jeg kan bypass'e det?
Avatar billede kedde65 Praktikant
15. september 2003 - 13:49 #9
Du kan bruge denne linie istedet for den oprindelige.

conn.ConnectionString = "Provider=SQLOLEDB.2;UserId=brugerNavn;password=PassWord;Initial Catalog=Northwind;Data Source=MAIL"

Og erstatte brugernavn og password med dit eget.

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 13:50 #10
altså det jeg gør er at jeg tar det kode som du har skrevet, ændre det til de rigtige tabeller, og sætter servernavnet op.
hvis comboboxen er på den fane der hedder p.2 går jeg ud fra der skal stå    Set pg = pgs(2).
hvis jeg skriver det i script editoren, og prøver at trykke run this form, fryser outlook fuldstændigt. har du en evt løsning
Avatar billede kedde65 Praktikant
15. september 2003 - 13:52 #11
Nej der skal stå pgs(1) da den starter ved 0. Min combobox var også på p.2 du skal huske at give din combobox navnet combobox1 og oprette et felt til den.

Men ellers har du ret i det du skriver.

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 13:55 #12
hvad mener du med at oprette et felt til den?
Avatar billede kedde65 Praktikant
15. september 2003 - 13:57 #13
Højreklikke på din kombobox og vælge at oprette et nyt felt, det kan du kalde hvad du vil. Det er der bruges til at se det i Outlook senere, samt der hvor exchange lagrer de data du har valgt i comboboxen.

VH CK
Avatar billede herman01753 Nybegynder
15. september 2003 - 14:09 #14
hmmm...
nu er mit testmiljø gået helt ned, jeg vender lige tilbage til dig når det kører igen, og jeg kan arbejde videre med det
Avatar billede herman01753 Nybegynder
16. september 2003 - 15:37 #15
så kører testmiljøet igen...
kan det passe at der skal være lang ventetid før koden eksekveres?
når jeg har skrevet koden ind i script editoren, og trykker på run this form, så skere der ingenting, ud over at curseren er et timeglas, og at baggrunden fryser(skriver not responding) Jeg kører med ms server 2000 til min exchange server og sql server, og mit testmiljø er på windows xp platform
Avatar billede kedde65 Praktikant
16. september 2003 - 16:37 #16
Nej det burde går temmeligt hurtigt, men hvis den ikke kan finde serveren så er der en timeout på nogle minutter før den finder ud af den ikke gider at svare tilbage :-)

VH CK
Avatar billede herman01753 Nybegynder
16. september 2003 - 16:39 #17
jeg fik det til at virke ved at skrive :
Dim conn As ADODB.Connection
        Dim rst As ADODB.recordSet
       
        Set conn = New ADODB.Connection
        conn.Provider = "sqloledb"
        conn.Open "Data Source=SPI-EXCH1.spitest.local;Initial Catalog=FPA;", "sa", ""
       
        If conn.State = adStateOpen Then
            Set rst = conn.Execute("SELECT * FROM dbo.State")
 
            While Not rst.EOF
                rs.AddItem rst.Fields("Name")
                rst.MoveNext
            Wend
        End If
       
        If Err.Number <> 0 Then
            Err.Clear
        End If

så jeg kan ikke gi dig fuld point, men hvis du er interesseret, vil jeg gerne gi nogle point for at have ledt mig i den rigtige retning, og for det med comboboxen som var rigtig
Avatar billede herman01753 Nybegynder
16. september 2003 - 16:41 #18
måske du kan hjælpe mig med at finde ud af hvordan jeg kan få importeret den existerende form for new meeting request i visual basic editoren, så man kan ændre direkte i den?
Avatar billede kedde65 Praktikant
16. september 2003 - 16:45 #19
Øhhh dette burde ikke virke, hvis det er inde i en formular. Dimensionering af variable er kun noget der virker, når det er i VBA.

Men OK - hvis du kan få det til at virke, så klapper jeg bare :-)

JEg vil da altid gerne have point...
Avatar billede kedde65 Praktikant
16. september 2003 - 16:46 #20
Åben din formular new meeting request og gå i menuen funktioner - formular - udform denne formular.

VH CK
Avatar billede herman01753 Nybegynder
17. september 2003 - 09:15 #21
du har ret det virker ikke i outlook, men det virkede i en word formular, hvor jeg havde noget kode i forvejen, derfor gik jeg ud fra at det kune lade sig gøre.
jeg får en fejlmeddelelse som følger
msgbox som heder "Script error"
text: "Expected end of statement Line no 14"

og linje 14 er Dim rst As ADODB.recordSet

det der iøvrigt var galt med din kode, var at der ikke blev åbnet forbindelse til databasen. jeg prøvede at debugge, og når der blev kaldt med sql sætning til DB, så blev der returneret nothing eller empty i mit recordset. og derfor gik den ind i et uendeligt loop ved
            While Not rst.EOF
                rs.AddItem rst.Fields("Name")
                rst.MoveNext
            Wend

ved du hvorfor den returnerer nothing eller empty? for den samme sql sætning virkede fra word med min nye kode, men med din kode gav den ingenting.
Håber du kan hjælp mig
Avatar billede herman01753 Nybegynder
17. september 2003 - 09:22 #22
hvis jeg designer denne form, eller en anden form, har jeg kun en script editor, men hvis jeg trykke [ALT]+F11 åbner jeg jo visual basic editoren, og der kan jeg jo kode en form, kan det ikke lade sig gøre at importere en form fra outlook derfover, så man kan manipulere der? Det var det jeg mente med at få importeret den eksisterende form ind i visual basic
Avatar billede herman01753 Nybegynder
17. september 2003 - 09:50 #23
det var connection string der var forkert. nu virker det...

conn.ConnectionString = "driver={SQL Server};server=SPI-EXCH1;uid=sa;pwd=;database=FPA"
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester