Hallo,
drei Anfängerfragen dazu, per UPDATE einen Wert in ein Feld zu schreiben:
1) Wie schreibe ich die aktuelle Zeit da rein? Kein kompletter Timestamp.
2) Wie schreibe ich das aktuelle Datum da rein? Kein kompletter Timestamp.
3) Wie baue ich eine Variable in die SQL-Anweisung rein? Will sagen: Ich habe vorher im Xbase++-Code irgend welche Werte zsuammen gestellt und in eine LOCAL geschrieben, und will den Wert jetzt in das SQL-Feld schreiben
Wobei das natürlich auch als WHERE oder FOR in der SELECT-Anweinsung interssant wäre, aber da funktioniert das dann vermutlich ähnlich bis glich.
Jan
Feld mit Wert füllen
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Feld mit Wert füllen
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Feld mit Wert füllen
Hallo, Jan -
das ist recht spezifisch für den jeweiligen Server, was die beiden ersten Fragen angeht.
Wenn Du mit PostGre arbeitest, könnte das: https://www.tutorialspoint.com/postgres ... ntdatetime helfen, d.h. CURRENT_TIME und CURRENT_DATE.
Bezüglich Frage 3:
Ausführen. Bei MySQl verwende ich eine Methode der MySQL-Klasse von Hector, die das übernimmt, da werden z.B. auch Anführungszeichen etc. gesetzt:
das ist recht spezifisch für den jeweiligen Server, was die beiden ersten Fragen angeht.
Wenn Du mit PostGre arbeitest, könnte das: https://www.tutorialspoint.com/postgres ... ntdatetime helfen, d.h. CURRENT_TIME und CURRENT_DATE.
Bezüglich Frage 3:
Code: Alles auswählen
cSelect := "UPDATE table SET kundennummer = " + XToC(nKundNum) + " WHERE datum = " + XToC(dDatum)
Code: Alles auswählen
INLINE METHOD XToSQL(xValue)
Local cType, cOut
cType := ValType(xValue)
DO CASE
CASE cType = "C" .OR. cType = "M"
cOut := "'" + Trim(self:RealEscapeString(xValue)) + "'"
CASE cType = "N"
cOut := Str(xValue)
CASE cType = "D"
cOut := "'" + Str(Year(xValue), 4) + "-" + Str(Month(xValue), 2) + "-" + Str(Day(xValue), 2) + "'"
cOut := StrTran(cout, " ", "0")
CASE cType = "L"
cOut := IIF(xValue, "1", "0")
OTHERWISE
ENDCASE
RETURN (cOut)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Feld mit Wert füllen
Hallo Georg,
ja, hier geht es um PostgreSQL. Und Danke für die Hinweise. Ein wenig rumprobieren mit den diversen Konstanten, und schon klappt das.
Jan
ja, hier geht es um PostgreSQL. Und Danke für die Hinweise. Ein wenig rumprobieren mit den diversen Konstanten, und schon klappt das.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Feld mit Wert füllen
Code: Alles auswählen
update table set datum = current_date, zeit = cuurrent_time, timestamp = current_timestamp where ...
https://www.postgresql.org/docs/current ... etime.html
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Feld mit Wert füllen
wenn ich längere oder umfangreichere SQL erstellen muss, find ich das sehr hilfreich:
Das ist jedenfalls sehr lesbar
Code: Alles auswählen
TEXT INTO SQL TRIMMED
select ..
from table
where kdnr = :KDNR and ort = ':ORT'
ENDTEXT
cSql := strtran( cSql, ":KDNR", str(4711)) // numerisch einfügen
cSql := strtran(cSql, ":ORT", "Regensburg )
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.