AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TBlobField.DefaultExpression (MSSQL varbinary)
Thema durchsuchen
Ansicht
Themen-Optionen

TBlobField.DefaultExpression (MSSQL varbinary)

Ein Thema von PeterPetersen · begonnen am 18. Jan 2017 · letzter Beitrag vom 23. Jan 2017
Antwort Antwort
PeterPetersen

Registriert seit: 15. Sep 2010
8 Beiträge
 
#1

TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 18. Jan 2017, 14:56
Datenbank: MMSQL • Version: 2014 SP2 • Zugriff über: DevArt MyDAC
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

Getippt hätte ich jetzt auf eine Zeile wie:

MyBlobField.DefaultExpression := '0x48656C6C6F20576F726C64';

Allerdings bekomme ich dann den Fehler "Filterausdruck fehlerhaft abgeschlossen" ... daraus werde ich aber nicht wirklich schlau.

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ß
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#2

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 18. Jan 2017, 15:39
Versuch mal so etwas: ...CONVERT(VARBINARY(25), '0x9473FBCCBC01AF', 1);
Ich hab es nicht getestet.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 18. Jan 2017, 15:43
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 MyBlobField.DefaultExpression := '''0x48656C6C6F20576F726C64'''; mal MyBlobField.DefaultExpression := QuotedStr('0x48656C6C6F20576F726C64'); probieren.
  Mit Zitat antworten Zitat
PeterPetersen

Registriert seit: 15. Sep 2010
8 Beiträge
 
#4

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 19. Jan 2017, 09:46
Moin,

danke für die Vorschläge ... ich hab' jetzt folgende Varianten mal durchgespielt:

MyBlobField.DefaultExpression := '0x48656C6C6F20576F726C64'; [Fehlerhaft abgeschlossen]

MyBlobField.DefaultExpression := QuotedStr('0x48656C6C6F20576F726C64'); [Fehlende Typübereinstimmung]

MyBlobField.DefaultExpression := 'CONVERT(VARBINARY(25), ''0x9473FBCCBC01AF'', 1)'; [Fehlerhaft abgeschlossen]

MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''0x48656C6C6F20576F726C64'', 1)'; [Fehlerhaft abgeschlossen]

MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ' + QuotedStr('0x48656C6C6F20576F726C64') + ', 1)'; [Fehlerhaft abgeschlossen]

MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''Hello World'')'; [Fehlerhaft abgeschlossen]

MyBlobField.DefaultExpression := 'CONVERT(VARBINARY, ''''Hello World'''')'; [Fehlerhaft abgeschlossen]


Die SQL-Statements
Code:
SELECT CONVERT(VARBINARY(25), '0x9473FBCCBC01AF', 1);
SELECT CONVERT(VARBINARY, '0x48656C6C6F20576F726C64', 1);
SELECT CONVERT(VARBINARY, 'Hello World');
liefern übrigens (in der Konsole) das erwartete Ergebnis.

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?
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#5

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 19. Jan 2017, 13:16
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 19. Jan 2017, 14:59
Schon mal in betracht gezogen das es für ein binärfeld nicht die möglichkeit gibt diesen mit einem Defaultwert zu belegen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 19. Jan 2017, 15:53
Schon mal in betracht gezogen das es für ein binärfeld nicht die möglichkeit gibt diesen mit einem Defaultwert zu belegen?
Alles, was kein Integer ist, muß als String reingegeben werden, also '''abc''' .
Ob 'CONVERT(VARCHAR, ''abc'')' auch geht ... k.A., aber da es "Expression" heißt, könnte es gehn,
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.

http://docwiki.embarcadero.com/Libra...aultExpression
$2B or not $2B
  Mit Zitat antworten Zitat
PeterPetersen

Registriert seit: 15. Sep 2010
8 Beiträge
 
#8

AW: TBlobField.DefaultExpression (MSSQL varbinary)

  Alt 23. Jan 2017, 10:05
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz