FlowHeater Demo Video
 
FlowHeater - The Data Import / Export Specialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Syntax error in string in query expression

Syntax error in string in query expression 2 Monate 3 Wochen her #3679

Hallo liebe Community,
wir haben bei einem Kunden den ODBC-Adapter auf der Read-Seite und einen OleDBAdapter auf der Write-Seite. Die Read-Seite ist eine Ingres-DB. Die Write-Seite ist ein SharePoint 2016.

Es erscheint bei einigen Datensätzen folgende Fehlermeldung "Syntax error in string in query expression "...'.".
Wir konnten den Fehler schon etwas eingrenzen. Es liegt an bestimmte Zeichen, bspw. wenn ß, °, oder " als Spalteninhalt vergeben sind.
Übergibt man die gleiche Zeichenfolge in einem X-Value an die WRITE-Seite funktioniert es.

Woran könnte dies liegen? Hat jemand Erfahrungen dazu? Die Codierung der READ-Datenbank ist ISO88591.

Die Flowheater-Version ist die 4.1.4 (32 Bit).

Viele Grüße
Jens

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Jens Hetze.

Syntax error in string in query expression 2 Monate 3 Wochen her #3680

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

bin mir nicht sicher woran das liegen könnte. Bitte versuchen Sie mal auf der WRITE Seite lediglich die SQL Skripte zu erzeugen, Optionen siehe Screenshot. Ideal wäre wenn Sie die READ Seite soweit eingrenzen können, dass nur ein Datensatz vorhanden ist der genau so eine Fehlermeldung verursacht.

Anschließend posten Sie bitte mal das geneierte SQL Skript zur weiteren Analyse.



gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: von FlowHeater-Team.

Syntax error in string in query expression 2 Monate 3 Wochen her #3684

Guten Morgen,

anbei das SQL-Skript dreier Datensätze, die auf Fehler laufen. Die SQL-Abfrage auf der READ-Seite wurde darauf eingrenzt.

update LIST set Titel = '1', Lieferantenname = 'Ga¨rtner & Schwer GbR Hygienefachgroßhandel  '
update LIST set Titel = '2', Lieferantenname = 'Q-DAS° Gesellschaft fu¨r Datenverarbeitung und Systemtechnik mbH '
update LIST set Titel = '3', Straße = 'R?ntgenstr. 10 '

Bei 1 liegt es am Zeichen "ß". Bei 2 am Zeichen "°". Bei 3 am Zeichen "?".

Wird ein Import nur mit der Spalte "Titel" ausgeführt, wird der Import komplett durchlaufen.

Für Rückfragen stehe ich gern zur Verfügung.

Viele Grüße
Jens

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Jens Hetze.

Syntax error in string in query expression 2 Monate 3 Wochen her #3686

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

ich vermute, dass hier der ODBC Treiber für die Ingres Datenbank die Text Daten im ROH Format zurückliefert. Im Normal sollte das automatisch richtig codiert ankommen. Beim anschließenden Import über den OleDB Adapter in die Sharepoint Liste kommen so falsche "Binärdaten" an, die mit einer Fehlermeldung quittiert werden.

Bitte versuchen Sie mal folgendes) Ziehen Sie jeweils einen .NET Script Heater in die betroffenen Verbindungen. Über einen Doppelklick öffnen Sie den Konfigurationsdialog. Hier kopieren Sie, untenstehenden C# Skript Code hinein. Anschließend den Import noch einmal durchführen.

Das Skript konvertiert/interpretiert den Tex als Codepage 28591 (=ISO88591) und gibt die Zeichenfolge als Unicode (das erwartet der FlowHeater) zurück.


C# Skript Code
 
public object DoWork()
{
    if (InValues.Length != 1)
        throw new Exception("1 Eingangsparameter erwartet!");    

    string s = (string)InValues[0].GetString();

    // Codepage 28591 = ISO88591
    byte [] src = Encoding.GetEncoding(28591).GetBytes(s);
    byte [] dst = Encoding.Convert(Encoding.GetEncoding(28591), Encoding.Unicode, src);

    return Encoding.Unicode.GetString(dst);
}


gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: von FlowHeater-Team.

Syntax error in string in query expression 2 Monate 3 Wochen her #3687

Hallo Herr Stark,

leider hat der NET-Heater noch nicht zum Ziel geführt. Die SQL-Query sieht nun wie folgt aus:

update LIST set Titel = '1', Lieferantenname = 'Ga?rtner & Schwer GbR Hygienefachgroßhandel  ' where Lieferantennummer = '1'

Was bewirken die CodePage-Einstellungen im Bereich "Common" auf der READ- und WRITE-Seite (siehe Anhang "2019-03-22 10_17_26-INGRES-ADAPTER.png")?

Ich führe noch etwas weiter aus:
1. Auf dem Computer, welcher die Ingres-DB hält, sind folgende Adapter-Einstellungen hinterlegt (siehe Anhang "2019-03-22 10_21_09-READ.png").
2. Auf dem Computer, auf dem Flowheater läuft, ist ein Ingres-ODBC-Treiber installiert. Dieser bietet noch weitere Einstellungsmöglichkeiten (siehe Anhang "2019-03-22 10_26_38-INGRES_ODBC.png"). Könnte hier eine Einstellung die Daten evtl. besser liefern?
3. Mittels FlowHeater wird die ODBC-Verbindung angesprochen.

Viele Grüße
Jens
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Syntax error in string in query expression 2 Monate 3 Wochen her #3688

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

ich denke wir sind auf den richtigen Weg. Bricht der Import in die SharePoint Tabelle immer noch ab oder werden jetzt nur die Umlaute und Sonderzeichen mit einem „?“ gekennzeichnet?

Zu Ihrer Frage) Die Einstellungen für die Codepage hier sind nur für das Schreiben des SQL Skriptes vorgesehen. Im Normalfall konvertieren die Datenbank Treiber den Inhalt so, dass diese im abrufenden Programm verwendet werden können, hat zumindest bisher so funktioniert :-)

Im Anhang finden Sie ein kleines Testprogramm „ODBC-Query“. Bitte geben Sie hier mal die gleichen Verbindungsparameter (Connectionstring) sowie SQL an wie in der FlowHeater Definition auf der READ Seite für die Ingres Datenbank.

Hinweis: Es steht eine 32 Bit sowie 64 Bit Variante zur Verfügung, Sie müssen die 32 Bit Variante verwenden.

Rufen Sie zuerst mal die Daten mit den Standardeinstellungen ab. Werden hier bei der Ausgabe ebenfalls falsche Daten angezeigt?

Wenn ja versuchen Sie hier mal folgende Codepages nacheinander aus.

65000 = UTF-7
65001 = UTF-8
12000 = UTF-32 (Unicode)

Dateianhang:

Dateiname: odbc-query.zip
Dateigröße:24 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Syntax error in string in query expression 2 Monate 3 Wochen her #3690

Hallo Herr Stark,

zu Ihrer ersten Frage: Der Import in SharePoint bricht noch mit gleicher Fehlermeldung ab.

Das Testprogramm "ODBC-Query" liefert bei der Verwendung der Standard-Codepage ebenso falsche Daten. Bei der Verwendung der Codepages "65000", "65001" und "12000" jedoch saubere Werte. (Bspw. Gärtner & Schwer GbR Hygienefachgroßhandel)

Wie gehen wir weiter vor?

Viele Grüße
Jens

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Syntax error in string in query expression 2 Monate 3 Wochen her #3695

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

dann ist das Problem nicht der ODBC Treiber für die Ingres Datenbank sondern der SharePoint import. Die Ingres DB liefert die Werte noch so wie sie der FlowHeater erwartet.

Bitte versuchen Sie dann das hier beigefügte C# Skript für den .Net Script Heater wie weiter oben beschrieben.

Hier wird nun der Wert als Unicode interpretiert und anschließend in Windows ANSI Codepage (default) umgewandelt.


C# Skript Code um das Encoding von Unicode auf Windows ANSI zu ändern
public object DoWork()
{
    if (InValues.Length != 1)
        throw new Exception("1 Eingangsparameter erwartet!");    

    string s = (string)InValues[0].GetString();

    byte [] src = Encoding.Unicode.GetBytes(s);
    byte [] dst = Encoding.Convert(Encoding.Unicode, Encoding.Default, src);

    return Encoding.Default.GetString(dst);
}
[/size]


gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Syntax error in string in query expression 2 Monate 3 Wochen her #3696

Hallo Herr Stark,

leider noch derselbe Fehler (siehe Anhang "2019-03-26_Fehler.PNG").

Viele Grüße
Jens
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Syntax error in string in query expression 2 Monate 2 Wochen her #3697

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

jetzt habe ich die Vermutung, dass im Feldinhalt der (ODBC) Ingres Datenbank korrupte Zeichen abgespeichert sind, die bei der Konvertierung in Unicode vorhanden bleiben, hier aber nicht weiter stören. Bei der weiteren Konvertierung für die SharePoint Liste aber Probleme verursachen, die zum Abbruch des Import Vorgangs führen.

Bitte versuchen Sie mal den Inhalt eines betroffenen Datensatz in der Ingres Datenbank manuell entweder mit Hilfe des FlowHeater oder aber eines geeigneten Datenbanktool mit dem gleichen Wert (allerdings nicht per Copy&Paste) zu aktualisieren und anschließend diesen Datensatz in die SharePoint Liste zu importieren.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Syntax error in string in query expression 2 Monate 1 Woche her #3710

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1403
Hallo Herr Hetze,

durch die per Email zur Verfügung gestellten und analysierten Export Dateien fällt auf, dass hier bei den beschrieben Sonderzeichen immer ein HEX 0 bzw. 0x00 vorhanden ist.

Ich habe die Vermutung, dass der Ingres ODBC Treiber bei Unicode 3 Byte bzw. 4 Byte Unicode Zeichen hier eine falsche länge liefert und das ungültige Steuerzeichen „\0“ am Ende liefert was dann die Fehler beim Import in die SharePoint liste verursacht.

Bitte versuchen Sie mal beigefügtes C# Skript, das diese Zeichen aus dem Feldinhalt entfernt.

C# Skript um Hex 0 aus String zu entfernen bzw. den String ab dieser Position abzuschneiden
public object DoWork()
{
    if (InValues.Length != 1)
        throw new Exception("1 Eingangsparameter erwartet!");    

    string s = (string)InValues[0].GetString();

    int pos = s.IndexOf("\0");
    if (pos >= 0)
    {
        // Falls HEX 0 bzw. 0x00 im String gefunden wurde dann ab da abschneiden
        s = s.Substring(0, pos);
    }

    return s;
}

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Folgende Benutzer bedankten sich: Jens Hetze

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Syntax error in string in query expression 2 Monate 5 Tage her #3716

Hallo Herr Stark,

der Import funktioniert mit dem oben genannten Skript. Vielen Dank für Ihre Unterstützung.

Viele Grüße
Jens Hetze

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

Copyright © 2009-2019 by FlowHeater GmbH.
Alle Rechte vorbehalten.

Follow us on

twitter  facebook

YouTube

 de en