AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi zugriff auf Access DB -> Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

zugriff auf Access DB -> Fehler

Ein Thema von plumper · begonnen am 6. Mär 2005 · letzter Beitrag vom 8. Mär 2005
Antwort Antwort
Benutzerbild von plumper
plumper

Registriert seit: 15. Jul 2004
Ort: Ahrensburg
88 Beiträge
 
Delphi 7 Professional
 
#1

zugriff auf Access DB -> Fehler

  Alt 6. Mär 2005, 22:56
Datenbank: Access • Version: 2003 • Zugriff über: ADO- Komponenten
Hi Leute,

ich habe folgendes Coding:

Delphi-Quellcode:
      SCRIPT_TAB : String = 'ScriptParts';
...
      with ADOCommand do begin
        with Parameters.AddParameter do begin
          Name := 'Transaction';
          DataType := ftString;
          Value := TA;
        end;
        with Parameters.AddParameter do begin
          Name := 'PosInScript';
          DataType := ftString;
          Value := PosInScript;
        end;
        with Parameters.AddParameter do begin
          Name := 'Script';
          DataType := ftString;
          Value := Script;
        end;
        with Parameters.AddParameter do begin
          Name := 'PosToChange';
          DataType := ftString;
          Value := PosToChange;
        end;
        with Parameters.AddParameter do begin
          Name := 'DataChange';
          DataType := ftString;
          Value := DataChange;
        end;
        CommandText := 'INSERT INTO '+SCRIPT_TAB+
                      ' (Transaction, PosInScript, Script, PosToChange, DataChange)'+
                      ' VALUES (:Transaction, :PosInScript, :Script, :PosToChange, :DataChange)';
        CommandType := cmdText;
        try
          Execute;
Beim Execute löst er eine EOleException aus: 'Syntaxfehler in der INSERT INTO-Anweisung'...

Sieht irgendjemand den Fehler?
Jens

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: zugriff auf Access DB -> Fehler

  Alt 6. Mär 2005, 23:08
Meines Achtens liegt es an der Reihenfolge, wie du die Befehle ausführst. Probier doch mal erst den CommandText zu setzen, und dann die Parameter zu definieren.
  Mit Zitat antworten Zitat
Benutzerbild von plumper
plumper

Registriert seit: 15. Jul 2004
Ort: Ahrensburg
88 Beiträge
 
Delphi 7 Professional
 
#3

Re: zugriff auf Access DB -> Fehler

  Alt 6. Mär 2005, 23:50
Hmmm, dann kommt die Fehlermeldung ein Parameter sei nicht korrekt gefüllt...
Jens

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: zugriff auf Access DB -> Fehler

  Alt 7. Mär 2005, 07:56
Dann weiss ich auch nicht weiter. Aber vielleicht kommt noch Folgendes in Betracht:
1. Ist vielleicht ein String größer als die Länge des Felder in Access
2. Auch wenn ADOCommand verwendet werden soll, kannst du ja mal dein Glück mit ADOQuery probieren.

Mehr fällt mir nicht ein.
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#5

Re: zugriff auf Access DB -> Fehler

  Alt 7. Mär 2005, 10:19
Guten Morgen!
Ich sehe das Problem auch nicht wirklich ... aber trotzdem vier Hinweise.

1.) CommandText muß vorher gesetzt sein, wenn ParamCheck auf true steht, weil sonst durch das setzen des Statements die Parameter wieder verloren gehen.

2.) Ich hatte in der Vergangenheit (Delphi 5) Probleme, wenn die Parameter genauso heißen wie die Felder. Ob das noch ein Problem ist weiß ich nicht ...

3.) Der Parametername "Transaction" stört mich. Hier könnte es eventuell Kollisionen mit irgendwelchen Schlüsselwörtern geben.

4.) Hinter SchriftTab müßte ein Leerzeichen kommen, weil sonst das Statement wie folgt aussieht:
"ScriptParts(Transaction"

Viel Erfolg.
Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: zugriff auf Access DB -> Fehler

  Alt 7. Mär 2005, 10:36
Hast Du das SQL in Access schon mal getestet? Evtl. enthält es ja ein reserviertes Wort?
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von plumper
plumper

Registriert seit: 15. Jul 2004
Ort: Ahrensburg
88 Beiträge
 
Delphi 7 Professional
 
#7

Re: zugriff auf Access DB -> Fehler

  Alt 7. Mär 2005, 22:21
Scheibenkleister, ich glaube ich habe den Fehler. Auch auf die Gefahr hin, dass Ihr mich hinterher Teeren und Federn wollt/müßt (viel Spaß in Kassel): der Parameter Scripts wird aus einem Memo gefüllt. Und anscheinend hat der Probleme mit irgendwelchen Zeichen dort drin. Dies steht z.B. in dem im fertigen SQL.Text:
'INSERT INTO ScriptParts (TAN, PIS, Script) VALUES ("",1,"If Not IsObject(application) Then'#$D#$A' Set SapGuiAuto = GetObject("SAPGUI")'#$D#$A' Set application = SapGuiAuto.GetScriptingEngine'#$D#$A'End If");'#$D#$A Liegt daran, oder? Tschuldigung an alle, die sich Gedanken gemacht haben

Jetzt muß ich mal herausfinden, wie ich das in mein Datenbank-Memofeld bekomme...
Jens

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: zugriff auf Access DB -> Fehler

  Alt 7. Mär 2005, 23:55
Zitat von plumper:
Jetzt muß ich mal herausfinden, wie ich das in mein Datenbank-Memofeld bekomme...
DB Memofelder sind ja auch nix anderes als Blobfelder... Da bietet ADO doch auch Zugriffmöglichkeiten, oder?
  Mit Zitat antworten Zitat
csa

Registriert seit: 22. Feb 2005
Ort: Wiesbaden
14 Beiträge
 
Delphi 2006 Professional
 
#9

Re: zugriff auf Access DB -> Fehler

  Alt 8. Mär 2005, 14:10
Hallo,

Memo-Felder werden bei Verwendung von ADO genau so wie alle anderen Zeichenketten-Felder behandelt - jedenfalls bei Access und MS-SQl (nur Oracle geht seinen eigenen Weg, da muss man die Daten in kleinen Blöcken transportieren *grummel*). Parameter.DataType := ftString und die Zuweisung an Parameter.Value sollten also richtig sein.

Die #$D#$A (Zeilenumbruch) sollten auch nicht stören, weder im Statement noch bei Werten.

Nach der Zuweisung von CommandText an ADOCommand sind die Parameter möglicherweise bereits initialisiert, dann Parameters.ParamByName statt Parameters.AddParameter verwenden.

Gruß
Christoph
...der sich gerade über den OLE-DB/ADO-Treiber von Oracle ärgert...
  Mit Zitat antworten Zitat
Benutzerbild von plumper
plumper

Registriert seit: 15. Jul 2004
Ort: Ahrensburg
88 Beiträge
 
Delphi 7 Professional
 
#10

Re: zugriff auf Access DB -> Fehler

  Alt 8. Mär 2005, 20:10
So, es ist geschafft. Folgendes habe ich verändert. EinTDBMemo genommen und die " gegen ' ausgetauscht. Da muß man erst mal drauf kommen:
Delphi-Quellcode:
        SQL.Text := 'INSERT INTO '+SCRIPT_TAB+' (TAN, PIS, PTC, Script, DataChng) VALUES ('''
                    +TA+''','+PosInScript+','+PosToChange+','''+ScriptPart+''','''+DataChange+''');';
Nur das mit dem Blob habe ich noch nicht so richtig verstanden. Da werde ich bestimmt noch einmal mit Fragen kommen. Die Feldnamen ahbe ich auch noch verändert, wobei ich bemerken muß, das es an Transaction nicht lag. Letztendlich glaube ich, das es an den " lag, da die innerhalb des Strings ebenfalls vorkommen. Und ich schätze, das bringt ihn durcheinander, oder?

[edit]
Nein, es war nicht nur das Hochkomma, sondern die Tatsache, dass ich sowohl Hochkamma als auch TDBMemo genommen habe. Jetzt geht aber eine andere Sache nicht mehr, die mit dem normalen Memo ging.

Ich löse das jetzt erst mal anders...
[/edit]


Danke an alle,

cu in Kassel!
Jens

{KDT}
  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:28 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