Beitrag von Thomas H. (180 Beiträge) am Montag, 4.April.2005, 21:22.
Datensatz kopieren
Antworten
Beitrag von Thomas H. (180 Beiträge) am Montag, 4.April.2005, 21:30.
Nachtrag
Ich habe jetzt noch einen Fehler entdeckt.
Die Übergabe der ID scheint auch nicht zu funktionieren. Das Kopieren an sich funktioniert nur dann, wenn ich z.B. zum Test
etc.
eingebe. Gebe ich aber
ein, funktioniert auch die "Kopierung" nicht.
Antworten
Beitrag von Thomas H. (180 Beiträge) am Montag, 4.April.2005, 21:44.
Nachtrag 2
Kommando zurück. :-)
Das mit der Übergabe der ID funktioniert.
Ich hatte einen Denkfehler.
Aber das Problem mit den 2 gleichen ID Nummern ist immer noch.
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 5.April.2005, 08:35.
Re: Nachtrag 2
Außer Id alle anderen Werte aus der Id vom %_loop ins %_put übernehmen.
Antworten
Beitrag von Thomas H. (180 Beiträge) am Dienstag, 5.April.2005, 08:46.
Re: Nachtrag 2
Hallo Ruben,
irgendwie stehe ich noch auf dem Schlauch.
Wie schließe ich die Übernahme der ID aus?
Thomas
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 5.April.2005, 09:45.
Re: Nachtrag 2
mhm - günstiger in diesem Falle wäre das gesamte Key/WertPaar aus dem %_get löschen, einfach so:
delete $_put{Id}
Antworten
Beitrag von Thomas H. (180 Beiträge) am Dienstag, 5.April.2005, 10:07.
Re: Nachtrag 2
Antworten
Beitrag von hermpelr (4 Beiträge) am Dienstag, 5.April.2005, 10:18.
Re: Nachtrag 2
Semikolon zum Abschluss der Befehlszeile!
Antworten
Beitrag von mike (12 Beiträge) am Dienstag, 5.April.2005, 10:20.
Re: Nachtrag 2
Die ID um 1 erhöhen wäre warscheinlich keine gute Idee,
selbst wenn es es geht.
Das würde dann nur funktionieren, wenn Du den letzten Datensatz kopierst, aber was ist, wenn es eine andere ID ist? Dann überscheibst Du möglicherweise eine Andere.
Das Problem mit dem Kopieren habe ich auch. Habe aber auch noch keine Lösung dafür gefunden.
Antworten
Beitrag von Thomas H. (180 Beiträge) am Dienstag, 5.April.2005, 10:28.
Es funktioniert :-) Das Semikolon war´s mal wieder
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 5.April.2005, 10:33.
Re: Nachtrag 2
Mit dem Erhöhen der ID ist auch kein Problem, du musst nur vorher die letzte vergebene holen und dann halt die nächsthöhere vergeben.
Das ist aber Doppelt gemoppelt, weil genau das baseportal intern beim Speichern (also Ausführung von put) macht.
(BasePortal nutzt ja leider keine eineindeutigen Id's sondern nur eindeutige, das heisst, dass freigewordene Id's u.U. wieder neu vergeben werden, wenn die freigegebenen zufälligerweise die letzte[größte] war...).
Deshalb also vom zu kopierenden Datensatz(hash) einfach die Id entfernen, das ist das gleiche als wenn man in nem Formular nen neuen Datensatz eingibt. Feldvariablen haben Inhalte, durch das feldname:= wandern sie in den put-Hash, dieser wird aktiviert durch den Wert 1 des Elements _amount und führt dann das Speichern mit Vergabe der neuen ID aus. Wenn ne ID vorhanden ist, dann wird die einfach mit abgespeichert und es kommt zu Problemen.
Es ist also "nur" darauf zu achten, dass KEINE Id mit beim Speichern im Put-Hash vorhanden ist. Probleme wird es natürlich bei dieser einfachen Version mit Dateifeldern geben, wie die Dateinamen da behandelt werden, weiss ich nicht, da mmüsste sich Christoph mal dazu äussern.
Aber ansonsten ist das schon o.k. so - was soll da nicht funktionieren?
Antworten
Beitrag von Thomas H. (180 Beiträge) am Dienstag, 5.April.2005, 10:55.
Re: Nachtrag 2
Stimmt, wenn ich die letzte Datensatz ID hole, dann kann ja nichts überschrieben werden.
Ich habe das Script mal ins Glossar gestellt. Zum Wiederfinden.
Ich glaube das Problem kommt öfters vor.
Thomas
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.April.2005, 14:10.
Re: Nachtrag 2
Hallo,
das mit der Kopierfunktion ist ne tolle Sache.
Gibt es auch die Möglichkeit, einen Eintrag zu kopieren, aber bestimmte
Felder leer zu lassen, bzw. deren Inhalte nicht zu kopieren?
<perl>
get "Id==$Id", "datenbank";
while (get_next("datenbank"))
{
%_put=%_loop;
$_put{_amount}=1;
delete $_put{Id};
put undef, "datenbank";
}
</perl>
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 7.April.2005, 14:15.
Re: Nachtrag 2
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.April.2005, 15:46.
Re: Nachtrag 2
Antworten
Beitrag von richard (1187 Beiträge) am Dienstag, 5.April.2005, 09:55.
Re: Datensatz kopieren
Und 2 Dezimalstellen sind auch dabei.
Antworten