inhalt der Datenfelder umschreiben

If you need help on how to use the program
Post Reply
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

inhalt der Datenfelder umschreiben

Post by simple-song »

Gibt es irgendwie die Möglichkeit den Eintrag der Datenfelder
"in einem Zug" umzschreiben?

Beispiel: ich habe ca. 600 Filmen einer "Quelle" zugeordnet
nun möchte ich aber den Namen der Quelle bei allen Filmen andern.

das bedeutet, ich muß nun 600 mal die Quelle umschreiben, da ich die
"AMC-Datei" (sample-amc) nicht in einem
texteditor z.B. durch "suchen und ersetzen" bearbeiten kann.

deshalb die Frage: giebt es eine kompfortablere möglichkeit,
als jeden eintrag im datenfeld einzeln umzubenennen?
Last edited by simple-song on 2008-02-29 14:18:04, edited 1 time in total.
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Re: inhalt der Datenfelder umschreiben

Post by bad4u »

simple-song wrote:Gibt es irgendwie die Möglichkeit die den Eintrag der Datenfelder "in einem Zug" umzschreiben?
Beispiel: ich habe ca. 600 Filmen einer "Quelle" zugeordnet
nun möchte ich aber den Namen der Quelle bei allen Filmen andern.
Das lässt sich leicht mit einem kleinen Skript erledigen.

Wenn nur ein alter Wert gelöscht und ein neuer Wert in das Feld eingetragen werden soll, reicht folgendes Skript :

Code: Select all

program SetValue;

const
  value = 'EigenerWert';
  field = fieldSource;

begin
      SetField(field, value);
end. 
In 'EigenerWert' wird eingetragen, was nachher im Feld Quelle (fieldSource) stehen soll.


Wenn nur ein bestimmter Teil eines Wertes ersetzt werden soll (z.B. nur das Laufwerk C:\ zu D:\ weil die Filme verschoben worden sind), muss zuerst der Wert des originalen Feldes ausgelesen, dann geändert und zurückgespeichert werden :

Code: Select all

program FindReplace;

const
  WholeWord = False;
  Search = 'old';
  Replace = 'new';
  Field = fieldSource;

var
  s: string;
begin
  s := GetField(Field);
  if WholeWord then
  begin
    if s = Search then
      SetField(Field, Replace);
  end
  else
    SetField(Field, StringReplace(s, Search, Replace));
end.
Hierbei wird 'old' durch den alten Wert (z.B. C:\) ersetzt, 'new' entsprechend durch den neuen Wert (D:\). Somit wird der Eintrag C:\Filme\Film1.avi dann zu D:\Filme\Film1.avi.

Um das gewünschte Skript zu erstellen, einfach das Skripting Fenster aufrufen, ein Skript anklicken und den Editor starten. Dann ein neues Skript erstellen, alles reinkopieren und unter neuem Namen abspeichern. Die verschiedenen Feld Bezeichnungen finden sich in der Hilfe im Editor unter "Script File Creation" (Quelle = fieldSource). Darauf achten dass später die richtigen Filme ausgewählt sind und im Skript Fenster dann "Ausgewählte" oder "Alle" anklicken.

Vorher vorsichtshalber die Datenbank sichern ;)

@antp: As you might have seen from the code, question was about replacing a fieldSource value on multiple movies.
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Re: inhalt der Datenfelder umschreiben

Post by simple-song »

Vielen Dank. funktioniert.
Das war sehr hilfreich.

Nun habe ich doch noch ein kleines Problem.

da ich gern andere Datenfelder/Pfade verändern möchte
fehlen mir die feldbezeichnungen.
zb.:
-quelle = fieldSource
-url = = fieldurl
fieldOriginalTitle
fieldTranslatedTitle
fieldCountry
fieldYear
fieldCategory
fieldActors
fieldDirector
fieldRating
fieldDescription ...usw.

wie ist die feldbezeichnungen für das Bildpfad-Datenfeld
zb. Bild = fieldPic (stimmt natürlich nicht)

danke
Last edited by simple-song on 2008-03-04 06:49:25, edited 2 times in total.
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

Alle Felder sind die (eigentlich einfachen) englischen Bezeichnungen.

Für das Bild gibt es kein eigenes Feld, sondern es wird vom Skript mit der Funktion 'GetPicture' eingelesen.

Alle anderen Felder kannst du ganz einfach zuordnen indem du kurzzeitig im Menü unter 'Tools -> Sprache -> English (for translations)' einstellst. Die Felder haben jetzt englische Bezeichnungen die weitestgehend identisch mit den Feldnamen sind - einfach zusammen schreiben und ein field.. vor die Bezeichnung setzen. Original Titel ist dann fieldOriginalTitle , Übersetzter Titel ist dann fieldTranslatedTitle.

Ausnahmen sind fieldNumber (=Nummer des Films in der Liste), fieldChecked (=das Kästchen hinter der Filmnummer in der Liste), fieldMedia (= Bezeichnung), fieldSize (=Dateigrößen) und fieldVideoBitrate/fieldAudioBitrate (= die kleinen Felder hinter Audio und Videoformat.
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:Alle Felder sind die (eigentlich einfachen) englischen Bezeichnungen.

Für das Bild gibt es kein eigenes Feld, sondern es wird vom Skript mit der Funktion 'GetPicture' eingelesen.

Alle anderen Felder kannst du ganz einfach zuordnen indem du kurzzeitig im Menü unter 'Tools -> Sprache -> English (for translations)' einstellst. Die Felder haben jetzt englische Bezeichnungen die weitestgehend identisch mit den Feldnamen sind - einfach zusammen schreiben und ein field.. vor die Bezeichnung setzen. Original Titel ist dann fieldOriginalTitle , Übersetzter Titel ist dann fieldTranslatedTitle.

Ausnahmen sind fieldNumber (=Nummer des Films in der Liste), fieldChecked (=das Kästchen hinter der Filmnummer in der Liste), fieldMedia (= Bezeichnung), fieldSize (=Dateigrößen) und fieldVideoBitrate/fieldAudioBitrate (= die kleinen Felder hinter Audio und Videoformat.
Das ist jetzt soweit klar und geht auch.
Ich habs aber mit dem Bild trotzdem noch nicht ganz geschnallt.

Bedeutet das, das man den externen Pfad eines Bildes ( der ja in der "sample.amc" geschrieben ist ) nicht mit einem skript ändern kann?

( habe deletantisch Funktion 'GetPicture' statt 'SetField' in allen
Varianten erfolglos probiert ) :(
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

In der mitgelieferten sample.amc sind die Bilder normalerweise eben nicht extern verknüpft, sondern die Bilder sind im Katalog selber gespeichert. Die Bilder können jedoch extern gespeichert werden, wenn dies in den Einstellungen vorgegeben wird oder der Katalog im XML Format gespeichert wird. Auf die gespeicherten Links dazu kann man mittels Skript meines Wissens nach nicht direkt zugreifen (zumindest nicht ohne Umwege).

Die Funktion GetPicture liest nur Bilder aus dem Netz ein, nicht lokal gespeicherte von Festplatte, also z.B: GetPicture('http://ecx.images-amazon.com/images/I/5 ... AA240_.jpg')

Von Festplatte können die Bilder wohl nur durch ziehen und ablegen ins Fenster oder über die entsprechenden Menüfunktionen/Buttons eingefügt werden.

Alle Angaben wie immer ohne Gewähr ;)
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:In der mitgelieferten sample.amc sind die Bilder normalerweise eben nicht extern verknüpft, sondern die Bilder sind im Katalog selber gespeichert. Die Bilder können jedoch extern gespeichert werden, wenn dies in den Einstellungen vorgegeben wird oder der Katalog im XML Format gespeichert wird. Auf die gespeicherten Links dazu kann man mittels Skript meines Wissens nach nicht direkt zugreifen (zumindest nicht ohne Umwege).

Die Funktion GetPicture liest nur Bilder aus dem Netz ein, nicht lokal gespeicherte von Festplatte, also z.B: GetPicture('http://ecx.images-amazon.com/images/I/5 ... AA240_.jpg')

Von Festplatte können die Bilder wohl nur durch ziehen und ablegen ins Fenster oder über die entsprechenden Menüfunktionen/Buttons eingefügt werden.

Alle Angaben wie immer ohne Gewähr ;)

ok.
ich habe unter Einstellungen / Bild-Importierung / "Bild nur Verknüpfen"
und "Relativen Pfad erzeugen" gewählt, damit eben die "sample.amc"
so schmal wie möglich bleibt. In diesem fall steht der pfad zum bild
in der "sample.amc".
ich habe gehofft, daß man diesen
wert auch irgendwie mit einem script ändern kann.

...da werd ichs nun von "Hand" machen.

Nochmals danke für die Unterstützung.
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

Wenn du die AMC Datenbank als XML File abspeicherst ('Speichern unter' oder 'Exportieren') anstatt im .amc format, kannst du das File mit einem XML Editor ebenfalls gut editieren. Einfach mal nach kostenlosen XML Editoren suchen, vernünftige sollten eigentlich eine 'Ersetzen' Funktion bieten, habe jedoch keine weiteren Erfahrungen damit.

Das XML File kann nachher dann wieder als .amc File zurückgespeichert werden, was aber nicht unbedingt nötig ist. Die Bilder bleiben dabei extern verknüpft, da XML sowieso keine integrierten Bilder unterstützt.
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:Wenn du die AMC Datenbank als XML File abspeicherst ('Speichern unter' oder 'Exportieren') anstatt im .amc format, kannst du das File mit einem XML Editor ebenfalls gut editieren. Einfach mal nach kostenlosen XML Editoren suchen, vernünftige sollten eigentlich eine 'Ersetzen' Funktion bieten, habe jedoch keine weiteren Erfahrungen damit.

Das XML File kann nachher dann wieder als .amc File zurückgespeichert werden, was aber nicht unbedingt nötig ist. Die Bilder bleiben dabei extern verknüpft, da XML sowieso keine integrierten Bilder unterstützt.

Das geht mit einem xml-editor gut.

Gern würde ich noch ein ähnliches Problem lösen.
( da leider nur eine url-Verknüpfung pro Datensatz möglich ist )

und zwar: den Inhalt des Feldes "fieldurl"
auf das Feld "fieldComments" Verschieben.

...ich schaffe es einfach nicht. :??:
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

Code: Select all

program MoveFieldContents;

var
  value: string;
begin
  value := '';
  value := GetField(fieldURL);
  SetField(fieldComments, Value);
  SetField(fieldURL, '');
end.
Quelle mit GetField auslesen, Ziel mit SetField schreiben, Value dient zum Zwischenspeichern des Feldinhalts. SetField(fieldURL,''); löscht den ursprünglichen Wert. Vorsicht, eventuell vorhandene Werte in Comments werden überschrieben !

Sollen in 'Comments' vorhandene Werte beibehalten werden und die URL als neue Zeile angehangen, muss zusätzlich der bisherige Wert aus 'Comments' ausgelesen werden. Die 'if.. then' Bedingung prüft ob schon Inhalte in 'Comments' vorhanden sind oder nicht, da sonst eventuell eine unnötige Leerzeile eingefügt wird. '#13#10' ist der Zeilenumbruch.

Code: Select all

program MoveFieldContents2;

var
  value: string;
begin
  value := '';
  if GetField(fieldComments) <> '' then
    value := GetField(fieldComments) + #13#10 + GetField(fieldURL)
  else
    value := GetField(fieldURL);
  SetField(fieldComments, Value);
  SetField(fieldURL, '');
end.
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:

Code: Select all

program MoveFieldContents;

var
  value: string;
begin
  value := '';
  value := GetField(fieldURL);
  SetField(fieldComments, Value);
  SetField(fieldURL, '');
end.
Quelle mit GetField auslesen, Ziel mit SetField schreiben, Value dient zum Zwischenspeichern des Feldinhalts. SetField(fieldURL,''); löscht den ursprünglichen Wert. Vorsicht, eventuell vorhandene Werte in Comments werden überschrieben !

Sollen in 'Comments' vorhandene Werte beibehalten werden und die URL als neue Zeile angehangen, muss zusätzlich der bisherige Wert aus 'Comments' ausgelesen werden. Die 'if.. then' Bedingung prüft ob schon Inhalte in 'Comments' vorhanden sind oder nicht, da sonst eventuell eine unnötige Leerzeile eingefügt wird. '#13#10' ist der Zeilenumbruch.

Code: Select all

program MoveFieldContents2;

var
  value: string;
begin
  value := '';
  if GetField(fieldComments) <> '' then
    value := GetField(fieldComments) + #13#10 + GetField(fieldURL)
  else
    value := GetField(fieldURL);
  SetField(fieldComments, Value);
  SetField(fieldURL, '');
end.

Danke.

Wäre es denkbar ein Feld wie das URL-Feld zu duplizieren
sodaß man zwei externe Links verwalten könnte?

Ich habe meine Verwaltung zum Beispiel so angelegt,
daß der Ausführliche Bescheibungstext in einer externen "Doc-Datei"
auf der Platte liegt und in der "sample.amc" nur eine Stichpunkthaltige
Beschreibung eingetragen ist.

Nun habe ich die geniale Endeckung gemacht, daß ich auch übers
Netzwerk die Filmdatein problemlos ansprechen kann, wenn ich den
Pfad um Url-Feld eingebe.
Beispiel:
\\Cutter\Y_500GB_01_Filme\_filme\8-er 006\DVD_Nr-008\FILM-01.avi
allerdings geht das jetzt auf kosten meiner Externen Beschreibung
F:\filme-verwalten\Catalogs\8-er 006\DVD_Nr-008\word\FILM-01.doc.

...gibs irgend eine Möglichkeit?
(außer einen Link zum "Avi" in der Doc-Datei?)
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

Der Pfad zur .doc Datei kann zwar in den meisten Feldern gespeichert werden, ein direktes Aufrufen der Datei ist aber nur aus dem URL Feld möglich. Soweit ich weiss ist es nicht möglich andere Felder mit der Funktion auszustatten, ohne Änderungen am Programm selber vorzunehmen.
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:Der Pfad zur .doc Datei kann zwar in den meisten Feldern gespeichert werden, ein direktes Aufrufen der Datei ist aber nur aus dem URL Feld möglich. Soweit ich weiss ist es nicht möglich andere Felder mit der Funktion auszustatten, ohne Änderungen am Programm selber vorzunehmen.

Danke.
Das habe ich nun in meiner Verzweiflung auch noch versucht.
Ich wollte das URL-Feld im Programm duplizieren,
aber leider kann ich die Projektdatei
"MovieCatalog.dpr" aus dem "Source code" nicht fehlerfrei ins "Delphi" laden.

Es erscheint:
"Class TAntJvSpinEdit not found. Ignore the error and
continue? NOTE: Ignoring the error may cause
components to be deleted or property values to be lost."

Bitte um Hilfe.
bad4u
Posts: 1148
Joined: 2006-12-11 22:54:46

Post by bad4u »

Korrekte Delphi Version und Add-ons sowie alle zusätzlichen Komponenten installiert ? Dann kann wahrscheinlich nur antp helfen, allerdings nur auf englisch oder französisch ;)
simple-song
Posts: 16
Joined: 2008-02-24 10:40:39
Location: Germany, Dresden
Contact:

Post by simple-song »

bad4u wrote:Korrekte Delphi Version und Add-ons sowie alle zusätzlichen Komponenten installiert ? Dann kann wahrscheinlich nur antp helfen, allerdings nur auf englisch oder französisch ;)

Dann werde ich mich mal mit meinen
5 Vokabeln versuchen auszudrücken.

viewtopic.php?t=3922

Danke für die Hilfe.
Post Reply