moeller67
Goto Top

DOS-BOX in Access darstellen

Ich möchte DOS-Befehle (dir, copy, ftp etc.) über verschiedene Button in Access auslösen.
Über die Befehl "Shell(cmd......etc.)" eigendlich kein Problem.
Nur wird dann ein DOS-Fenster geöffnet
und z.B. das Ergebnis von "dir" in diesem Fenster angezeigt.

Ich möchte aber kein zusätzliches DOS-Fenster, sondern das Ergebnis z.B. in einem Formular-Feld
von Access. Alle über die Button ausgeführten Befehle (und Ergebnisse) werden in diesem Formular oder -Listenfeld
angezeigt.

DOS in Access sozusagen.

Ich hoffe auf Hilfe.

Content-Key: 47865

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

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

Member: SlainteMhath
SlainteMhath Jan 03, 2007 at 15:49:10 (UTC)
Goto Top
Was Du als erstes brauchst ist eine Funktion ähnlich der hier:

Declare Function GetModuleUsage Lib "Kernel" (ByVal hModule As Integer) As Integer   


Function ShellAppAndWait(ByVal pstrApp As String) 
    Dim intTaskID As Integer 


    intTaskID = Shell(pstrApp, vbHide) 
    Do While GetModuleUsage(intTaskID) <> 0 
        DoEvents 
    Loop 
End Function 

Der Aufruf wäre dann in etwa so:
ShellAppAndWait(environ("comspec") & " /C dir c:\*.* > " & environ("temp") & "\x.txt")  

Dann kannst Du die Datei %TEMP%\x.txt einlesen und im Formular darstellen.
Member: moeller67
moeller67 Jan 03, 2007 at 20:40:33 (UTC)
Goto Top
Oh SlainteMhath du bist doch echt ein Genie, leider
habe ich noch einen Laufzeitfehler 53 "Datei nicht gefunden: Kernel".
Außerdem bin ich auch zu blöd die Textdatei im Formular darzustellen. Wie geht das?

Was will ich eigendlich, vielleicht verstricke ich mich auch in komplizierten Blödsinn.
Ich will im Access einen Dateiaustausch via ftp darstellen. Unsere Verkäufer melden sich via UMTS in ein VPN ein. Innerhalb dieses VPN läuft ein ftp-Server. Über dieses Acces-Tool soll der Verkäufer per ftp Dateien senden und empfangen können (besonders einfach für Verkäufer). Wichtig dabei ist, das der Verkäufer auch sieht, das seine Dateien wirklich angekommen sind. Und auch welche Dateien er bekommen hat.
Ich wollte das über die integrierte DOS-Box darstellen, vielleicht geht es auch einfacher.
Klar würde es auch über eine externes cmd-Fenster gehen ist aber unkomfortabel und nicht so schön.

Ich kenne mittlerweile Access ganz gut, auch ein müh VBA, aber hier bin ich doch stark überfordert. Vielleicht kannst du mir helfen.
Member: SlainteMhath
SlainteMhath Jan 04, 2007 at 07:42:33 (UTC)
Goto Top
Achso, sag doch gleich, das Du was mit FTP machen willst face-smile

Schick mir mal Deine Mailadresse per PM, dann schick ich dir ein Stück VBA-Code und eine DLL mit der sowas geht.
Member: moeller67
moeller67 Jan 04, 2007 at 07:46:43 (UTC)
Goto Top
Hallo SlainteMhath, meine Mail ist stephan.moeller@klaus-stapler.de
Member: SlainteMhath
SlainteMhath Jan 04, 2007 at 09:17:31 (UTC)
Goto Top
Mail ist unterwegs face-smile
Member: moeller67
moeller67 Jan 05, 2007 at 13:45:28 (UTC)
Goto Top
Lieber SlainteMhath melde dich nochmal,
ich hatte dir 2 Mails geschrieben, sind die angekommen?
Member: SlainteMhath
SlainteMhath Jan 05, 2007 at 13:47:36 (UTC)
Goto Top
Lieber SlainteMhath melde dich nochmal,
ich hatte dir 2 Mails geschrieben, sind die
angekommen?
Das Mailkonto lese ich nicht regelmaessig

Gibts Probleme mit dem Code?
Member: moeller67
moeller67 Jan 05, 2007 at 13:50:34 (UTC)
Goto Top
Jetzt nehme ich mal die Mail's und kopiere sie einfach:

1.
Hallo,

vielen Dank erstmal.

- empfangen klappt einbandfrei (kann ich das ganz noch auf Dateitypen begrenzen? .mdb, .jpg etc)
=ftpGetAllFiles("meinftpserver";"user";"meinpass";"/";"C:\ftp\Eingang";1)


- senden klappt leider noch nicht. "Datentypen stimmen nicht überein" (kann ich das ganz noch auf Dateitypen begrenzen? .mdb, .jpg etc)
=ftpPutFiles("meinftpserver";"user";"meinpass";"C:\ftp\Ausgang";"/";1)

- wie kann ich den gesamten Status während des Anmeldens, Senden oder Empfangen nun sichtbar machen?
Ich hab in deiner Funktion was von MSGBOX gelesen, doch beim "Empfangen" macht er zwar seine Arbeit, doch angezeigt wird nichts.

Vielen Dank

Gruß
Stephan Möller


2.
Hallo,
ich hab noch einen Fehler, wenn ich mich über VPN einwähle
geht auch das Dateien empfangen nicht. Folgender Fehler:
Laufzeitfehler 91 "Objektvariable oder With-Blockvariable nicht festgelegt"
Beim Debuggen markiert er "ftp.CloseConnection" gelb.
Die Verbindung ins VPN steht, per Dos erreiche ich auch den ftp-Server

In der Firma über Netzwerk geht es ja auch, nur hier am Notebook über die VPN-Einwahl nicht.

Gruß
Stephan Möller
Member: SlainteMhath
SlainteMhath Jan 05, 2007 at 14:18:16 (UTC)
Goto Top

- senden klappt leider noch nicht.
"Datentypen stimmen nicht
überein" (kann ich das ganz noch
auf Dateitypen begrenzen? .mdb, .jpg etc)

=ftpPutFiles("meinftpserver";"user";"meinpass";"C:\ftp\Ausgang";"/";1)
Die Funktion ftpPutFiles hat folgende Parameter:
Host As String, User As String, Password As String => selbsterklärend

LocalFile() As String => ein Array das Typs String

RemoteFile() As String => ein Array das Typs String

Optional FailIfExists As Boolean => Wahr=Abbruch, falls Datei auf dem Server schon existiert.

Zu LocalFile() und RemoteFile():
Das sind wie gesagt Arrays. Das ganze ist so gedacht, das die Members des Arrays LocalFile als auf dem
Server den Namen/Pfad aus RemoteFile bekommen.

Beispiel:
LocalFile(1)="C:\WAS\AUCH\IMMER.TXT"
RemoteFile(1)="/was/anderes.txt"
=> aus die Lokale Datei "C:\WAS\AUCH\IMMER.TXT" wird auf dem Server als "anderes.txt" im Verzeichnis "/was"
abgelegt.

Du wirst also um ein bischen VBA Programmierung nicht drumrum kommen. Die Funktionen sind nicht
zur Verwendung in einem Control im Formular o.Ä. gedacht.


- wie kann ich den gesamten Status
während des Anmeldens, Senden oder
Empfangen nun sichtbar machen?
Ich hab in deiner Funktion was von MSGBOX
gelesen, doch beim "Empfangen"
macht er zwar seine Arbeit, doch angezeigt
wird nichts.
Gar nicht. Diese Funktionalität bietet die DLL nicht. Die Funktionen geben jeweils
TRUE falls die Aktion erfolgreich war oder FALSE wenn nicht.


2.
Hallo,
ich hab noch einen Fehler, wenn ich mich
über VPN einwähle
geht auch das Dateien empfangen nicht.
Folgender Fehler:
Laufzeitfehler 91 "Objektvariable oder
With-Blockvariable nicht festgelegt"
Beim Debuggen markiert er
"ftp.CloseConnection" gelb.
Die Verbindung ins VPN steht, per Dos
erreiche ich auch den ftp-Server
Hm, ich fürchte da kann ich dir leider nicht helfen. Das scheint evtl.
ein problem mit der Netzwerklibrary der MyFTP.dll zu sein, die sich
nicht mit deinem VPN Client verträgt o.Ä. (Die DLL ist nicht von mir
selber, also keine Ahnung, was da genau schief läuft.)

HTH,
Slainte
Member: moeller67
moeller67 Jan 05, 2007 at 14:25:35 (UTC)
Goto Top
Ich hatte es ja vorher über Shell(ftp.....), so funktioniert es ja.
Nur wird dabei ein DOS-Fenster geöffnet, wo Übertragungsstatus (Transfer...OK) etc.
drin stehen. Ich würde diesen Status aber gerne im Formular darstellen. Ich muß sehen
ob die Dateien angekommen sind.
Vielleicht fällt dir ja noch durch Zufall was ein.