15. september 2003 - 10:20Der 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?
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?
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
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
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.
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.
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
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 :-)
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
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?
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
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
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.