Seite 1 von 1

Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 11:34
von Andreas Vogt
Hallo,
wollte die Filter Control Klassen importieren, bekomme aber nur eine msgbox mit Fehler 53, Datei nicht gefunden.
Titel der MSgbox ist cmdImportFiles_Click, Hinweis im Fehler-Text ist (cmdImportFiles_Click->ACLibImportWizard).

Andere Module und Klassen lassen sich importieren.
Gruß Andreas

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 12:01
von Sten Schmidt
Hallo,

das Problem liegt offenbar in der data/SqlTools.cls, wenn man die Zeile:

Code: Alles auswählen

<replace>data/SqlTools.bas</replace>
 


entfernt, dann klappt der Import. Hier könnte man einen Bug aufmachen...

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 13:19
von Andreas Vogt
Stimmt,
hatte nämlich in der Statusleiste den Importvorgang hängen von SQLTools.
Ist aber doch kein Bug von AccLib sondern von diesem einen Modul?!

Andreas

/edit
der Fehler in der SQLTools Klasse ist eindeutig das Replace.
Fügt man in das Verzeichnis die Datei SqlTools.bas ein (leere Textdatei) dann funktioniert es.

Aber wozu sollte denn was umbenannt werden? Sehe da momentan wenig Sinn.
Ich mach gleich mal ein Commit mit der geänderten Klasse.

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 14:51
von Josef Pötzl
Die Änderung von SqlTools.bas auf SQLTools.cls ist keine Umbenennung sondern eine Implementierungsänderung, da mit der Klasse nun mehrere SQL-Dialekte unterstützt werden können.
Das Problem entsteht, wenn man in einer bestehenden Anwendung die Module aktualisiert, weil im Repository die Datei nicht mehr vorhanden ist.
Für so einen Fall muss man eine "Ersatzdatei" erstellen, die auf die neue Datei verweist.
... gut das auch andere das AcLib-Repo verwenden, bei mir war die Datei zwar im Verzeichnis, aber noch nicht eingecheckt. :)

/edit: Es wird ein Update vom ImportWizard geben, mit dem vorhandene Dateien umbenannt bzw. gelöscht werden, wenn sie durch ein anderes gleichnamiges Codemodul (z. B. Klasse ersetzt Standardmodul) ersetzt werden.

LG
Josef

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 15:33
von Andreas Vogt
Hallo Josef
Dann wäre es aber gut wenn im Import Wizard die Replacefunktion geändert wird in die Richtung "ReplaceIfFileExists", damit man nicht in einen Fehler hineinläuft und die Dateien trotzdem importiert werden können.
In der Datei ACLibFileManager.cls müsste man nur die Prozedur getCodeLibInfoRepositoryFileReplacement() ändern:
Code: Alles auswählen

Private Sub getCodeLibInfoRepositoryFileReplacement(ByRef cli As CodeLibInfo, ByRef sSourceString As String)
    Dim FileName As String
    FileName = findSubString(sSourceString, SEARCHSTRING_REPLACE_BEGIN, SEARCHSTRING_REPLACE_END)
    If Len(Dir(FileName)) > 0 Then
        cli.RepositoryFileReplacement = Replace(FileName, "\", "/")
    End If
End Sub


Alternativ könnte man die Prozedur zusätzlich zur bestehenden verwenden und umbenennen in getCodeLibInfoRepositoryFileReplacementifExists() und bei der bisherigen entweder ein Err.Raise bringen oder eben eine Abfrage ob man ohne das Replace fortfahren möchte.

Gruß Andreas

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 15:55
von Josef Pötzl
Das passt schon so wie es ist. ;)
Ob die Datei im Repo vorhanden ist oder nicht, sollte für das ERsetzen keine Rolle spielen. Daher darf man RepositoryFileReplacement nicht auf Leerstring setzen, wenn die alte Datei nicht im Repo liegt.


Der Replace-Tag in einem Codemodul zeigt an, welches Codemodul durch das neue ersetzt wird.
Ersetzt bedeutet: das alte Codemodul wird nicht mehr benötigt.

Probleme gab es bisher, wenn ein Standardmodul mit einer Klasse ersetzt wird, und die beiden die gleichen Namen hatten. Das ist in der neuen ImportWizard-Version behoben.

LG
Josef

Re: Fehler beim Importieren von Draft\form\filter

BeitragVerfasst: Mo 15. Jun 2015, 16:36
von Josef Pötzl
Version 1.0.10 ist nun vorhanden. Damit funktioniert nun der Import auch, wenn der VbComponent-Typ wechselt oder die zu ersetzende Datei nicht mehr im Repo ist.

mfg
Josef