Benutzer mit den meisten Antworten
REPLACE ... wie richtig?

Frage
-
Hallo NG,
um ein Datenfeld in einer Tabelle zu beschreiben habe ich zwei Varianten ausprobiert:
1. Variante: REPLACE datum.tabelle WITH This.Value
2. Variante: REPLACE datum WITH This.Value IN tabelle
oder wie ist es mit der 3. Variante? ... REPLACE datum.tabelle WITH This.Value IN tabelle, wenn man sich in einem anderen Arbeiutsbereich befindet?
Die erste Variante funktioniert nur manchmal. Falls ich mich aktuell in einem anderen Arbeitsbereich befinde wird "gefühlt" manchmal nichts in das Feld geschrieben. Es gibt aber keine Fehlermeldung, dass irgendwas nicht gefunden wurde, oder so.
Ist eigentlich "offiziell" nur die 2. Variante erlaubt?
PS: entschuldigt, wenn das eine blöde Frage ist, aber auch ich will und kann (hoffentlich) noch etwas dazu lernen ;-)
Schönen Tag noch allen hier
Jürgen
<--------(nur Fliegen sind schöner!)-------->
- Bearbeitet Flugkapitän-Jürgen (a. D.) Montag, 12. März 2012 15:20
Montag, 12. März 2012 15:19
Antworten
-
Hallo Jürgen,
Du meinst sicherlich für Variante 1:
REPLACE tabelle.datum WITH This.Value
Obwohl das nicht im Help-File steht, funktioniert das aus einem anderen Arbeitsbereich als der von "tabelle".
Was spricht aber dagegen, die Variante 2 zu nehmen? Ich hab mir inzwischen angewöhnt, bei allen Komandos, bei der ich die IN-Klausel verwenden kann, das auch zu tun, selbst wenn ich in dem selben Arbeitsbereich bin. Bei allen anderen (z.B. LOCATE) sehe ich zu, möglichst klar im Quellcode ersichtlich zu haben, welcher Arbeitsbereich gewählt ist. Das erspart mir ärgerliche Fehler, wenn ich mal auf die Schnelle in umfangreichen Programmen Änderungen mache.
Gruß,
Winfried
- Als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:37
- Als Antwort markiert Flugkapitän-Jürgen (a. D.) Dienstag, 13. März 2012 16:19
Montag, 12. März 2012 21:55 -
Hallo Jürgen,
zum Replace hat WiWo ja schon genügend gesagt.
Aber :
>Falls ich mich aktuell in einem anderen Arbeitsbereich befinde wird "gefühlt" manchmal nichts in das Feld geschrieben.
Wieso gefühlt? machst Du keinen Debug? "set step on" kennst Du ? Einfach mal vor die entsprechende Codezeile
schreiben und die Variablen usw anschauen zu dem Programmzeitpunkt. Kannst dann auch ins Befehlsfenster gehen
und browse eingeben.(Soll jetzt aber kein Zweifel an Deinen Gefühlen sein ;-))
Und btw, kann mir mal jemand sagen , wo ich denn einstellen kann das ich keine Lücke beim Zeilenabstand
habe (wie ihr hier seht). Ist ja schlimmer als bei Word.
Grüße aus dem WBL
Horst
- Als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:35
- Nicht als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:35
- Als Antwort markiert Flugkapitän-Jürgen (a. D.) Dienstag, 13. März 2012 16:20
Dienstag, 13. März 2012 06:18
Alle Antworten
-
Hallo Jürgen,
Du meinst sicherlich für Variante 1:
REPLACE tabelle.datum WITH This.Value
Obwohl das nicht im Help-File steht, funktioniert das aus einem anderen Arbeitsbereich als der von "tabelle".
Was spricht aber dagegen, die Variante 2 zu nehmen? Ich hab mir inzwischen angewöhnt, bei allen Komandos, bei der ich die IN-Klausel verwenden kann, das auch zu tun, selbst wenn ich in dem selben Arbeitsbereich bin. Bei allen anderen (z.B. LOCATE) sehe ich zu, möglichst klar im Quellcode ersichtlich zu haben, welcher Arbeitsbereich gewählt ist. Das erspart mir ärgerliche Fehler, wenn ich mal auf die Schnelle in umfangreichen Programmen Änderungen mache.
Gruß,
Winfried
- Als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:37
- Als Antwort markiert Flugkapitän-Jürgen (a. D.) Dienstag, 13. März 2012 16:19
Montag, 12. März 2012 21:55 -
Hallo Jürgen,
zum Replace hat WiWo ja schon genügend gesagt.
Aber :
>Falls ich mich aktuell in einem anderen Arbeitsbereich befinde wird "gefühlt" manchmal nichts in das Feld geschrieben.
Wieso gefühlt? machst Du keinen Debug? "set step on" kennst Du ? Einfach mal vor die entsprechende Codezeile
schreiben und die Variablen usw anschauen zu dem Programmzeitpunkt. Kannst dann auch ins Befehlsfenster gehen
und browse eingeben.(Soll jetzt aber kein Zweifel an Deinen Gefühlen sein ;-))
Und btw, kann mir mal jemand sagen , wo ich denn einstellen kann das ich keine Lücke beim Zeilenabstand
habe (wie ihr hier seht). Ist ja schlimmer als bei Word.
Grüße aus dem WBL
Horst
- Als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:35
- Nicht als Antwort vorgeschlagen Olaf Doschke Dienstag, 13. März 2012 12:35
- Als Antwort markiert Flugkapitän-Jürgen (a. D.) Dienstag, 13. März 2012 16:20
Dienstag, 13. März 2012 06:18 -
Und btw, kann mir mal jemand sagen , wo ich denn einstellen kann das ich keine Lücke beim Zeilenabstand
habe (wie ihr hier seht). Ist ja schlimmer als bei Word.
Einfach Fließtext schreiben, nicht lauter Absätze. Oder per SHIFT+RETURN in die nächste Zeile ohne Zeilenabstand. ...Wegen "Als Antwort vorgeschlagen und wieder zurückgenommen": Sorry, ich wollte nur zitieren. Das Debuggen sollte auch helfen, aber WiWo hat auch schon alles nötige zum REPLACE genannt.
Man darf auch UPDATE Table Set field = value WHERE Table.ID = eineID nehmen, da bleiben gar keine Fragen offen, nur muß man eben die ID des Datensatzes haben, aber die kann man ja auslesen in eine Variable.
Wichtig bei replace is, es arbeitet nicht, wenn im aktuellen Alias oder im per IN angegegbenen der Datensatzzeiger bei EOF() ist.
Tschüß, Olaf.
Dienstag, 13. März 2012 12:49 -
Hallo zusammen,
bin gerade erst von der CeBit zurück. Habe noch ein paar Tage drangehängt, mit dem WoMo. Sonst lohnt die weite Reise nicht, wenn überhaupt.
Zunächst zu WiWo. Ja sicher meinte ich bei der ersten Variante "tabelle.datum". Hab mich da nur verschrieben.
Und mit dem "gefühlten" Beschreiben des Datensatzes meinte ich, dass ich dachte, es geht mal und geht mal nicht, unter denselben Bedingungen. Gemerkt habe ich es erst, nachdem ich die Tabelle ganz gelöscht hatte und dann mit "APPEND BLANK IN tabelle" den ersten Satz angelegt hatte und diesen dann mit der Variante 1 füllen wollte. Es kam keine Fehlermeldung und der Satz war leer. Mit dem 2. und dem 3. Satz war es ebenso. Offensichtlich hatte ich dann (unabsichtlich durch das Aufrufen einer anderen Registerkartenseite) den ASrbeitsbereich gewechselt. Dann ging es plötzlich.
Ich werde also künftig Variante 2 benützen. Und den Vorschlag, IMMER das "IN" anzugeben, egal in welchem Bereich man sich befindet, finde ich super. Ich muss es mir nur noch angewöhnen ;-)
Danke für die Hilfen und die "Lehrstunde".
Jürgen
<--------(nur Fliegen sind schöner!)-------->
Dienstag, 13. März 2012 16:19 -
Hallo Jürgen,
ich will nicht aufdringlich sein und wahrscheinlich weißt Du das , aber ich fang nochmal mit dem Debug an: Du kannst im Überwachungsfenster nicht nur die Variablen beobachten (oder eigene eingeben) sondern auch Funktionen verwenden. Wenn ich so ein Problem hab wie Deins schreib ich standardmässig "alias()" ins Überwachungsfenster und schon weißt Du bei jeder Codezeile in welchem Bereich des Dschungels Du Dich gerade befindest. Da kann man dann schon mal woanders sein als wo man sich wähnt. Wie im Leben halt.
Gruss aus dem WBL
HorstMittwoch, 14. März 2012 07:49 -
Kann ich nachvollziehen, ich kann Dir nicht einmal mehr sagen, woher ich das weiß. Analog dazu: Im VFP Befehlsfenster kannst Du mit CTRL+RETURN eine Befehlszeile mehrzeilig fortsetzen, ohne sie schon auszuführen, im Zusammenhang mit ; als Fortsetzungszeichen natürlich.
Man kann so auch mehrere Befehle eintippen, sogar ganze Programme so schreiben, anschließend markieren und per Kontextmenü die Markierung ausführen, allerdings ist alles getippte beim ersten RETURN ohne CTRL im Nirvana, nur der letzte Befehl kommt dann in die Historie eingetippter Befehle _command.prg.
Unnütze Features kommen halt auch alle Nase lang vor. (Im Fall des Forums ist das der Absatz, der durch ein Return entsteht.)
Tschüß, Olaf.
- Bearbeitet Olaf Doschke Mittwoch, 14. März 2012 08:08
Mittwoch, 14. März 2012 08:05 -
Hallo Jürgen,
ich will nicht aufdringlich sein und wahrscheinlich weißt Du das , aber ich fang nochmal mit dem Debug an: Du kannst im Überwachungsfenster nicht nur die Variablen beobachten (oder eigene eingeben) sondern auch Funktionen verwenden. Wenn ich so ein Problem hab wie Deins schreib ich standardmässig "alias()" ins Überwachungsfenster und schon weißt Du bei jeder Codezeile in welchem Bereich des Dschungels Du Dich gerade befindest. Da kann man dann schon mal woanders sein als wo man sich wähnt. Wie im Leben halt.
Gruss aus dem WBL
HorstDanke Horst, gute Idee das mit dem alias(). Das muss ich mir merken! Ich verwende den Debugger schon. Ich hätte ihn für diesesn Fall auch diesmal "bemüht", aber da keine Fehlermeldung kam ... Na ja, jetzt funktioniert es. Und das ist die Hauptsache.
Gruß Jürgen
<--------(nur Fliegen sind schöner!)-------->
Mittwoch, 14. März 2012 08:40 -
>>Kann ich nachvollziehen, ich kann Dir nicht einmal mehr sagen, woher ich das weiß.
Aus Word möglicherweise.Ich bin nämlich sofort ins Word gegangen weil mich dort diese Standardeinstellung mit dem gleichen Problem ärgert und ich immer erst die andere Einstellung wähle. Und siehe da , dort funktionierts genauso.
>>Man kann so auch mehrere Befehle eintippen, sogar ganze Programme so schreiben, anschließend markieren und per Kontextmenü >>die Markierung ausführen
Du wirst lachen , das wusste ich sogar und verwende es auch. Gerade neulich hatte ich eine kleine Testerei und sich dann die Wiederholungseingaben zu sparen ist schon nett.
>>Unnütze Features kommen halt auch alle Nase lang vor. (Im Fall des Forums ist das der Absatz, der durch ein Return entsteht.)
Gut zu wisen das man nicht nur selber sowas produziert :-)))
Aber wichtig sind nicht die Probleme - nur die Lösungen
in diesem Sinne
HorstMittwoch, 14. März 2012 08:42