Announcement

Collapse
No announcement yet.

SQL Zeichenketten Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Zeichenketten Problem

    Hallo ,
    ich schreibe mittels SQL Zeichenketten in eine Access Tabelle.

    z.B. 'blablabla : blablabla'

    Der Doppelpunkt löst dann eine Exception aus.

    Wer hat eine Idee bzw. Lösung
    Vielen Dank
    Frank

  • #2
    Hallo,

    mit welcher Komponente bzw. auf welchem Weg passiert das? Der Doppelpunkt wird eventuell von Delphi als Parameter-Einleitungszeichen interpretiert. In diesem Fall würde ich im Objektinspektor die Eigenschaft <b>ParamCheck</b> auf False setzen

    Comment


    • #3
      Hallo Herr Kosch,
      vielen Dank für den Hinweis.

      Leider hat Paramcheck:=FALSE das Problem nicht beheben können.
      Vorläufig mache ich eine Sonderbehandlung auf der Zeichenkette. Falls ein Doppelpunkt gefunden wird, wird er durch ein Blank ersetzt.
      Mit Doppelpunkt wird eine Exception in IDAPI32.DLL ausgeloest.

      Ich benutze den Weg über den Native Access Treiber der BDE.
      Ich hatte auch schon Probleme mit dem | Zeichen, daß ich als Separator nutzen wollte.

      Das der Doppelpunkt für SQL als Parametereinleitung dient habe ich bereits dem Forum entnehmen können. Es muß aber doch eine Möglichkeit geben den Doppelpunkt als normal zu verwendendes Ascii Zeichen zu kennzeichnen.

      Fran

      Comment


      • #4
        Hallo,

        dann wird das Problem wohl auf der ACCESS-Seite liegen. Anstelle die SQLs zur Laufzeit als Strings zu generieren und im Stück abzusetzen, würde ich auf parametisierte Anweisungen zurückgreifen. Wenn der aktuelle Parameterwert vor dem Aufruf gesetzt wird, sollte das Problem verschwinden.

        P.S: Wie sieht ein kurzes Beispiel aus, mit dem dieser Effekt jederzeit reproduziert werden kann

        Comment


        • #5
          Hallo,

          anbei ein abgemagertes Codestück zu meinem Problem

          s.Bezeich:='Zwangsbremse : Nullkontakt offen';
          // Kommt aus einer anderen Tabelle : hier per Hand eingetragen

          s1:='insert into '+Tabelle+' ';
          s2:='(SUSY,CODE,N,FEHLERTEXT,K_ZEIT,G_ZEIT,K_DATUM ,G_DATUM,STOERDAUER,';
          ..........

          s8:='VALUES'''+s.susy+''','''+s.Fcode+''','''+s.Za ehler+''','''+s.Bezeich+''', ';

          .........

          sqlstr:=s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13 +s14+s15+s16+s17+s18+s19+s20+s21;
          execSQL(sqlstr,windia_main.query_Wandeln);

          procedure execSQL(sqlstr: String;Query:TQuery);
          begin
          if Query.Active then Query.Close;
          Query.SQL.Clear;
          Query.SQL.Add(SqlStr);
          if not (Query.Prepared) then
          begin
          Query.Prepare;
          end;
          Query.ExecSQL;
          end;

          Gruß Fran

          Comment


          • #6
            Hallo Frank,

            ich weiß nicht ob du es nur beim Posten vergessen hast, aber die korrekte Syntax für ein Insert ist: insert into tabelle (column1, ...) values<b>(</b>wert1, ...<b>)</b>.
            Könnte die fehlende Klammer der Grund für die Exception sein?

            Gruß Fal
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Hallo Falk,

              die Klammern im richtigen Programm sind richtig gesetzt. Irgendwie ist im Posting die Klammer bei VALUES verschwunden. Das Programm stürzt ja auch nur dann ab, wenn aus einer anderen Tabelle eine Zeichenkette mit Doppelpunkt gefunden wird.

              Dank für Deinen Hinweis

              Fran

              Comment

              Working...
              X