AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ansteuerung von Paradoxtabellen mit SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Ansteuerung von Paradoxtabellen mit SQL

Offene Frage von "Abraxas"
Ein Thema von Abraxas · begonnen am 20. Jan 2009 · letzter Beitrag vom 22. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Abraxas

Registriert seit: 19. Jun 2007
11 Beiträge
 
#1

Ansteuerung von Paradoxtabellen mit SQL

  Alt 20. Jan 2009, 22:09
Datenbank: Paradox • Version: 7 • Zugriff über: BDE, SQL
Moin moin,

hab mal wieder ein kleines Problem mit einem meiner Programme,
ich plane im Folgenden in der Datenbank CDDVD.db einen neuen Eintrag anzulegen,
leider klappt es nicht wie gewünscht...

Ein paar Zeilen drüber funktioniert es aber bei einer anderen Datenbank fast genauso.
Ich bekomme bei der Showmessage-kontrolle ausgegeben:
"INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES (1,2,"WLP2",2,2009)".

Das System meldet den Fehler: Ungültiges Schlüsselwort Symbolstring INSERT.
Und finde den Fehler nicht, kann mir einer verraten wo sich der Wurm da heimisch fühlt?



Delphi-Quellcode:
CDID:=NeuerCDIndex;
        If CDID=0 then Abort;
        with Query1 do
                begin
                Close;
                SQL.Clear;
                Showmessage('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES ('+IntToStr(CDID)+','+IntToStr(Lagerort)+',"'+GetPartitionName(ComboBox1.Text[1])+'",'+LabeledEdit1.Text+','+LabeledEdit2.Text+')');
                SQL.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES ('+IntToStr(CDID)+','+IntToStr(Lagerort)+',"'+GetPartitionName(ComboBox1.Text[1])+'",'+LabeledEdit1.Text+','+LabeledEdit2.Text+')');
                ExecSQL;
                Close;
                end;
Herzlichen Dank im Vorraus

Abraxas
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 09:59
Hallo,

mach' mal anstelle von " ein QuotedStr. Sind im SQL " eigentlich zulässig oder müssen es ' sein?

Änder mal das
Delphi-Quellcode:
SQL.Clear;
Showmessage('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES ('+IntToStr(CDID)+','+IntToStr(Lagerort)+',"'+GetPartitionName(ComboBox1.Text[1])+'",'+LabeledEdit1.Text+','+LabeledEdit2.Text+')');
SQL.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES ('+IntToStr(CDID)+','+IntToStr(Lagerort)+',"'+GetPartitionName(ComboBox1.Text[1])+'",'+LabeledEdit1.Text+','+LabeledEdit2.Text+')');
in
Delphi-Quellcode:
SQL.Clear;
SQL.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr)';
SQL.Add('VALUES (' + IntToStr(CDID) + ',' + IntToStr(Lagerort) + ',');
SQL.Add(QuotedStr(GetPartitionName(ComboBox1.Text[1])) + ',');
SQL.Add(LabeledEdit1.Text + ',' + LabeledEdit2.Text + ')');
Showmessage(SQL.Text);
damit Du das auszuführende SQL siehst und nicht eine Zeichenfolge, von der Du hoffst, dass sie mit dem auszuführenden SQL übereinstimmt
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 10:58
Hallo,

warum nutz Du nicht die Möglich keit der Parameter übergabe.
Dein Code könnte dann ungefähr so aussehen und läst sich besser lesen

Delphi-Quellcode:
with Query1 do
  begin
    sql.Clear;
    sql.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES (:ID,:Lagerort,:Name,:Monat,:Jahr');
    ParamByName('ID').AsInteger := CDID;
    ParamByName('Lagerort').AsString := Lagerort;
    ...
    Prepare;
    ExecSQL;
  end;
Gruß Hartmuth
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 12:03
Hallo,

wenn ich mich nicht irre, genügt es nicht, nur den Tabellennamen zu benutzen, sondern es muss auch auch noch die Endung und ggf. der Dateipfad hinzugefügt werden.

entweder so
  INSERT INTO "CDDVD.DB" (ID,.... oder so

  INSERT INTO "C:\PfadZurTabelle\CDDVD.DB" (ID,....
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 17:09
Zitat:
wenn ich mich nicht irre, genügt es nicht, nur den Tabellennamen zu benutzen, sondern es muss auch auch noch die Endung und ggf. der Dateipfad hinzugefügt werden.
Nur wenn die Tagelle nicht im Verzeichnis vom AliasName in der BDE definiert hat. Alternativ kann das auch im Database Objekt bei den Parameter "PATH= " angegeben werden.
Sollte sich die Tabelle nicht in dem Verzeichnis befindet, dann muss das Verzeichnis im SQL angegeben werden.

Gruß Hartmuth
  Mit Zitat antworten Zitat
Abraxas

Registriert seit: 19. Jun 2007
11 Beiträge
 
#6

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 19:57
Danke für die schnellen Antworten!

Ich habe alle eure Vorschläge nacheinander ausprobiert, hat mir nur leider nicht viel geholfen.

Bei der Ausgabe des SQL.Text habe ich zusätzlich noch die zuvor ausgeführte SQL-Anweisung gelistet, trotz dem "SQL.Clear",
ansonsten ist die ausgabe vollkommen identisch mit der die im ersten Beitrag steht.

Und bei der Parametervariante:
Delphi-Quellcode:
with Query1 do
                begin
                sql.Clear;
                sql.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES (:ID,:Lagerort,:Name,:Monat,:Jahr');
                ParamByName('ID').AsInteger := CDID;
                ParamByName('Lagerort').AsInteger := Lagerort;
                ParamByName('Name').AsString:= GetPartitionName(ComboBox1.Text[1]);
                ParamByName('Monat').AsString:= LabeledEdit1.Text;
                ParamByName('Jahr').AsString:=LabeledEdit2.Text;
                Prepare;
                ExecSQL;
                end;
Bekomme ich als Antwort: "Query1: Parameter 'Name' nicht gefunden"

Bin also der Lösung noch nicht näher gekommen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 20:00
Hallo,

ist das sicher der komplette Quelltext ?
oder steht zwischen dem

with Query1 do

und dem SQL.Clear noch was ?.


Lass das with Query1 mal komplett weg

Query1.SQL.Clear;
Query1.SQL.Add usw.


Ah j
es fehlt auch noch eine Klammer hinter dem Parameter-Jahr


sql.Add('INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES (:ID,:Lagerort,:Name,:Monat,:Jahr)');

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 20:01
Statt Clear und Add könntest Du auch Text zuweisen.sql.Text := 'INSERT INTO CDDVD (ID,Lagerort,Name,Monat,Jahr) VALUES (:ID,:Lagerort,:Name,:Monat,:Jahr'; [edit] Ich sehe gerade, dass im SQL-String die schließende Klammer fehlt. Ist das im Originalsource auch so? [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Abraxas

Registriert seit: 19. Jun 2007
11 Beiträge
 
#9

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 20:14
Danke für die Blitzantworten.

Ja das ist der gesamte Quelltext zu dieser SQL-Anweisung 1:1 von Delphi kopiert.
In einer Prozedur davor wird zwar eine nahezu identische SQL-Anweisung durchgeführt,
die aber problemlos funktioniert, daher hab ich sie ausgelassen.

Leider bringt auch die Schreibweise ohne "with Query1 do" nichts.

Und das SQL.Text:=... verkürzt zwar den Quelltext um eine Zeile,
hat aber sonst leider keinen Effekt.

P.S. Die schließende Klammer habe ich bereits ergänzt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Ansteuerung von Paradoxtabellen mit SQL

  Alt 21. Jan 2009, 20:38
Ändere mal den Name des Parameter Name ab, Name könnte misinterpretiert werden
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:58 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