Beitrag von Oliver ;-) (439 Beiträge) am Montag, 3.Dezember.2001, 10:47.
nachträglich eine lfd. Nummer vergeben
Hallo,
ich möchte in einer DB nachträglich den Datensätzen nachträglich eine lfd. Nummer vergeben bzw. die vorhandenen Nummern durch neue ersetzen.
Ich habe es so versucht, aber es funktioniert nicht:
$Nr="0";
get "Id==*", "../register";
while (get_next("../register"))
{
$Nr++;
mod "Id==$_id", ["Nr",$Nr], "../register";
}
Grüße
Oliver ;-)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 3.Dezember.2001, 11:37.
Re: nachträglich eine lfd. Nummer vergeben
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 11:38.
Re: nachträglich eine lfd. Nummer vergeben
Du überschreibst dir die nummer immer mit dem holen
$Nrneu="0";
get "Id==*", "../register";
while (get_next("../register"))
{
mod "Id==$_id", ["Nr",$Nrneu++], "../register";
}
Sander
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Montag, 3.Dezember.2001, 17:25. WWW: www.shareware4u.de
Re: nachträglich eine lfd. Nummer vergeben
Müsste es nicht ++$Nrneu heißen?
Gruß, Olaf
Antworten
Beitrag von fb (420 Beiträge) am Montag, 3.Dezember.2001, 17:30.
Re: nachträglich eine lfd. Nummer vergeben
nein
ein doppeltes plus addiert 1 zu dem wert der vorangestellten variable.
$Nr ist jetzt 2
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 19:22.
Re: nachträglich eine lfd. Nummer vergeben
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 3.Dezember.2001, 18:04.
Re: nachträglich eine lfd. Nummer vergeben
Hallo Sander,
ich hab's mal ausprobiert. Wenn ich die Aktion starte wird offensichtlich nur die Nr des ersten Datensatzes hochgezählt.
Nach einem Abruch meinerseits hatte der erste Ds die Nr. 259 - die anderen waren unverändert.
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 19:23.
Re: nachträglich eine lfd. Nummer vergeben
ist das auch bei netdirekt?
Sander
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 19:24.
Re: nachträglich eine lfd. Nummer vergeben
achso, wenn ja, dann probier mal mit range beim get und teil das umschreiben auf.
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 3.Dezember.2001, 19:36.
Re: nachträglich eine lfd. Nummer vergeben
hmmm...
kannst du mir das mal genauer erklären?
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 19:56.
Re: nachträglich eine lfd. Nummer vergeben
also du änderst das etappenweise. Ist doch nur ne einmalige umschreibung, oder?
$Nrneu="0";
get "Id==* range=0,50", "../register";
while (get_next("../register"))
{
mod "Id==$_id", ["Nr",$Nrneu++], "../register";
}
wenn es durchgelaufen ist nimmst du range=50,50 usw
ich hab meine db auch mit 50er range geändert, 100 waren schon zuviel.
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 3.Dezember.2001, 20:18.
Re: nachträglich eine lfd. Nummer vergeben
Ich hab's so eingebaut. Das Ergebnis sieht so aus:
----------------------------------------
[ Fehler: Die vorige Aktion ist mitten in der Bearbeitung der Datenbank register abgebrochen worden, wahrscheinlich da diese zu lange dauerte oder zuviel Speicher beanspruchte. Die ursprüngliche Version der Datenbank ist wiederhergestellt worden.
Bitte prüfen Sie unbedingt, was die Ursache für den Abbruch war!
Möglichkeiten:
Die Datenbank ist für die Aktion (z.B. Felder ändern/löschen) zu gross.
Sie verwenden zu grosse Schleifen (u.U. Endlosschleife?) in Ihrem Code.
Sie benötigen sehr viel Speicher, z.B. indem Sie grosse Datenbank komplett laden, statt nur die gewünschten Einträge auszuwählen.
-------------------------------------------------
Außerdem hat der erste Eintrag nun die Nummer 323
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 3.Dezember.2001, 21:09.
Re: nachträglich eine lfd. Nummer vergeben
also muß der range noch weiter runter..
Sander
Antworten
Beitrag von Oliver ;-) (49 Beiträge) am Dienstag, 4.Dezember.2001, 09:20.
Re: nachträglich eine lfd. Nummer vergeben
Moin, moin,
ich habe range jetzt auf "0,5" gesetzt.
Es rödelt immer noch! Und wenn ich es abbreche, ist nur der erste Datensatz verändert...
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 4.Dezember.2001, 10:23.
Re: nachträglich eine lfd. Nummer vergeben
ach ja, da fällt mir ein, das bei einer änderung in der selben db im get_next unbedingt mit dem Ergebniss gearbeitet werden muß - warum weiß ich nicht. Ich bin auch schon an diesem Problem verzweifelt.
$Nrneu="0";
get "Id==*", "../register","holen";
while (get_next("holen"))
{
mod "Id==$_id", ["Nr",$Nrneu++], "../register";
}
nun sollte es klappern, kannst es ja erst mal wieder ohne Range probieren.
Sander
Antworten
Beitrag von Oliver ;-) (49 Beiträge) am Dienstag, 4.Dezember.2001, 11:07.
Re: nachträglich eine lfd. Nummer vergeben
Ohne range gab's einen Abbruch...
Mit range bei 250 auch...
Mit 200 hat's jetzt geklappt. Allerdings dauert das etwa 15 bis 20 Sekunden.
Danke erstmal.
Oliver ;-)
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 3.Dezember.2001, 19:35.
Re: nachträglich eine lfd. Nummer vergeben
Ja, bin am Donnerstag mit meiner Domain dorthin gezogen ...
Toller telefonischer Support...
Aber ich habe den Eindruck, dass die Scripte dort viel langsamer laufen als im kostenlosen Bereich...
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 3.Dezember.2001, 20:33.
Re: nachträglich eine lfd. Nummer vergeben
Antworten