![]() |
Datenbank: MMSQL • Version: 2014 SP2 • Zugriff über: DevArt MyDAC
TBlobField.DefaultExpression (MSSQL varbinary)
Hi,
in einer MS SQL-DB habe ich ein Feld vom Typ 'varbinary(max)'. Für ein korrespondierendes TBlobField möchte ich nun gerne einen Default-Wert über die Eigenschaft TBlobField.DefaultExpression setzen ... z.B. den Text 'Hello World' für das TBlobField 'MyBlobField'. ... ich schnall' aber nicht wie :oops: Getippt hätte ich jetzt auf eine Zeile wie:
Delphi-Quellcode:
MyBlobField.DefaultExpression := '0x48656C6C6F20576F726C64';
Allerdings bekomme ich dann den Fehler "Filterausdruck fehlerhaft abgeschlossen" ... daraus werde ich aber nicht wirklich schlau.
Delphi-Quellcode:
MyBlobField.DefaultExpression := '''0x48656C6C6F20576F726C64''';
liefert übrigens: "Fehlende Typübereinstimmung im Ausdruck" ... was ich mir wiederum erklären könnte. Mag mir jemand bitte sagen, wo mein Denkfehler liegt? Danke und Gruß |
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Versuch mal so etwas: ...CONVERT(VARBINARY(25), '0x9473FBCCBC01AF', 1);
Ich hab es nicht getestet. |
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Bekommst Du denn 'Hello World' in die Datenbank oder gibt das auch 'nen Fehler?
Könnte mir vorstellen, dass irgendwo das 0xIrgendwas als Hexwert interpretiert wird. Oder statt
Delphi-Quellcode:
mal
MyBlobField.DefaultExpression := '''0x48656C6C6F20576F726C64''';
Delphi-Quellcode:
probieren.
MyBlobField.DefaultExpression := QuotedStr('0x48656C6C6F20576F726C64');
|
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Moin,
danke für die Vorschläge ... ich hab' jetzt folgende Varianten mal durchgespielt:
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := '0x48656C6C6F20576F726C64';
Delphi-Quellcode:
[Fehlende Typübereinstimmung]
MyBlobField.DefaultExpression := QuotedStr('0x48656C6C6F20576F726C64');
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := 'CONVERT(VARBINARY(25), ''0x9473FBCCBC01AF'', 1)';
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''0x48656C6C6F20576F726C64'', 1)';
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ' + QuotedStr('0x48656C6C6F20576F726C64') + ', 1)';
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''Hello World'')';
Delphi-Quellcode:
[Fehlerhaft abgeschlossen]
MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''''Hello World'''')';
Die SQL-Statements
Code:
liefern übrigens (in der Konsole) das erwartete Ergebnis.
SELECT CONVERT(VARBINARY(25), '0x9473FBCCBC01AF', 1);
SELECT CONVERT(VARBINARY, '0x48656C6C6F20576F726C64', 1); SELECT CONVERT(VARBINARY, 'Hello World'); Ich befürchte allerdings auch, dass in der DefaultExpression eh nur kontante Wertangaben verwendet werden dürfen!? Zumindest meine ich dies aus der Doku so rauszulesen ([...] can be any valid SQL value expression [...])!? Hat jemand noch eine Idee? |
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Du könntest auch den Default-Wert schon in der Datenbanktabelle setzen, wenn dieser erst nach dem Speichern des neuen Datensatzes benötigt wird.
Andernfalls gibt es in FireDAC bestimmt auch so eine Ereignisbehandlung für Statusänderungen des Datasets. Da könntest du den Wert direkt dem Blobfield zuweisen, wenn ein neuer Datensatz angelegt wird. |
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Schon mal in betracht gezogen das es für ein binärfeld nicht die möglichkeit gibt diesen mit einem Defaultwert zu belegen?
|
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Zitat:
Delphi-Quellcode:
.
'''abc'''
Ob
Delphi-Quellcode:
auch geht ... k.A., aber da es "Expression" heißt, könnte es gehn,
'CONVERT(VARCHAR, ''abc'')'
allerdings, heißt es überall "Fehlerhaft abgeschlossen", außer da, wo es ein String ist. Heißt dann wohl, dass du nur Integer oder Strings reingeben kannst und zu Binär der String nicht konvertiert werden kann. ![]() |
AW: TBlobField.DefaultExpression (MSSQL varbinary)
Moin,
erstmal Danke für die Antworten! Ich glaub', ich werde mich einfach damit abfinden, dass es nicht geht was ich da vorhabe (zumindest nicht auf diesem Weg). Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz