Interessant nok, er det faktisk teknisk muligt, i windows under NTFS filsystemet at gemme selvdefinerede detaljer om enhver filtype. Det kræver måske installation af noget ekstra (dsofile.exe) - og så er det måske blot de undeliggende api eller com facilitet der dermed forefindes.
Der har så den skavank at det er NTFS proprietært - for filer som ikke kan indeholde metadata (som tekstfiler) gemmes oplysninger i 'alternate datastream' (ADS) - én fil i NTFS systemet er nemlig ikke (omend i praksis stort set altid) en navngivet 'samling data' men en navngivet liste af 'data samlinger'.
En database løsning er netop god, for mappeindhold kan dermed pakkes, sendes og kopieres til ikke NTFS baserede medier uden de selvdefinere detaljer forsvinder!
Følgende har jeg lige leget med. Access Databasen, skal i brug ikke startes direkte, men gennem et vb script der kaldes fra en filemanagers kontekstmenu (stifinders højrekliksmenu) - jeg kalder fildetaljerne for 'appendikser'
Appendikserne gemmes i en access database i hver eneste mappe hvor der 'tilføjes til filer' - en, første gang nyoprettet database, til hver mappe.
To tabeler:
-----------
DocApp (id autonumber, aName tekst)
- de selvdefinerede detalje keywords - som f.eks 'sælger','produkt'
FileDocApp (docApp tekst,fileName tekst,val tekst) - sammensat nøgle docApp+fileName - docApp slår sin værdi op i en kombinationsboks
- her gemmes detaljerne
To formularer
------------
'Appendixes' - en datakilde løs modal popup formular med kontrolelementkilderne: skjult tekstbox: 'filename' og en underformular
'UFAppendixes' - vises kun som datasheet - datakilde: 'SELECT [filename], [docapp], [val] FROM Filedocapp;' - kontrolelementet 'docapp', der automatisk optræder som kombinationsboks gives etiketten 'skjul mig', og endnu en kombinationsboks 'appendix' med datakilde docapp gemmer sin værdi heri.
kode moduler
-------------
Form_Appendixes
Private Sub Form_Close()
DoCmd.Quit
End Sub
Private Sub Form_open(Cancel As Integer)
fSetAccessWindow 0
fileName = OpenArgs
Caption = "filen: " & fileName
End Sub
Form_UFAppendixes
Private Sub appendix_NotInList(NewData As String, Response As Integer)
CurrentDb.Execute "insert into docApp (aName) values(""" & NewData & """)"
appendix = DMax("id", "docApp")
Response = acDataErrAdded
End Sub
function fSetAccessWindow er herfra
http://www.access-programmers.co.uk/forums/showthread.php?t=218554 Installation, testet i access 2000, xpsp3 home
----------------------------------------------
I mappe c:\programmer\noname:
databasen 'Filappendikser.mdb'
vbs scriptet 'fappInv.vbs' med indhold:
filApp=pathOnlyS(Wscript.Arguments(0)) & "Filappendikser.mdb"
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.fileExists(filApp)=false then
fso.CopyFile "C:\Programmer\noname\Filappendikser.mdb",pathOnlyS(Wscript.Arguments(0))
End If
set accapp = CreateObject("access.application")
accapp.opencurrentdatabase(pathOnlyS(Wscript.Arguments(0)) & "Filappendikser.mdb")
accapp.visible = true
accapp.DoCmd.OpenForm "Appendixes", , , , , , bareFileName(Wscript.Arguments(0))
Function bareFileName(pathName)
bareFileName = Mid(pathName, InStrRev(pathName, "\") + 1):
End Function
function pathOnlyS(pathName)
pathOnlyS=left(pathname,InStrRev(pathName, "\"))
End Function
Og endelig ændring i registy:
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\Appendikser]
[HKEY_CLASSES_ROOT\*\shell\Appendikser\command]
@="wscript.exe C:\\Programmer\\noname\\fappInv.vbs %D"