PDA

Vollständige Version anzeigen : FTP-Lib ohne Verweise möglich ?


TGA_Project
28.06.2001, 10:26
Hallo,
da ich Dateien per FTP übertragen möchte, bin ich zwangsläufig über die InetTransferLib von Ashish gestossen. Um diese Einzubinden, muss ich Verweise setzen, die sich wiederum auf feste Verzeichnisse beziehen.

Da ich die MDB aber mehreren Kunden gebe, die alle unterschiedliche Verzeichnisse haben, verkompliziert das Anlegen der Verweise die Sache erheblich. Ich habe es nun soweit hinbekommen, dass alles andere (Verknüpfungen, Table-Links etc...) automatisch beim Start neu gemappt wird.

Gibt es eine Möglichkeit, Verweise per VBA anzulegen bzw. auch zu löschen ? Wie schaffe ich es, dass die Verweise zu der LIB bei einem Start der MDB aktualisiert werden ?

CU
Mario

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

A.S.
28.06.2001, 10:50
Hallo Mario,

sieh Dir einmal diesen Link an:
http://www.mvps.org/access/modules/mdl0022.htm

Dort findest Du einen Verweis-Checker von Terry Kraft. Ob der allerdings auch die Verweise neu setzt, weis ich nicht.....

Gruß

Arno

Scorefun
28.06.2001, 19:53
es reicht doch, wenn das InetTransferlib-Addin im gleichen Verzeichnis wie die DB liegt.
Dann duerfte es zu keinen Problemen kommen.
Und das Vorhandensein im Datenbank-pfad kann man ja leicht beim Start ueberpruefen und gegebenenfalls reagieren...

marmic55
29.06.2001, 10:35
Hallo,

ich habe mal in meiner 'Mottenkiste' gekramt. Hier eine Funktion:
==========================================
Function Verweise_einbinden_tip()
Dim ref As Reference
' Fehler 32813, wenn Verweis bereits existiert
' Fehler 48, wenn Datei nicht gefunden wird, daher bei Dateien,
' die entweder "system32" (NT) oder "system" haben,
' beide Verweise auflösen
' ******** Erst die Funct. aufrufen, dann erst in eigentliche
' ******** springen, da sonst beim vorherigen Kompilieren
' ******** fehlender Verweis gefunden wird

On Error GoTo Error_ReferenceFromFile
Set ref = References.AddFromFile("C:\Programme\Gemeinsame Dateien\Microsoft Shared\DAO\DAO350.dll")
Set ref = References.AddFromFile("C:\Programme\Gemeinsame Dateien\Microsoft Shared\VBA\VBA332.dll")
Set ref = References.AddFromFile("C:\Programme\Microsoft Office\Office\MSACC8.OLB")
Set ref = References.AddFromFile("C:\Programme\Microsoft Office\Office\MSO97.DLL")
Set ref = References.AddFromFile("C:\WINNT\system32\COMDLG32.OCX")
Set ref = References.AddFromFile("C:\WINNT\system\COMDLG32.OCX")
Set ref = References.AddFromFile("C:\WINNT\system32\MSCAL.OCX")
Set ref = References.AddFromFile("C:\WINNT\system\MSCAL.OCX")
f_eigenedaten1
Exit_ReferenceFromFile:
Exit Function

Error_ReferenceFromFile:

If err = 32813 Or err = 48 Then
Resume Next
End If

MsgBox err & ": " & err.Description
Resume Exit_ReferenceFromFile
End Function
============================================

Derzeitig benutze ich diese Funktion nicht, da ich keine 'eigenen' Verweise habe.
Diese Funktion hat allerdings nie Probleme bereitet.
Genauso gut könnte der Pfad in einem Windows-Dialog (FileDialog) gesucht und übergeben werden.

Probleme mit Verweisen anderer Art machten mir das Leben schwer, als es darum ging, das bei weitergegebenen Datenbanken offenbar unterschiedliche Versionen der DAO vorhanden waren.
Dieses Problem konnte ich jedoch lösen (u.a. über Microsoft). Eine Datenbank (Verweise.mdb) habe ich für Alle in's Netz gestellt.

Vielleicht hilft obige Funktion weiter. Wie gesagt, ich habe sie mit anderen (eigenen) Verweisen jetzt nicht durchgetestet.


Mich würde einmal interessieren, welche Art von "Dateien" per FTP übertragen werden (Access-Dateien?). Ich stelle Fußballdaten über per VBA erstellte Tabellen in's Netz (NetObjectFusion / Komponente "Datenliste").
Gruß

Michael

TGA_Project
29.06.2001, 11:28
Danke euch für die zahlreichen Antworten

@Scorefun

Gleiches Verzeichnis funktioniert nicht, da die Verweise feste Pfade beinhalten und die LIB dort gesucht wird.

@ArnoSimon

Schon nahe dran, aber es fehlt da noch der Schritt, dass ich den Verweis korrigieren bzw löschen/anlegen kann.

@marmic55

SEHR SCHÖN, dass sieht gut aus, werde Deine Func in KW 28 mal ausprobieren. Habe z.Zt Urlaub und es ist ein Firmenprojekt, für das ich diese Sache hier brauche.


Nochmal danke an euch DREI !

CU
Mario

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

TGA_Project
29.06.2001, 11:39
@marmic55

Sorry, man sollte wirklich genauer lesen. Es wird eine Textdatei in einem selbstdefinierten Format durch eine VBA-Routine erzeugt. Diese TXT soll dann per Klick auf einen Webserver per FTP gestellt werden.

Thema drum herum ist ein gemeinsamer Webshop für 27 Firmen. Diese pflegen ihren Artikelstamm über ein Access-Frontend und stellen diese Stammdaten dann dem Webserver zur Verfügung, der wiederum die Daten in einen Oracle-Server für den Webshop stellt (muss noch einige gemischt, abgeglichen und konvertiert werden).

CU
Mario!

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

marmic55
29.06.2001, 19:24
Jetzt komme ich noch einmal:

Habe mich heute mit Verweisen beschäftigt und von einer Datenbank einen Verweis auf eine andere Datenbank gelegt (db2.mdb).

So weit, so gut. Nun habe ich die "db2.mdb" in einen anderen Ordner verschoben.

Richtigerweise wird bei den Verweisen "Nicht vorhanden..." angezeigt.

Jetzt kann ich in diesem Stadium keinen Code ausführen lassen. Bei diesem Versuch wird das Klassenmodul "FileDialog" geöffnet und der Fehler "Projekt oder Bibliothek nicht vorhanden.." gemeldet (für das Schlüsselwort 'mid').

Wenn diese Nuss nicht geknackt werden kann, so gäbe es nur einen Weg (??):
Den Verweis zur Laufzeit setzen; den Pfad aus einer Tabelle 'Voreinstellungen' entnehmen.
Beim Beenden der Anwendung müsste dann die Referenz zur "db2" wieder gelöscht werden.

Gibt es sonst eine Möglichkeit, die Ausführung von Code trotz des obigen Fehlers erzwingen zu können ?

Gruß

Michael

marmic55
30.06.2001, 14:40
Hallo:

@Arno:
Habe mir Deinen hier angebotenen Link, bzw. die Datei, heruntergeladen. Verweise werden neu gesetzt; aber hier immer wieder das selbe Problem, dass, wenn der Pfad nicht mehr stimmt, Code nicht mehrausführbar ist. Hier nutzt mir auch dann der Code von Microsoft, auf den manuela MAL VERWIESEN HAT (Versionskonflikte DAO u.a.) nichts mehr.

@Scorefun:
Du könntest Recht haben, zumindest in Bezug auf verwiesene Datenbanken / Assistenten. Die Dateien können 'wie wild' verschoben werden. Sofern die Referenzdatenbank im selben Verzeichnis liegen, gibt es keine Probleme, auch nicht, wenn Verzeichnisse neu erstellt und die Datenbanken (einschl. Referenz..) dort hineingepackt werden.

@Mario:
Es mag sein, dass ich vielleicht etwas vom Thema abgewichen bin; die 'InetTransferLib' kenne ich nicht.
Vielleicht kannst Du aber mit den hier aufgeführten "allgemeinen Angaben" doch etwas anfangen.
Teste vielleicht einmal durch, wie sich die "InetTransferLib", bzw. der Verweis hierauf, verhält, wenn beide (DB u. Verweis) in einem Verzeichnis liegen (am besten, nach dem 1. Test das Verzeichnis woanders hin verschieben u. die MDB wieder öffnen).

Ansonsten stelle ich einmal den Code hier hinein (abgekupfert v. T. Kraft / verändert pp.).
Aufgerufen wird hier das Klassenmodul "FileDialog" (das ist auf meiner HP -Datenbank 'Tabellen einbinden'-).

=========================================

Function VerweisAufrufen()
'*****************************************************************************
' Date : 30 Juni 2001 Selber Fehler *Projekt ... nicht aufgefunden
'*****************************************************************************
On Error GoTo VerweisAufrufen_ERR

Application.Run "Tonis Assistent.Tester4711"
VerweisAufrufen_EXIT:
Exit Function

VerweisAufrufen_ERR:
Select Case err
Case 2517
'establish a reference
'Dim strRef As String
'strRef = Application.SysCmd(acSysCmdAccessDir)
'strRef = strRef & "wzref.MDA"

MsgBox "Der Verweis zu einer Datenbank ist flöten gegangen. Suchen Sie " & _
"die Datenbank 'db1.mda' anhand des nachfolgenden " & _
"Dialogfensters!", vbCritical, "Verweise"
Dim fd As New FileDialog ' Klassenmodul FileDialog auf Homepage
' (DB 'Tabellen einbinden')
Dim Dateiname As String

With fd
.DialogTitle = "Daten einbinden"
.DefaultExt = "db1.mda"
.DefaultDir = ""
.DefaultFileName = ""
.Filter1Text = "db1.mda"
.Filter1Suffix = "db1.mda"
.ShowOpen
If fd.FileName = "" Then ' User hat abgebrochen
Beep
MsgBox "Wenn Sie meinen, ich sei blöd, dann" & _
"sind Sie bei mir an der richtigen " & _
"Adresse", vbCritical, "Nicht mit mir"
DoCmd.Quit acQuitSaveNone
Exit Function
End If
Dateiname = fd.FileName
End With
MsgBox Dateiname
Application.References.AddFromFile Dateiname ' Neu setzen (Verweis)
Resume
Case Else
MsgBox "Fehler in Modul - " & VerweisAufrufen & " - " & err.Description & "(" & err.Number & ")"
Resume VerweisAufrufen_EXIT
End Select

End Function

========================================

Vielleicht hilft Dir das doch etwas weiter, auch wenn ich hier auf MDB bzw. auf eigen erstellte MDA verwiesen habe.

Die Funktion "VerweisAufrufen" bringe ich in die Datenbank "Verweis.mdb" (Homepage) mit unter.

Ansonsten kann ich erst ab dem 15.07.01 hier wieder reinschauen.
Allen in diesem Forum einen schönen Urlaub.

Michael