AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitten
Thema durchsuchen
Ansicht
Themen-Optionen

Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitten

Ein Thema von Byteteufel · begonnen am 23. Okt 2016 · letzter Beitrag vom 24. Okt 2016
Antwort Antwort
Byteteufel

Registriert seit: 20. Sep 2012
13 Beiträge
 
#1

Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitten

  Alt 23. Okt 2016, 17:59
Datenbank: MSSQL • Version: 2014 • Zugriff über: FireDac
Hallo zusammen,

ich habe da eine seltsames Problem. Meine Anwendung lief unter DBX mit MSSQL und Firbird problemlos. Dann habe ich mit Seattle auf FireDac umgestellt. Erst schien alles problemlos zu laufen, jetzt habe ich festgestellt, dass bei einem Update und bei einem Insert in die Tabellen bei Strings alles inkl. dem Ausführzungszeichen abgeschnitten wird. Beim Lesen aus der Tabelle ist aber alles vorhanden, wenn ein Ausführungszeichen im String steckt. Beim Zurückspeichern verschwindet dieses inkl. der folgenden Zeichen.

Beispiel:
Ein String hat den Inhalt 'Das ist ein Test! Gefolgt von mehr Inhalt'

Im Debugger kann ich sehen, dass der FDBQuery auch in der Insert oder Update Anweisung die Zeichenkette komplett übergeben wird.
In der Datenbank steht dann aber nur noch 'Das ist ein Test' alles was inkl. '! Gefolgt von mehr Inhalt'

Bei dem bei Seattle mitgeliefertem Beispiel funktioniert aber der Insert in die Datenbank.

Hat jemand eine Idee, was das sein könnte? Ich habe mir bereits einen Wolf gesucht.

Danke für Eure Tipps.

Viele Grüße

Axel
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 23. Okt 2016, 18:24
Benutzt du denn Parameter? Dann sollte das nicht passieren, denn dafür sind sie ja da.

Oder baust du den SQL-Text als String komplett zusammen? Das sollte man vermeiden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Byteteufel

Registriert seit: 20. Sep 2012
13 Beiträge
 
#3

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 23. Okt 2016, 18:48
Hallo Sebastian,

ich baue den String zur Laufzeit zusammen. Bisher klappte es immer problemlos.
Aber wieso verhält es sich dann hier anders?

Ich werde es mal mit Parameter an einer Stelle ausprobieren und dann berichten.

Danke schon mal für den Hinweis.

Viele Grüße

Axel
  Mit Zitat antworten Zitat
Byteteufel

Registriert seit: 20. Sep 2012
13 Beiträge
 
#4

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 23. Okt 2016, 19:49
Hallo Sebastian,

in der Tat, mit den Parametern klappt es. Aber wieso ist es denn unterschiedlich? Als SQL-Statement kommt am Server jeweils das selbe an.

Gibt es noch eine Möglichkeit, den SQL-String mit aufgelösten Parametern sich anzeigen zu lassen? Vorher hatte ich DBQuery.sql.text dazu verwendet. Nutze ich es, dann stehen da nur die Parameter drin. Wo kann ich aber den echten SQL-String mit aufgelösten Parametern sehen?

Viele Grüße

Axel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 23. Okt 2016, 19:55
Die Parameter werden erst auf dem Server auf die vorbereitete (prepared) Abfrage angewandt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 23. Okt 2016, 20:50
Hattest du die "Strings" auch ordentlich korrekt gequoted, bevor sie in den SQL-Text eingebaut wurden?
Miniaturansicht angehängter Grafiken
fowfjvu.png   fa7c5b5f326e3c4a6cc9db19e7edbaf0-xkcd-bobby-tables.png  
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Okt 2016 um 20:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 24. Okt 2016, 07:46
Hi,

ich hab bei mir gerade das folgende SQL Statement getestet:
qryFireDAC.SQL.Add(' insert into TESTFIREDAC (ID, FIELD1) values(:ID, ''Hallo! Welt'') '); der String "Hallo! Welt" kam in der DB richtig an...
Evtl. hängt dein Problem auch mit den den ResourceOptions MacroCreate & MacroExpand zusammen, da hier das Ausrufezeichen für die Suche nach Makros verwendet wird (FireDAC Doku).

... Gibt es noch eine Möglichkeit, den SQL-String mit aufgelösten Parametern sich anzeigen zu lassen? ...
FireDAC bietet die Möglichkeit ein Tracing zu aktivieren, ob du darüber die gewünschten Infos bekommt kann ich nicht versprechen, ein Versuch wär es aber vielleicht wert... Das Tracing kannst Du wie folgt aktivieren...

In den Parametern der TFDConnection den folgenden Eintrag hinzufügen:
conFireDAC.Params.Add('MonitorBy=Remote'); Auf deiner Form bzw. auf deinem Datenmodul die FireDAC Komponente TFDMoniRemoteClientLink hinzufügen und hier die Option "Tracing" auf "True" setzen...

Bevor du jetzt dein Projekt startest musst du die FDMonitor.exe gestartet haben, diese kannst Du entweder über die IDE starten (zumindest hab ich in Delphi7 ein Menü für FireDAC wo ich den Monitor starten kann) alternativ findest Du die FDMonitor.exe im Installationsverzeichnis der FireDAC.
Der FDMonitor zeigt dir nun etwas detailierter die Informationen welche er mit der DB austauscht...

Vielleicht helfen dir die Infos...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 24. Okt 2016, 07:48
Ist die Länge von dem Tabellenfeld groß genug?
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#9

AW: Nach Umstellung von DBX auf FireDac wird im String nach ! alles beim abgeschnitte

  Alt 24. Okt 2016, 09:09
Evtl. hängt dein Problem auch mit den den ResourceOptions MacroCreate & MacroExpand zusammen, da hier das Ausrufezeichen für die Suche nach Makros verwendet wird (FireDAC Doku).
Der Link ging nicht ganz an die richtige Stelle. Dieser hier passt etwas besser: Substitutionsvariablen

Abgesehen davon sollte man immer mit Parametern arbeiten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 05:41 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