pernox
Goto Top

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

Content-Key: 73429

Url: https://administrator.de/contentid/73429

Printed on: April 19, 2024 at 12:04 o'clock

Member: RDiller
RDiller Nov 13, 2007 at 16:02:13 (UTC)
Goto Top
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
Member: pernox
pernox Nov 14, 2007 at 16:55:14 (UTC)
Goto Top
Hallo Ralf,

vielen vielen Dank. Es funktioniert.

Nun habe ich doch noch etwas VBA gelernt, wer hätte das gedacht! face-smile

Den Check, ob die Datei schon funktioniert, konnte ich weglassen. Das Aufnahme-Programm bietet das schon mit an.

Viele Grüße
Pernox