17. marts 2011 - 23:37Der er
34 kommentarer og 1 løsning
Hvordan åbner jeg et bestemt word dokument fra en access tekstboks
Hej alle,
Hvordan åbner jeg et bestemt word dokument fra en access tekstboks, ved at dobbelt klikke på denne.
Tekstboksen står som udgangspunt tom men med en inputmaske. Når word dokumentet er skrevet (i en anden afdeling i huset), vil jeg gerne kunne skrive navnet ind i min databases tekstboks/inputmaske. Derefter ved at dobbeltklikke på denne, åbne det word dokument jeg lige har skrevet ind i boksen.
Håber at det giver mening, jeg er ikke så rutineret accessbruger endnu.
Er der nogen der kan guide mig igennem? På forhånd tak for hjælpen.
Sub IHuset_DblClick(Cancel As Integer) shell "cmd /c start """" """ & fileRef & """" End Sub
For lige at skære det ud i pap for en nybegynder som mig. Hvordan kommer koden til at se ud hvis formularen hedder: GS rapport og inputmasken i tekstboksen altid ser således ud: Hrnr.: 000-00.doc
Det der sker når word dokumentet er lavet og navngivet efter ovennævnte inputmaskes format (en aftale vi har lavet mellem vores to afdelinger), finder jeg navnet på en fælles server og skriver derefter navnet ind i tekstboksen (med inputmasken), i min database. Det kunne for eks. se således ud: Hrnr.: 123-11
Tusind tak for hjælpen allerede.
Mvh Joachim
Synes godt om
Slettet bruger
18. marts 2011 - 14:08#4
'GS rapport' er ikke noget godt navn for en formular ;) - men det er en anden snak.
Der er fejl det jeg skrev i #3.
Fortæl mig først følgende: tekstboksens navn fuldt stinavn til document på server - det som ville åbne filen i word, hvis du skrev det i startknappen->kør
Tekstboksens navn er: Hrnr Det fulde sti navn er: "P:\Security\Security rapporter\2011\01-11.doc"
Ja som sagt er jeg ikke så skrap endnu men hvis man benytter denne sti i koden, vil man så ikke åbne rapport 01-11.doc hver gang man dobbelt klikker på tekstboksen?
Inputmasken er jo tom indtil man skriver et nummer og indeholder 3 ciffre en - og 2 ciffre igen. Når tekstboksen er tom ser den således ud: HR___-__ indtil man udfylder den.
Har fået den til at åbne rapporten 01-11.doc men som jeg lige spurgte om så ganske rigtigt, når jeg dobbeltklikker på tekstboksen i en ny rapport/formular hvor jeg har indtastet et andet .dok nummer, så åbner den stadigvæk 01-11.doc.
Det den skal er at åbne det dokument nummer jeg indtaster i tekstboksens inputmaske.
Jeg prøvede at slette det sidste i stien så den så således ud: P:\Security\Security rapporter\2011
På den måde åbner den rigtige mappe med de rigtige word dokumenter. Det er et stort skridt i den rigtige retning. Men det ville være super ekstra lækkert hvis den kunne forstå hvad jeg har tastet ind i inputmasken i den nye formular og åbne lige præcist det document!!
This is assuming that th epath is always the same and you only enter the documenet number not .doc EG: 01-11
Synes godt om
Slettet bruger
19. marts 2011 - 11:07#9
Det er lidt ualmindeligt at anvende dobbelklik i en tekst kontrolelementet så Mugs og Terry løsning er den nemmeste. Anyway - løsningen med dobbeltklik er interessant, så her kommer den.
Når dobbeltklik hændelsen fanges er tekst kontrolelementet ikke opdateret! Envidere vil der ske noget med markeringen at indholdet, som ikke harmonerer med det at gøre noget andet. En løsningen er at flyttes fokus til et andet kontrolelement - et dertil lavet.
Gør sådan: 1.lav knappen med musen og tast <escape> når guiden dukker op. 2.åben egenskabsarket (tast <alt><return>) 3.navngiv CfocusCath i fanen 'andre' 4.luk egenskabsarket og lav den ganske lille - til kun en prik 5.Den kan nu kun flyttes vha. <cntl><piletaster> og gives fokus i designview vha kontrolelement dropdown vælgeren 6.Vær opmærksom på tabulator rækkefølge
Det med inputmaske er en godt nok, men ikke væsentligt. For at forklare det enklest, så fjern det, i første omgang, og lad os tage udgangspunkt i det fil navne du har givet. Hvis der med "P:\Security\Security rapporter\2011\01-11.doc", blot ønskes at indtaste 01-11, ligger følgende 2 delstrenge fast: "P:\Security\Security rapporter\2011\" ".doc"
Koden for hændelse dobbeltklik i tekst kontrolelementet Hrnr er:
Private Sub Hrnr_DblClick(Cancel As Integer) Dim fileName Const path = "P:\Security\Security rapporter\2011\", ext = ".doc" focusCatch.SetFocus fileName = path & Hrnr.Value & ext If Len(Dir(fileName)) Then Shell "cmd /c start """" """ & fileName & """" Else MsgBox fileName & " don't exist!": End If End Sub
Har bøvlet hele natten og desuden forsøgt mig med både Terry og Mugs løsning. Her lykkedes det heller ikke !
Synes godt om
Slettet bruger
22. marts 2011 - 13:06#14
Vi kender det vist alle - at have travlt med at noget bare skal virke - At indsnævre virke til: det som vi vil have det til - så andre kan bruge det også!
Enhver fejlmeddelese er også et resultat - omend budskabet er eksklusivt!
(ser for mig den harmdirende kontordame, der i access udviklerens nærværd peger på et fejlmeddelelses vindue: 'hvad er det lige jeg skal her')
HAha ja du har så ret. Især det med at andre også skal bruge det. Jeg er blevet valgt til at "renovere" denne database fordi min afdeling synes at jeg har flair for det....:-). Dvs. at de er om ikke andet har endnu større vanskeligheder ved bare at bruge access end jeg selv. Derfor skal muligheden for at taste, klikke eller gøre noget forkert minimeres så meget som muligt !
For at vende tilbage til dit spørgsmål, det var denne programlinie:
focusCatch.SetFocus
Synes godt om
Slettet bruger
22. marts 2011 - 14:33#16
Hvis du: 1. I vba-editoen a. markerer focusCatch b. menuline->debug->add watch c. sætter breakpoint på linien (menuline->debug->toggle breakpoint 2. åbner formularen og dobbeltklikker i Mrnr
Hvilken type angiver vinduet wathes, så focusCatch at have?
Er nået til: 1. I vba-editoen a. markerer focusCatch - OK b. menuline->debug->add watch - OK c. sætter breakpoint på linien (menuline->debug->toggle breakpoint - toggle breakpoint er passiv når jeg klikker debug? 2. åbner formularen og dobbeltklikker i Mrnr - er ikke nået dertil
Synes godt om
Slettet bruger
22. marts 2011 - 21:37#18
Tekst makøren skal stå på den linie der skal sættes breakpoint på - og dermed er det kodevinduet der skal have fokus. Man kan også blot taste <f9>. Det burde virker - det er en helt basal funktion.
OK det virker men hvor længe skal den stå og debugge?
Hvis jeg prøver at lukke editor vinduet skriver den:"this command will stop the debugger"?
Synes godt om
Slettet bruger
22. marts 2011 - 22:39#20
Der gå formentligt kun et splitsekund fra du har dobbletklikket i mrnr til editoren toner frem og du kan aflæse i watchen hvilken type focusCatch er - hvad står der?
Det er derfor fejlen: missing objekt forekom - setFocus kræver et object (som godt kan være i en variant - derfor er det ikke syntaxfejl), men finder intet objekt. Hvis der var oprettet en komanmandoknap med navnet focusCatch ville det spille. Du har snuppet hele min kode med klippebordet og bliver ikke 'briefet' på samme måde som når du selv skriver alle linier - for så snart man skriver punktum efter navnet på 'noget der skal være der' kommer der en dropdown liste - og kommer den ikke er man allerede i indskrivningsfasen gjort opmærksom.
Desuden bør linien: option explicit
forkomme som anden linie i alle moduler - det forhindrer at variable oprettes uden dim. Der er general indstilling i tools->options der sørger for at 'option explicit' automatisk sættes i alle nye moduler
Nok om det - du kan bare udkommentere linien (et ' tegn forest) . det med at skrive i Mrnr kan jeg nu se ikke er meningen.
Jeg kan ikke rigtigt få det til at virke. Tror igen at jeg har fået forvirret mig selv.
Hvilken sætning skal jeg:
- udkommentere linien (et ' tegn forest)?
Og skal jeg stadigvæk bruge sætningen focusCatch.SetFocus og lave en kommandoknap til denne der minimeres så man ikke ser den i formularen?
Synes godt om
Slettet bruger
26. marts 2011 - 16:04#24
Linien: 'focusCatch.SetFocus' skal slettes - men prøv istedet at udkommentere den (sætte et ' tegn forest så den bliver grøn)
Prøv så at oprette en ny post i formularen og dobbelklikke i mrnr feltet for at chekke at mrnr er opdateret med standardværien - hvis det er tilfælder kan knappen FocusCatch slettes.
Har prøvet det du beskriver. Linien: 'focusCatch.SetFocus' bliver ganske rigtig grøn, men så modtager jeg denne besked når jeg dobbeltklikker i feltet (hvor jeg har skrevet dokument nr. 31-11 ind).
Det ser umiddelbart ud som om at noget er rigtigt eller ?
Jeg ved ikke om det betyder noget men dokumenterne i vindows mappen starter med at hedde 01-11 (sådan læser vi word dokument navnet eller rapporten = rapport nr. 1 år 11). Hvis man når op på 100 eller derover bliver navnet 3 ciffret. Men i formularen vil dokument nr 1-11 skrives ind i inputmasken som nr. 001-11.
Synes godt om
Slettet bruger
26. marts 2011 - 16:59#26
Det med standardværdi tilstedeværelse virker!
Der ligger to ting i det med filnavnet:
1. Når der oprettes en ny post, skal der laves et nyt word dokument - det kan ske ved kopiering fra et tomt 'standard dokument'. Filcopy <standard dokument> fileName
2. Det med filnavnet forstår jeg ikke helt. Tidligere, i indlægget "Automatiks genereret raport nummer" er løbenummeret defineret som tæller vedrørende den enkelte dag og formatet: ddmmyy - svarende til at første nyoprettelse i dag kommer til at hedde: 26031101. Det kan laves som man ønkser, der skal blot være overenstemmelse mellem NewGDNumber(...) og ønsket filnavn. bindestreg er bare kosmetik.
Aaah jeg syntes nok vi talte forbi hinanden på et tidspunkt !!
Tråden "Automatisk genereret rapport nummer" handler om at når vi i min afdeling åbner en ny formular i access databasen (i vores verden, når vi skal skrive en ny rapport). Skal den formular have den type rapportnumre (GSddmmyy-løbenummer) som vi bruger og som du har hjulpet så kanon godt med at fikse, lave nummeret automatisk.
Vi er i samme formular men i 2 forskellige tekstbokse. Det er fordi at den ene rapport skriver vi i min afdeling imens den anden skrives i en anden afdeling og den skriver de i word. Den gemmes på P: drevet som min afdeling har adgang til. Vi noterer altid den anden afdelings rapport nummer og de skriver bare numrene fortløbene som beskrevet: den første hedder 01-11 osv. derudaf, indtil der bruges 3 ciffre (altid kun 2 ciffre til sidst der angiver årstallet).
DVS.: I den ene tekstboks står vores rapport nummer (GS nummeret) og i den anden står den anden afdelings rapport nummer (Hr nr.).
Og det er det den tekstboks (Hr nr.) hvori vi noterer hvad nummer den anden afdelings rapportnummer hedder.
Jeg er på pinden igen i morgen, jeg når desværre ikke mere i dag.
Synes godt om
Slettet bruger
27. marts 2011 - 15:16#29
Det er lettere, hvis der kommer nogle navne: Formular tekst kontrolelementet med inputmaske om denne: standardværi og koden bag, hvis der er nogen datakilde, hvis nogen
Formular = GS Rapport Tekstboks/Kontrolelementkilde = Hrnr (Titeltekst Security Hr. nr.:) Inputmaske = "Hr"000-99 Standardværdi = tomt felt (ingen kode bag) Datakilde = ingen datakilde
(hændelseprocedure ved dobbeltklik er de vba koder du har forsøgt at få mig til at få til at virke)
Synes godt om
Slettet bruger
27. marts 2011 - 17:46#31
Ingen datakilde - ingen standardvædi? Skal det kun bruges til at åbne et word dokument ud fra kendskab til løbenummmer og år - har værdien i mrnr intet med poster i en tabel at gøre?
Ja det er rigtigt - jeg tror som sagt at vi har fået blandet 2 forskellige tråde godt og grundigt sammen!
Jeg vil gerne kunne åbne et bestemt word dokument der ligger et bestemt sted eller nærmere i en bestemt mappe et andet sted på vores P: server.
Det vil jeg gerne kunne gøre ved at dobbeltklikke på tekstboksen (Hrnr), hvori jeg selv skriver dokument navnet ind i tekstboksens inputmaske.
Disse dokumenter har i mappen på P: serveren altid et navn på mindst 2 ciffre, bindestreg og årstal. Uanset om det er nr. 1 (så døbes dokumentet 01-11)
I min tekstboks i GS formularen har jeg dog en inputmaske der ser således ud HR___-__ for at tvinge alle brugere i min afdeling til at skrive dokument nummeret på samme måde. Dvs. dokument nr. 1 hos os hedder i pricippet HR001-11.
Så nej det har intet med en tabel at gøre. Det drejer sig om at få åbnet et vindows vindue indeholdene et bestemt word dokument der ligger et andet sted på vores P:server.
Hvis jeg dobbeltklikker i tekstboksen Hrnr så åbner den rigtige mappe med rapporterne i.
Det er tilsyneladende er problemet er at finde det dokument navn som jeg har skrevet ind i Hrnr og kun åbne det ene dokument.
Synes godt om
Slettet bruger
27. marts 2011 - 19:00#34
Ok - vi er tilbage i den problematik, hvor jeg lokkede dig til det med focusCatch. Håber du synes det er i orden at du lærte lidt - for hermed løses det enklere.
Private Sub Mrnr_DblClick(Cancel As Integer) Dim loebeNr, fileName Const path = "P:Security\Security rapporter\2011\", ext = ".doc"
Jeg rettede de steder i koden hvor der stod Mrnr til Hrnr og vupti!!!
Jeg takker mange MANGE gange!!
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.