14. oktober 2002 - 16:37Der er
7 kommentarer og 3 løsninger
Link til filer fra accessdatabase
Hej Jeg har udviklet en access2000 db som holder styr på alle mine midifiler og sangtekster. Selve databasen køre faktisk udmærket, men jeg kunne godt tænke mig at der var en anden metode til at linke til filer på c: uden at feltet i db'en er defineret som et hyperlink. Først lidt om db,en:
Jeg har en tabel som hedder "tbl_data" hvor der er defineret 6 felter som hyperlink, felterne hedder "sc55,sc88,sc88pro,va, gm, sangtekst" I formen har jeg for hvert felt sat en knap som køre en doCmd.EditHyperlink, dette virker perfekt.Når jeg klikker på et felt der linker til en midifil bliver min midifil afspillet, klikker jeg på et felt der linker til en txt-fil bliver min sangtekst vist.
Ude på mit c-drev er der 3 mapper:Database, Sangtekster, Filer, i mappen "database" ligger min mdb-fil, i mappen "filer" ligger mine midifiler, i mappen "sangtekster" ligger mine sangtekster. Alt dette køre perfekt, men spørgsmålet er nu:
Kan man lave disse link uden at benytte sig af hyperlinkfelter, vht. at bruge kode i stedet, og vil det være muligt at gøre det rimeligt nemt for en bruger at oprette nye poster og linke til midifiler og sangtekster i ovenstående mapper.
Jeg har droppet at benytte mig af OLE-felter, da db'en jo vokser til kæmpestørelse.
Mine sangtekster er af typen .txt, mine midifiler (musikfiler) er af typen .mid, er der nogen der kan hjælpe.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
De fleste foretrækker at undgå hyperlinks i databasen, men det kræver, at du selv 'håndterer' funktionaliteten af dine links. Prøv at kigge her: http://www.eksperten.dk/spm/234510 Du skal ligeledes selv håndtere, når der klick'es på dit link.
Jeg aner ikke hvordan du gør med lydfiler. Men jeg har det du søger blot med billeder. Billederne ligger i en særskilt mappe, og hver gang formularen skifter post, henter Access det tilhørende billede. Det må være muligt at lave noget lignende med lyde.
Jeg har en lille testdb i Access97, fungerer også i 2000 ig XP. Blot læg din e-mail hvis du er interesseret.
(A) Use the following sets of functions. Note: Make sure you pass the complete file name including the extension.
'****************** Code Start *********************' Public Const pcsSYNC = 0 ' wait until sound is finished playing Public Const pcsASYNC = 1 ' don't wait for finish Public Const pcsNODEFAULT = 2 ' play no default sound if sound doesn't exist Public Const pcsLOOP = 8 ' play sound in an infinite loop (until next apiPlaySound) Public Const pcsNOSTOP = 16 ' don't interrupt a playing sound
'Sound APIs Private Declare Function apiPlaySound Lib "Winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
'AVI APIs Private Declare Function apimciSendString Lib "Winmm.dll" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function apimciGetErrorString Lib "Winmm.dll" _ Alias "mciGetErrorStringA" (ByVal dwError As Long, _ ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
Function fPlayStuff(ByVal strFilename As String, _ Optional intPlayMode As Integer) As Long 'MUST pass a filename _with_ extension 'Supports Wav, AVI, MID type files Dim lngRet As Long Dim strTemp As String
Select Case LCase(fGetFileExt(strFilename)) Case "wav": If Not IsMissing(intPlayMode) Then lngRet = apiPlaySound(strFilename, intPlayMode) Else MsgBox "Must specify play mode." Exit Function End If Case "avi", "mid": strTemp = String$(256, 0) lngRet = apimciSendString("play " & strFilename, strTemp, 255, 0) End Select fPlayStuff = lngRet End Function Function fStopStuff(ByVal strFilename As String) 'Stops a multimedia playback Dim lngRet As Long Dim strTemp As String Select Case LCase(fGetFileExt(strFilename)) Case "Wav": lngRet = apiPlaySound(0, pcsASYNC) Case "avi", "mid": strTemp = String$(256, 0) lngRet = apimciSendString("stop " & strFilename, strTemp, 255, 0) End Select fStopStuff = lngRet End Function
Private Function fGetFileExt(ByVal strFullPath As String) As String Dim intPos As Integer, intLen As Integer intLen = Len(strFullPath) If intLen Then For intPos = intLen To 1 Step -1 'Find the last \ If Mid$(strFullPath, intPos, 1) = "." Then fGetFileExt = Mid$(strFullPath, intPos + 1) Exit Function End If Next intPos End If End Function
Function fGetError(ByVal lngErrNum As Long) As String ' Translate the error code to a string Dim lngx As Long Dim strErr As String
strErr = String$(256, 0) lngx = apimciGetErrorString(lngErrNum, strErr, 255) strErr = Left$(strErr, Len(strErr) - 1) fGetError = strErr End Function Function fatest() Dim a As Long a = fPlayStuff("C:\winnt\clock.avi") 'a = fStopStuff("C:\winnt\clock.avi") End Function
'****************** Code End *********************'
Hej, først undskyld den lange svartid på indlægende. Terry>> Den kode du forslår kan bruges til at bygge videre på ,der skal tilrettes en del, men jeg kan komme videre, derfor 100 points til dig.
mugs>> Jeg vil meget gerne have din eks db tilsendt derfor 90 points til dig, den kan sendes til anjdata@get2net.dk
lasse buck>> 10 points til dig for dit link til et spørgsmål som var relevant.
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.