Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox DB mit SQL über BDE ansteuern (https://www.delphipraxis.net/79867-paradox-db-mit-sql-ueber-bde-ansteuern.html)

Spasskeks 30. Okt 2006 09:44

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Paradox DB mit SQL über BDE ansteuern
 
Moin,moin.

Hab kurz eine Frage. Habe folgenden Quelltext:

Delphi-Quellcode:
query1.SQL.Add('INSERT INTO '+dbname+' VALUES('+#39+dbDatum+#39+','+#39+dbuhr+#39+','+#39+dbbz+#39+','+#39+dbbe+#39+','+#39+dbbolus+#39+','+#39+dbbemerkung+#39);
Nun weiß ich nicht genau, was ich für die Variable dbname einsetzen muss. Wenn ich dort den kompletten Pfad inkl Datenbankfile eintrage erhalte ich folgenden Fehler:

"Im Projekt[...] ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: Ungültiges Schlüsselwort Symbolstring: ? [...]"

Wenn ich nur den Datenbank filename eintrage kommt das folgendes:

"Im Projekt[...] ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: Ungültiges Schlüsselwort Symbolstring: 1.db [...]"

Ich hoffe, mir kann jemand weiter helfen!

MFG Henrik

mkinzler 30. Okt 2006 09:49

Re: Paradox DB mit SQL über BDE ansteuern
 
Name der Tabelle(ndatei), also mit oder ohne .db

marabu 30. Okt 2006 10:58

Re: Paradox DB mit SQL über BDE ansteuern
 
Hallo Henrik,

verwende eine TDatabase-Komponente, um den Datenpfad festzulegen. Mit einem Doppelklick auf die Komponente öffnest du den property editor. Vergib einen Namen für die Datenbank und setze den Treiber auf STANDARD. Wenn du dann die Vorgaben abrufst, erhältst du einen leeren PATH-Eintrag. Den kannst du manipulieren, wie es dir gefällt - vorzugsweise zur Laufzeit beim Erzeugen deines Datenmoduls. Durch den Eintrag DEFAULT DRIVER = PARADOX kannst du auf die Erweiterung .db bei deinen Tabellen-Namen verzichten und es werden trotzdem nicht alle bekannten Erweiterungen gesucht.

Dein INSERT-Statement birgt die Gefahr, dass eine runtime exception geworfen wird, wenn in einer der Variablen (z.B. dbbemerkung) ein Apostroph vorkommt. Mach es besser so:

Delphi-Quellcode:
const
  ins = 'INSERT INTO %s VALUES(:datum, :uhrzeit, :bz, :be, :bolus, :bemerkung)';
var
  tn: String;
begin
  tn := 'tblname'; // hier dein Tabellen-Name
  with query1 do
  begin
    SQL.Text := Format(ins, [tableName]);
    Params.ParamValues['bemerkung'] := dbbemerkung;
    Params.ParamByName('datum').AsDateTime := dbdatum;
    // ...
    ExecSQL;
  end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz