Avatar billede ds-zim Nybegynder
11. august 2000 - 14:09 Der er 22 kommentarer og
2 løsninger

Hyperlinks til *.filtype i forespørgsel

Jeg ved det er muligt vha. hyperlinks at linke til dokumenter på vor server ..
Vil det være muligt at angive en path, såvel som filtyper, som kriterier i en forespørgsel ?
Altså, hvis path\'n angiver kundemappen og filtype angiver .doc, vil forespørgslen så kunne vise hyperlinks til alle dokumenter i & under den angivne path ?!?
Avatar billede moses Praktikant
11. august 2000 - 15:24 #1
I princippet sådan:

Public Sub ShowDir(Path As String)
    Dim FileName As String
    Dim FileNames(100) As String  \'Bare for at have et par stykker
    Dim Counter As Integer
   
    ChDir Path
    Counter = 0
    FileName = Dir(\"*.*\")
    Do
        If FileName <> \"\" Then
            FileNames(Counter) = \"file:\\\\\" & Path & \"\\\" & FileName
            Counter = Counter + 1
            FileName = Dir
        End If
    Loop Until ((FileName = \"\") Or (Counter = 100))
End Sub

Avatar billede moses Praktikant
11. august 2000 - 15:27 #2
Du skal så lige sende FileNames et eller andet sted hen (F.eks. RowSource-list eller Tabel)
Avatar billede ds-zim Nybegynder
15. august 2000 - 12:51 #3
Umm, jeg kan godt se idé\'en med koden, men er i tvivl om hvordan jeg viser resultaterne i en underformular
Avatar billede moses Praktikant
15. august 2000 - 13:12 #4
Du skal slå op i hjælpefilen og se under \"rowsource function\".

Det er en speciel type funktion, som du kan indsætte i datafeltet \"RowSource\" i f.eks. en underformular i datasheet visning.
Så skulle den være hjemme.
Avatar billede moses Praktikant
15. august 2000 - 13:12 #5
Det ligger under afsnittet:

\"Programming and Language references\"
Avatar billede ds-zim Nybegynder
15. august 2000 - 13:37 #6
Æv, min hjælpfil er på dansk :( Nogen idé hvad jeg kan søge efter ?
Avatar billede moses Praktikant
15. august 2000 - 13:41 #7
RækkeKilde funktion

(Jeg mener dog stadigvæk, at der er en masse ting på engelsk i hjælpefilen alligevel.)
Avatar billede moses Praktikant
15. august 2000 - 13:43 #8
Du skal lukke et modul op, klikke F1, vælge knappen i hjælpeprogrammet, der på engelsk hedder \"... topics\".

Så får du en søgekasse og der skriver du ordene og så får du de forskellige afsnit med bl.a. programmering og sprog referencer, hvorunder denne specielle funktion er beskrevet.
Avatar billede ds-zim Nybegynder
15. august 2000 - 14:46 #9
Jeg kan ikke rumme hvordan jeg angiver resultatet af den overstående kode til at blive vist i en forespørgsel/underformular.
Jeg har fattet at \"RowSource\" er \"postkilde\", men hvordan angiver jeg VBkode der ?
Avatar billede ds-zim Nybegynder
16. august 2000 - 10:25 #10
Ok, så tror jeg jeg har fattet det :)
\'Rækkekildetype\' & \'Rækkekilde\' er kun aktuelle når vi snakker kombo-/listebox\'e right ?
Ergo vil jeg kun kunne få vist de underliggende dokumenter i en angivet path sådan ?
Avatar billede ds-zim Nybegynder
16. august 2000 - 10:38 #11
Umm, når jeg prøvet at køre koden, får jeg fejlen;
\'Ambiguous Name Detected: Showdir\'
Avatar billede moses Praktikant
16. august 2000 - 14:01 #12
Mhhhh !!

Du skal skrive funktionens navn i feltet \"RækkekildeType\" og lade feltet \"Rækkekilde\" være tomt.
Der skal ikke noget \"=\"-tegn foran funktionens navn i feltet.

Avatar billede ds-zim Nybegynder
16. august 2000 - 15:01 #13
Hmm, jeg får kompileringsfejl i funktionen :(
Jeg har angivet path i et object, er der mere jeg skal tilrette ?
Avatar billede moses Praktikant
16. august 2000 - 15:15 #14
Mhhh - marabu !!

Jeg sidder helt stille og sveder - det er hamrende fugtigt. Men det er det vel i et tyrkisk bad på et kursted i sydtyskland ;-)

Det er lidt svært at svare på. Prøv at lægge din RowSourceType funktion herud på eksperten.
Avatar billede ds-zim Nybegynder
16. august 2000 - 15:27 #15
Heh, håber du nyder det :D

her har du \"min\"(heh) kode :

Public Sub ShowDir(Path As String)
    Dim FileName As String
    Dim FileNames(100) As String  \'Bare for at have et par stykker
    Dim Counter As Integer
   
    ChDir Form![Mappeindhold]![Path]
    Counter = 0
    FileName = Dir(\"*.*\")
    Do
        If FileName <> \"\" Then
            FileNames(Counter) = \"file:\\\\\" & Path & \"\\\" & FileName
            Counter = Counter + 1
            FileName = Dir
        End If
    Loop Until ((FileName = \"\") Or (Counter = 100))
End Sub

Avatar billede moses Praktikant
16. august 2000 - 15:32 #16
Fugtigheden er nu ikke det værste. Det er meget værre, når massøsen rammer en øm ....fndaæs æh mhfh læf dsahljfdsalfdsaljk.... plet på ryggen. Så er det ikke til at koncentrere sig  !!

Lige et udklip fra help filen:

The Visual Basic function you create must accept five arguments. The first argument must be declared as a control and the remaining arguments as Variants. The function itself must return a Variant.

Syntax

Function functionname(fld As Control, id As Variant, row As Variant, col As Variant, code As Variant) As Variant

The following are the five required arguments.

Argument    Description

fld    A control variable that refers to the list box or combo box being filled.
id    A unique value that identifies the control being filled; this is useful when you want to use the same user-defined function for more than one list box or combo box and must distinguish between them. (The example sets this variable to the value of the Timer function.)
row    The row being filled (zero-based).
col    The column being filled (zero-based).
code    A value that specifies the kind of information being requested.

Note  Because Microsoft Access calls a list function several times to insert items into a list, often you must preserve information from call to call. The best way to do this is to use Static variables.

Microsoft Access calls the user-defined function repeatedly using different values in the code argument to specify the information it needs. The code argument can have the following values.

Code    Meaning    Function returns
0    Initialize    Nonzero if the function can fill the list; False or Null otherwise.
1    Open    Nonzero ID value if the function can fill the list; False or Null otherwise.
2    (Not used)   
3    Number of rows    Number of rows in the list (can be zero); -1 if unknown.
4    Number of columns    Number of columns in the list (can\'t be zero); must match the property sheet value.
5    Column width    Width (in twips) of the column specified by the col argument; or -1 to use the default width.
6    List entry    List entry to be displayed in the row and column specified by the row and col arguments.
7    Format string    Format string to be used to format the list entry displayed in the row and column specified by the row and col arguments; or Null to use the default format.
8    (Not used)   
9    End (the last call to a list function always uses this value)    Nothing.
Microsoft Access calls your list function once for codes 0, 1, 3, and 4. It initializes the list function, opens the query, and determines the number of rows and columns.
Microsoft Access calls your list function twice for code 5once to determine the total width of the list box or combo box and a second time to set the column width.
The number of times your list function is called for codes 6 and 7 to get list entries and to format strings varies depending on the number of entries, the user\'s scrolling, and other factors.

Microsoft Access calls the list function for code 9 when the form is closed or each time the list box or combo box is queried.
Whenever a particular value (such as the number of columns) is required, returning Null or any invalid value causes Microsoft Access to stop calling the list function with that code.

Tip  You can use the Select Case code structure from the example as a template for your own RowSourceType user-defined functions.

Your user-defined function can use the numeric codes or the corresponding constants. Intrinsic constants have several advantages. They don\'t have to be loaded or declared, and they\'re more descriptive than the numeric codes. The following table lists the numeric codes and their corresponding intrinsic constants.

Code    Intrinsic Constant

0    acLBInitialize
1    acLBOpen
3    acLBGetRowCount
4    acLBGetColumnCount
5    acLBGetColumnWidth
6    acLBGetValue
7    acLBGetFormat
8    acLBClose
9    acLBEnd

Note  You can\'t create your own constants with the same names as Microsoft Access intrinsic constants.

Ved ikke, om det ser godt ud på eksperten.
Avatar billede moses Praktikant
16. august 2000 - 15:35 #17
Joh - det gik lige.

Som du ser, så skal funktionen være specificeret specielt. Access kalder denne funktion et utal af gange for at , initialisere, få oplysninger og til sidst for at hente værdierne i rækker og kolonner.
En gang lavet, så har du en \"Smart Dims\" (lyder åndsvagt, hvis man læsper) til senere brug.
Avatar billede ds-zim Nybegynder
16. august 2000 - 15:53 #18
Der bliver vist rigeligt at se til imorgen, nu er arbejdsdagen overstået :)

Såeh, until next time .. Enjoy
Avatar billede moses Praktikant
16. august 2000 - 15:57 #19
Auf Wienerschnitzel !  Haben Sie gut !!
Avatar billede ds-zim Nybegynder
17. august 2000 - 13:06 #20
En anden ting jeg ikke kan rumme ..
Den formular, jeg har udformet, til at vise resultaterne af denne funktion, har jeg sat til kun at blive vist som dataark. Alligevel bliver den vist i formularvisning ?!? Går jeg til designvinduet og derfra til formularvisning (via ikon), bliver den vist i dataarkvisning. Her er der en kombobox og når jeg prøver at åbne den, får jeg ugyldig funktion eller kompileringsfejl.
Så noget må der være galt
Avatar billede ds-zim Nybegynder
17. august 2000 - 13:17 #21
Public Sub ShowDir(Path As String)

\'  Undersøger den angivne sti & derunder for dokumenter

    Dim FileName As String
    Dim FileNames(100) As String  \'Bare for at have et par stykker
    Dim Counter As Integer
   
    Path = \"\\\\IBM3500M10\\Dokumenter\"
    ChDir Path
    Counter = 0
    FileName = Dir(\"*.*\")
    Do
        If FileName <> \"\" Then
            FileNames(Counter) = \"file:\\\\\" & Path & \"\\\" & FileName
            Counter = Counter + 1
            FileName = Dir
        End If
    Loop Until ((FileName = \"\") Or (Counter = 100))

End Sub

Nu har jeg luret lidt i hjælpfilen, og det eneste jeg umiddelbart kan sætte en finger ved er

    FileName = Dir(\"*.*\")

Er det meningen at \'Dir\' skal stå der ?
Avatar billede ds-zim Nybegynder
17. august 2000 - 13:45 #22
Piv ! Det var vist ikke det der var galt
Avatar billede moses Praktikant
17. august 2000 - 16:57 #23
Den funktion, som du skal lave skal overholde de regler, der er beskrevet i hjælpefilen ganske nøje.

Det gør du ikke.

Parametrene skal stemme overens, Det skal være en funktion - ikke en Sub ... osv.

Det dumme ved computere er, at de er så fandens nøjeregnende !!!
De er fuldstændig ligeglade med udfaldet - MEN de er vandvittig hurtige til at blive ligeglade !!?!!
Avatar billede ds-zim Nybegynder
18. oktober 2000 - 14:00 #24
Lukker spørgsmålet af nød, har stadig ikke fået det til at virke :( men vil C på det ved lejlighed.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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