Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 09:01.
Brett vorm Kopf...
Hallo Zusammen,
irgendwie habe ich heute ein Brett vorm Kopf...
Eigentlich ist es gar nicht so schwer, aber irgendwie klappt es nicht.
Ich will aus zwei db die höhere Nummer holen, diese um eins erhöhen und sie in die zweite db wieder eintragen. Ich habe mir das so vorgestellt:
get "Nr1==#", "db1"; ## letzte Nummer aus DB1 holen
$Nr1++; ## diese Nummer um eins erhöhen
get "Nr2==#", "db2"; ## letzte Nummer aus DB2 holen
$Nr2++; ## diese Nummer um eins erhöhen
if ($Nr1 > $Nr2)
{
$Nummer=$Nr1;
}else
{
$Nummer=$Nr2;
}
put ["Nr2",$Nummer],"db2";
Aber irgendwie klappt es nicht. Wo liegt hier der Fehler?
Grüße
Oliver ;-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Montag, 1.Dezember.2003, 09:13.
Re: Brett vorm Kopf...
Ergebnishash verwenden, dann sollte es eigentlich gehen....
also so:
get "Bedingung=Wert", "Datenbank1", "Ergebnishash1";
get "Bedingung=Wert", "Datenbank2", "Ergebnishash2";
hth
Ruben
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 09:47.
Re: Brett vorm Kopf...
Hallo Ruben,
kannst du mir das noch mal genauer auf meinen Fall bezogen darstellen?
Grüße
Oliver ;-)
Antworten
Beitrag von Oliver ;-) (82 Beiträge) am Montag, 1.Dezember.2003, 12:09.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo,
also ich habe es nochmal getestet. Es funktioniert grundsätzlich auch so. Allerdings scheint der Befehl
nicht immer die letzte Nummer aus der DB zu holen. Erst wenn ich den Datensatz mit der höchsten Nummer nochmal "anfasse" und abspeichere, wird diese gezogen!?!
Ist das ein Bug in bp?
Grüße
Oliver ;-)
Antworten
Beitrag von horstees (229 Beiträge) am Montag, 1.Dezember.2003, 14:26.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo Oliver,
wenn Du tatsächlich die letzte, und nicht die höchste Nr holen willst, dann schreib mal:
usw...
horstees
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 14:29.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo horstees,
es soll die höchste Nummer sein.
Grüße
Oliver ;-)
Antworten
Beitrag von horstees (229 Beiträge) am Montag, 1.Dezember.2003, 14:57.
Re: Brett vorm Kopf... -> Bug bei bp?
Es könnte noch mit der Art der Sortierung zusammenhängen,
also ob Du das Feld 'Nr1' als 'text' oder als 'Zahl' angelegt hast.
Oder, wenn es vom Typ 'text' ist,
ob Du als Sortierung 'Text' oder 'Zahl' angegeben hast.
horstees
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 15:20.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo horstees,
die Sortierung habe ich mal von Zahl auf Text geändert. Das Ergebnis hat sich nicht geändert...
Oliver ;-)
Antworten
Beitrag von horstees (229 Beiträge) am Montag, 1.Dezember.2003, 16:07.
Re: Brett vorm Kopf... -> Bug bei bp?
Müßte doch eigentlich aber:
Feldtyp 'text' : Sortierung Text: 111 vor 23 ( 23 > 111 )
Feldtyp 'text' : Sortierung Zahl: 23 vor 111 ( 111 > 23 )
Feldtyp 'Zahl' : Sortierung checked: 23 vor 111 ( 111 > 23 )
Bei mir in einer kleinen Testdatenbank funktioniert das genau so.
Mit
hole ich die höchste nr aller Datensätze,
genauer gesagt,
ich hole den Datensatz, dessen Inhalt im Feld 'nr'
nach meinen Sortierungsvorgaben der Größte ist.
---
Gibt es evtl. bei dir Datensätze, in denen das Feld 'nr' nicht gefüllt ist,
und Du willst wissen, welche Id derjenige Datensatz hat, bei dem das Feld 'nr' zum letzten Mal gefüllt wurde? Also den neuesten Eintrag?
horstees
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 16:37.
Re: Brett vorm Kopf... -> Bug bei bp?
Antworten
Beitrag von horstees (229 Beiträge) am Montag, 1.Dezember.2003, 17:04.
Re: Brett vorm Kopf... -> Bug bei bp?
Tja, sortieren macht den Jungs wohl immer viel Arbeit ;-)
Wenn ich alles richtig verstanden habe, steht in 'db2' die bislang höchste Nr.
Kannst du das Problem evtl. so umgehen:
get "Nr2==#", "db2"; ## höchste Nummer aus DB2 holen
get "Nr1>=$Nr2","db1";
## erstmal nur die 'Nr1'en holen, die größer sind als die bislang höchste Nr überhaupt
???
horstees
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 1.Dezember.2003, 18:17.
Re: Brett vorm Kopf... -> Bug bei bp?
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Montag, 1.Dezember.2003, 20:35.
Re: Brett vorm Kopf... -> Bug bei bp?
per Mail an dich unterwegs...
Oliver ;-)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 1.Dezember.2003, 23:40.
Re: Brett vorm Kopf... -> Bug bei bp?
Hab mir die DB angeschaut, bei der höchsten Zahl steht drin:
\n2454
daran wirds liegen. Wie das \n da reingekommen ist, weiss ich nicht, entweder hast Du das irgendwie mit reingeschrieben oder es ist durch einen Import reingekommen...
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 2.Dezember.2003, 08:18.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo Christoph,
hmm... kann ich mir jetzt auch nicht erklären. Wie per Mail schon gesagt läuft hier die Anmeldung in zwei Stufen ab.
1. Nummer generieren und in db2 eintragen
2. Nummer aus db2 holen, in db1 eintragen und in db2 löschen
Demnach müsste ja zwischen Nummer aus db2 holen und in db1 eintragen das "\n" hinzugefügt werden. In dem Template, welches ich für den Weg von db2 zu db1 nutze ist aber kein "\n" enthalten?!
Merkwürdig... "grübel"
Oliver ;-)
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 2.Dezember.2003, 08:40.
Re: Brett vorm Kopf... -> Bug bei bp?
Hallo Christoph,
wie das \n da rein kommt weiß ich immer noch nicht. Aber ich habe mal das Eintragen in die db1 von "put undef,"db1";" in "put ["...",...,..],"db1";" geändert.
Jetzt funktioniert es...
Grüße
Oliver ;-)
Antworten