Beitrag von Michael (450 Beiträge) am Dienstag, 4.Oktober.2011, 19:49.
Änderung eines Feldes in allen Datensätzen
Hallo Leute,
ist wahrscheinlich ein alter Hut, aber ich habe auch nach dem Studieren der Doku sowie des Forums keine funktionierende Hilfe gefunden.
Ich möchte ein Feld (Optionsfeld) in einer Datenbank global auf einen Wert ändern. Ich habe dies mit dem in der Doku angegebenen mod-Befehl versucht, aber hat nicht funktioniert.
Wäre super, wenn mir jemand helfen könnte.
Danke und Gruß
Michael
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 4.Oktober.2011, 21:05.
Re: Änderung eines Feldes in allen Datensätzen
Antworten
Beitrag von Michael (450 Beiträge) am Dienstag, 4.Oktober.2011, 22:17.
Re: Re: Änderung eines Feldes in allen Datensätzen
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 5.Oktober.2011, 00:33. WWW: www.baseportal.de
Re: Re: Re: Änderung eines Feldes in allen Datensätzen
sag mir mal deinen usernamen, dann schau ich mal direkt - sollte so nämlich funktionieren.
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 5.Oktober.2011, 06:15.
Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Hallo Sander,
mein Username ist MichaelHehn.
Danke und Gruß
Michael
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 5.Oktober.2011, 11:21.
Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
ah, die Datenbank ist zu groß und passt nicht komplett in den Speicher.
Ich ändere es jetzt schrittweise
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 5.Oktober.2011, 11:28. WWW: hammoniaweb.com
Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Bin ja kein Hellseher...;)
kann man aber mit dem Script auch machen:
<perl>
get "Id==* range=0,3000", "Arkansas","erg";
while(get_next("erg"))
{
$Idm=$Id;
mod "Id==$Idm ",["Status", "nicht kontaktiert" ],"Arkansas";
}
</perl>
Dann entsprechend den Range anpassen...
Gruesse
Claus
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 5.Oktober.2011, 12:21.
Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
ich glaube, ein einzelnes mod auf 3000 DS geht schneller und ist weniger speicherintensiv als erst mal 3000 DS zu holen und dann jeden einzelnen zu modden
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 5.Oktober.2011, 12:37. WWW: hammoniaweb.com
Re: Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Kann sein, habe ich nie gemessen, aber ich habe das Script auch für einige andere Dinge gemacht, so kann man dann z.B. nur bestimmte DS in vernetzten DB's ändern, simples Beispiel als Rohbau:
<perl>
get "$Feld1==$var", "$db1","erg";
while(get_next("erg"))
{
get"$Feld2==$var2","$db2";
mod "$Feld3==$var3 ",["Feldname", "$feldinhalt" ],"$db3";
}
</perl>
Da ist man dann sehr flexibel...;)
Gruesse
Claus
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 5.Oktober.2011, 12:57.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Hallo Claus, hallo Sander,
besten Dank für Eure Hilfe - Ihr seid großartig!!!
Liebe Grüße
Michael
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 5.Oktober.2011, 13:30.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
falls du das script noch für andere brauchst, es ist das erste in der Templateliste.
Einfach immer nur die Ids ändern (Datenbanke natürlich auch) und in 10000der Schritten durchgehen.
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 5.Oktober.2011, 13:40.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Nochmals besten Dank!
Gruß
Michael
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 5.Oktober.2011, 07:44. WWW: hammoniaweb.com
Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Nimm mal dieses kleine Script:
<perl>
get "Id==*", "Arkansas","erg";
while(get_next("erg"))
{
$Idm=$Id;
mod "Id==$Idm ",["Status", "nicht kontaktiert" ],"Arkansas";
}
</perl>
hth
Gruesse
Claus
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 5.Oktober.2011, 08:46.
Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Hallo Claus,
danke für Deine Hilfe - leider funktioniert es aber nicht. Der Feldinhalt wird nicht überschrieben und ich bekomme folgende Fehlermeldung:
[ Fehler: Fehlerhafter Perl Code in /MichaelHehn/Arkansas.meta{begin}:
'' trapped by operation mask at (eval 77) line 1. ]
Hat es vielleicht damit zu tun, daß es sich hierbei um ein Radio-Feld handelt?
Der angegebene Wert ist einer der fdefinierten Werte.
Gruß
Michael
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 5.Oktober.2011, 09:14. WWW: hammoniaweb.com
Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Wo hast Du das eingefügt?
Richte einfach eine Neue! Seite in dem entsprechenden Verzeichnis ein und nenne Sie z.B. testmod1
dann nur dieses Script dort einfügen und abschicken.
Dann die Seite aufrufen.
Der Datenbankname ist doch wohl richtig mit Arkansas ????
Das Script funktioniert schon, habe ich schon selbst im Einsatz gehabt....;)
Gruesse
Claus
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 5.Oktober.2011, 10:39.
Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Hallo Claus,
ich habe alles so gemacht wie Du es geschrieben hast - allerdings wird das Feld nicht verändert.
Ich habe eine neue Seite angelegt (Name: Script).
Dort habe ich unter dem Punkt "Aussehen bearbeiten" den Code eingefügt.
Zunächst nur den Code - Resultat keine Veränderungen.
Danach den Code nach dem kompletten Statement do action=all den Code eingefügt - Resultat keine Veränderungen.
Danach habe ich es auch versucht unter Verwaltung im Bereich Beginn-Block / Ende-Block - - Resultat keine Veränderungen.
Ich habe danach auch die Datenbank reorganisiert - auch keine Veränderung.
Um Deine Frage zu beantworten - ja, der Datenbankname ist Arkansas.
Gruß
Michael
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 5.Oktober.2011, 10:56. WWW: hammoniaweb.com
Re: Re: Re: Re: Re: Re: Re: Änderung eines Feldes in allen Datensätzen
Antworten