In Access mit VBA ein Programm aufrufen und DB-Eintrag als Parameter eintragen
Liebe Administrator.de-Gemeinde,
ich möchste aus einer Access-Anwendung heraus ein Programm zur Mikro-Aufnahme starten.
Dieses Aufnahme-Programm (harddiskogg) hat eine grafische Oberfläche, ich möchte dem Benutzer diese aber ersparen, er soll in Access nur jeweils einen Button für Start und Stop zu sehen bekommen.
Das ist soweit noch kein Problem (außer dass das Programm leider nicht völlig ohne Oberfläche startet).
Im Moment sieht der Code für den Startbutton so aus:
stAppName = "C:\Program Files\hdogg\Harddisk.exe -record -filename test.mp3"
Call Shell(stAppName, 1)
Das Programm startet also sofort mit der Aufnahme, die dann in der Datei "test.mp3" gespeichert wird. Das funktioniert auch.
Mit dem Parameter "filename" möchte ich nun aber keinen festen Wert, sondern einen Wert aus einer Access-Tabelle auslesen und die Datei mit einer bestimmten Benutzer-Nummer versehen, also so etwas wie "63524762.mp3"
Fortlaufende Nummerierung (bietet das Programm an) bringt mir nichts.
Hat jemand einen Hinweis, ob das überhaupt möglich ist und wie ich es anstelle?
Vielen Dank
Pernox
ich möchste aus einer Access-Anwendung heraus ein Programm zur Mikro-Aufnahme starten.
Dieses Aufnahme-Programm (harddiskogg) hat eine grafische Oberfläche, ich möchte dem Benutzer diese aber ersparen, er soll in Access nur jeweils einen Button für Start und Stop zu sehen bekommen.
Das ist soweit noch kein Problem (außer dass das Programm leider nicht völlig ohne Oberfläche startet).
Im Moment sieht der Code für den Startbutton so aus:
stAppName = "C:\Program Files\hdogg\Harddisk.exe -record -filename test.mp3"
Call Shell(stAppName, 1)
Das Programm startet also sofort mit der Aufnahme, die dann in der Datei "test.mp3" gespeichert wird. Das funktioniert auch.
Mit dem Parameter "filename" möchte ich nun aber keinen festen Wert, sondern einen Wert aus einer Access-Tabelle auslesen und die Datei mit einer bestimmten Benutzer-Nummer versehen, also so etwas wie "63524762.mp3"
Fortlaufende Nummerierung (bietet das Programm an) bringt mir nichts.
Hat jemand einen Hinweis, ob das überhaupt möglich ist und wie ich es anstelle?
Vielen Dank
Pernox
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73429
Url: https://administrator.de/contentid/73429
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
Hi Pernox,
ich nehme mal an, der User muß sich erst mal über eine Anmeldemaske in das Programm einloggen, so dass Du eine Usertabelle hast, z.B.:
Username UserID
Pernox 63524762
Über den Button START rufst Du dann die folgende Prozedur auf:
Den Usernamen kannst Du ja irgendwo auf deinem Formular Hinterlegen und übergeben.
i.e.
Public Sub Start_click()
Dim Start_prg
Start_prg = Start_Programm(me.username)
end sub
Public Function Start_Program(Username)
Dim rstemp As Recordset
Dim sqls, UserID, Path, Filename As String
Path = "C:\Records\"
'Schauen, ob der Username in der Tabelle existiert
sqls = "SELECT User.Username, User.UserID " _
& " FROM [User] " _
& " WHERE User.Username='" & Username & "';"
Set rstemp = CurrentDb.OpenRecordset(sqls)
If rstemp.RecordCount = 0 Then ' Username ist nicht in dere Tabelle User
MsgBox "Username is nicht bekannt!", vbCritical, "Username Check"
Exit Sub
End If
'UserID auslesen
UserID = rstemp.Fields("UserID")
rstemp.Close 'Tabelle schließen
Set rstmp = Nothing ' Objekt entladen
Filename = UserID & ".mp3"
'Existiert die Datei schon?
FileExists = objFso.FileExists(Path & Filename)
If FileExists Then 'Z.B. mit einem Unterstrich und fortlaufender Nummer versehen; Natürlich schauen, ob die Datei schon existiert
For x = 1 To 999
Filename = UserID & "_" & x & ".mp3"
FileExists = objFso.FileExists(Path & Filename)
If FileExists Then
Exit For
End If
Next x
End If
'Dein Programm Aufrufen
stAppName = "C:\Program Files\hdogg\Harddisk.exe -record -filename " & Path & Filename
Call Shell(stAppName, 1)
End Function
Gruß
Ralf
ich nehme mal an, der User muß sich erst mal über eine Anmeldemaske in das Programm einloggen, so dass Du eine Usertabelle hast, z.B.:
Username UserID
Pernox 63524762
Über den Button START rufst Du dann die folgende Prozedur auf:
Den Usernamen kannst Du ja irgendwo auf deinem Formular Hinterlegen und übergeben.
i.e.
Public Sub Start_click()
Dim Start_prg
Start_prg = Start_Programm(me.username)
end sub
Public Function Start_Program(Username)
Dim rstemp As Recordset
Dim sqls, UserID, Path, Filename As String
Path = "C:\Records\"
'Schauen, ob der Username in der Tabelle existiert
sqls = "SELECT User.Username, User.UserID " _
& " FROM [User] " _
& " WHERE User.Username='" & Username & "';"
Set rstemp = CurrentDb.OpenRecordset(sqls)
If rstemp.RecordCount = 0 Then ' Username ist nicht in dere Tabelle User
MsgBox "Username is nicht bekannt!", vbCritical, "Username Check"
Exit Sub
End If
'UserID auslesen
UserID = rstemp.Fields("UserID")
rstemp.Close 'Tabelle schließen
Set rstmp = Nothing ' Objekt entladen
Filename = UserID & ".mp3"
'Existiert die Datei schon?
FileExists = objFso.FileExists(Path & Filename)
If FileExists Then 'Z.B. mit einem Unterstrich und fortlaufender Nummer versehen; Natürlich schauen, ob die Datei schon existiert
For x = 1 To 999
Filename = UserID & "_" & x & ".mp3"
FileExists = objFso.FileExists(Path & Filename)
If FileExists Then
Exit For
End If
Next x
End If
'Dein Programm Aufrufen
stAppName = "C:\Program Files\hdogg\Harddisk.exe -record -filename " & Path & Filename
Call Shell(stAppName, 1)
End Function
Gruß
Ralf