Mal wieder Volumes

  • Hallo Miteinander,


    ich habe ein Problem: Da es zwischendurch mal eine Imabas-Version gab, die Unterverzeichnisse von Volumes nicht unterstützte, habe ich damals mit viel Mühe meine Imabas Datenbank umgestrickt. Ich lege meine Bilder nach Jahren und Quartalen ab. Meine Volume-Struktur sieht wie folgt aus (und entspricht der Verzeichnisstruktur auf der Festplatte) (Volume1 ist absolut, der Rest relativ)


    Volume1 (absolut)
    |- 2007
    | |- 2007_Quartal1
    | |- 2007_Quartal2
    | |- 2007_Quartal3
    | |- 2007_Quartal4
    |
    |- 2008
    | |-2008_Quartal1


    Das ist natürlich ziemlich aufwändig und doppelt gemoppelt, da ja nun Volumen, Festplatte und Filme die gleiche Struktur abbilden. So langsam wird es auch etwas unübersichtlich. Außerdem möchte ich wissen, wann mein Volume1 eine bestimmte Größe erreicht hat. Das funktioniert so nicht. Da ja nun Unterverzeichnisse in Volumen wieder unterstützt werden, würde ich gern wieder zurück gehen. Das heißt nur noch das übergeordnete Volume beibehalten (Unterteilung auf der Platte soll so bleiben). Das entspricht ja dann auch dem vorgeschlagenen Vorgehen in der FAQ, wenn ich das richtig verstanden habe. Die untergeordneten Volumen fallen dann weg. Übrigens die Filme sind den entsprechenden (Unter-)Volumen zugeordnet.


    Wie kann ich das mit möglichst wenig Aufwand umstricken (das heißt, ohne die Bilder neu importieren zu müssen)?


    Ein frohes Fest wünscht Ingmar

  • Hallo Ingmar,
    nicht ganz einfach aber machbar, wenn du mit SQL umgehen kannst...


    Im Feld filename der Tabelle bilder sollten alle Bilder im Pfad .\2007\2007_Quartal1 folgende Einträge haben:
    - 2007\2007_Quartal1\image_001.jpg
    - 2007\2007_Quartal1\image_002.jpg
    usw...
    Als erstes muss der Pfad weg:

    Code
    1. update bilder
    2. set filename = copy(filename,20,1000)
    3. where filename like '2007\2007_Quartal1\%'

    wobei sich die 20 sich auf die Länge (19+1) von 2007\2007_Quartal1\ bezieht! Anderer Pfad bedeutet also andere Länge!


    Dann muss folgendes geschehen, bzw. sichergestellt sein:
    Auf den Ordner 2007\2007_Quartal1\muss ein Volume zeigen und es muss dafür einen Film geben der dieses Volume verwendet, sonst findet Imabas die Bilder nicht mehr.


    Solltest du mit einer Kopie deiner Datenbank mal ausprobieren, vor allem die Wirkung der Filme und Volumes mit den neuen Pfaden...

  • Hallo Kai,


    erst einmal vielen Dank für die blitzschnelle Antwort. Wahrscheinlich hast Du mich aber mißverstanden. Pfade befinden sich im Feld "filename" keine. Dort stehen bei mir nur die Dateinamen ohne Pfad. Ich erklär das mal andersherum an Hand eines Bildes.


    BildA liegt auf der Platte in z.B. d:\Bilder\Vol1\2008\Q1 (erstes Quartal 2008).
    In Imabas liegt das Bild im Film 200801. Dieser zeigt auf das Volume "2008_01" welches wiederum auf obiges Verzeichnis zeigt. Soweit so gut. Jetzt kommt das Problem:


    Volume "2008_01" ist relativ zu Volume "2008", welches wiederum auf Verzeichnis \2008 des absoluten Volume Vol1 zeigt. Vol1 zeigt auf das Verzeichnis d:\Bilder\Vol1\.


    Ich möchte nun diese ganze Volume-Hirarchie aufdröseln. Mir reicht ein absolutes Volume, welches auf das Verzeichnis Vol1 zeigt. Oder sollte noch EIN relatives Volume dazwischengeschaltet werden? Wohlgemerkt, die Verzeichnisstrukturauf der Platte möchte ich belassen. Wenn eine DVD voll ist (Vol1 hat 4GB erreicht), wird das Volume auf DVD gebrannt und Vol2 angelegt. Ich meine, so ähnlich hattest Du das in der FAQ empfohlen. Ich möchte also die Bilder jeweils 2 Etagen in der Volumenstruktur "nach oben rücken" ohne deren pfysikalischen Speicherplatz zu ändern. Die Filme würde ich erst mal so lassen, eventuell überlege ich mir da auch noch etwas anderes.


    Herzliche Grüße
    Ingmar

  • Ah ja... Dann musst eigentlich das was ich geschrieben habe nur umdrehen :-)


    Also den Pfad nicht entfernen sondern hinzufügen:

    Code
    1. update bilder set filename = '2007\2007_Quartal1\' + filename
    2. where film = 'UKEY_OF_FILM_DES_BILDES'


    Dann kannst du dem Film das Hauptvolume zuweisen, das musst du wohl aber vor dem Manipulieren der Bilder machen...

  • Hallo Kai,


    habe durch Zufall entdeckt, daß es noch viel einfacher (und ganz ohne SQL) geht! :smile2:


    Zumindest wenn ich meine Filmstruktur beibehalte und dem Film mein übergeordnetes Volume "Vol1" zuweise, wird "filename" in der Tabelle Bilder automatisch angepasst!


    Vielen Dank für die Hilfe und bis zum nächsten Problem ...:?:


    Ich habe da übrigens noch eine Idee für ein neues Feature: Wenn in einem übergeordneten Volume eine Maximalgröße gesetzt ist, sollten auch untergeordnete Volumes berücksichtigt werden und nicht nur Bilder, die direkt dem Volume zugeordnet sind.


    Gruß Ingmar


    NACHTRAG:
    Bevor es jemand nachmacht: Es hat nur bei einem Teil der Bilder funktioniert. Warum?

    Einmal editiert, zuletzt von Ingmar ()

  • Hallo Kai,


    wollte das SQL mit Imabas 7.2 (Firebird) und IBExperts ausführen. Dies SQL ist aber dort nicht unterstützt.


    Daraufhin habe ich es mit ODBC und ACCESS 2007 versucht die Daten zu aktualisieren, leider bekommen ich dort den Schreibkonflikt Fehler. Ich kann nur neue Datensätze einfügen.


    Was kann ich tun


    Gruss
    Ralf

  • Hallo,
    für Firebird musst du die Strings anders concatenieren, boah denglisch :-P

    Code
    1. update bilder set filename = '2007\2007_Quartal1\' [B][COLOR=Red]||[/COLOR][/B] filename
    2. where film = 'UKEY_OF_FILM_DES_BILDES'

    PS: Immer mit einer Kopie der Datenbank ausprobieren...
    PPS: Niemals mit Access an "echte" Datenbanken gehen, schon gar nicht per ODBC :-|