Som jeg ser det er der flere: Man kan mig bekendt ikke tildele en af excels kommandoknapper et hyperlink (af designmæssige årsager). Man kan ikke få returneret en værdi ex i et midlertidigt regneark fra databasen!
Gør det gennem DATA / HENT EKSTERNE DATA /NY DATABASEFORESPØRGSEL Her kan du både hente en hel tabel og lave en parameterforespørgsel (udtræk af specifikke data fra en tabel)
Du kan sagtens få VBA fra Excel til at hooke op til en database, fx. en access-database (uden at åbne MSAccess), og indlæse hvad du nu måtte ønske i en variabel af typen recordset ved at fyre en passende SQL-sætning afsted. Er det det du vil?
Jeg vil egentlig begge dele - i en situation åbne access med tilhørende database og i den anden søge i omtalte database (helst vha vba) og få vist data i et temporært ark - eller endnu bedre en Userform
Du kan åbne Access med tilhørende database ved at fyre en Shell afsted.
Og du kan indlæse udvalgt data fra en database i et recordset, og skrive recordsettet til fx. en listbox på en form eller til et regneark... Hvor meget skal du have hjælp til?
a) Få læst den valgte tabel i Access ind i en Record b1) Loop igennem din record, og skriv til dit regneark b2) Loop igennem din record, og skriv til en listbox c) Luk forbindelsen til databasen
'ad a)
Dim rec As Recordset Dim DB as Database
Set DB = Workspaces(0).OpenDatabase("C:\database.mdb") Set rec = DB.OpenRecordset _ ("SELECT Række1, Række2, Række3 FROM Tabel ORDER BY Række1", _ dbOpenSnapshot)
'Række1, Række2,... og Tabel er navne angivet i din database
'ad b1)
Dim i as Integer 'i indeholder rækkenummeret på den celle der skrives til Do While Not rec.EOF i = i+1 Activesheet.Cells(i,1).formulaRC = rec!Række1 rec.MoveNext Loop
'ad b2)
ListBox1.Clear Do While Not rec.EOF ListBox1.Additem rec!Række1 rec.MoveNext Loop
OK jeg droppede [] omkring Fornavn, Efternavn MEN beholdt omking KARTOTEK 2003 (ellers lavede den fejl). [ ] stammer fra noget lignende bak har lavet for mig.
Man sætter [] omkring feltnavne og tabelnavne, når der er mulighed for at disse kan forveksles med indbyggede sql- ord, eller når man har mellemrum i selve navnet. Hvis du skal bruge dem her skal de om hvert feltnavn og ikke om dem samlet.
"SELECT [Fornavn], [Efternavn] FROM [Kartotek 2003] ORDER BY [Efternavn]",
Tak for det Martin. Desværre laver den anden mulighed også fejl men jeg har nok bare anvendt den forkert: --> ActiveSheet.Cells(i, 1).formulaRC = rec!Fornavn Der står: "Object doesn't support this proporty or method
Hmm - du skal nok lige dim'me i som en Integer der hvor du også dimmer Rec og DB. Altså Dim i As Integer. Ellers tjek for stavefejl - det ser da rigtigt nok ud, synes jeg
Ja det har du ret i MEN (med risiko for at lyde utaknemmelig) så er der jo ingen mulighed for at SØGE i database - ovenstående lister blot samtlige poster i nævnte ark (hvor der ikke er levnet plads til dette). Det jeg gerne ville var at kunne søge på ex: Fornavn, Efternavn, Cpr etc og herefter få listet resten af data på personen.
Jeg forsøger at lave en søgefunktion til brug for en sekretær (som selvfølgelig kan edb til husbehov men heller ikke mere). Funktionen skulle gerne være selvindlysende (og tidsbesparende). Derfor søger jeg en mulighed for LET selv at bestemme hvad der skal søges på og hvor det skal placeres (nævnte regneark dur ikke)!!! Men jeg forklarer mig nok dårligt :0(
Yep - det er det det handler om - forsøge dig lidt frem :o)
Med ovenstående burde du kunen nå langt - du kan fyre en SQL af mod en database, og flette brugerindtastninger ind i dit SQL-udtryk - så er der ingen grænser for hvad man kan :o) Good luck
Hej Martin Jeg har endnu ikke fået afprøvet diverse idéer men alene henvisningen til de mange gode tutorials må være point værd - tak for hjælpen. Det kan godt være at jeg vender tilbage med spørgsmål hvis jeg kommer i bekneb - hvis det er ok :0)
Her er jeg allerede tilbage. Hvad er der galt med nedenstående hvor jeg forsøger at anvende en inputbox til at søge efter:
Dim IBox as String IBox = InputBox("Indtast søgestreng") Set DB = Workspaces(0).OpenDatabase("\\SRV\Registre\Registeret.mdb") Set rec = DB.OpenRecordset("SELECT * FROM [Kartotek 2003] WHERE Efternavn _ LIKE '%IBox%'", dbOpenSnapshot)
Dim IBox As String Dim StrSQL As String IBox = InputBox("Indtast søgestreng") StrSQL = "SELECT * FROM [Kartotek 2003] WHERE Efternavn LIKE'" & IBox & "'" Set DB = Workspaces(0).OpenDatabase("\\SRV\Registre\Patientregisteret.mdb") Set rec = DB.OpenRecordset(StrSQL, dbOpenSnapshot)
Yep - IBox er jo en variabel med et indhold, og ikke bare noget tekst - derfor skal du bruge &-tegnene. Det viste jeg vist også i mit eksempel med Text1.Text :o)
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.