Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem mit SQL --> Fehlermeldung: Invalid parameter (https://www.delphipraxis.net/150351-problem-mit-sql-fehlermeldung-invalid-parameter.html)

alex-91 14. Apr 2010 16:07

Datenbank: Pradox 7 • Zugriff über: BDE

Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Hallo !
Ich hab auch ein Problem mit SQL :(
Also: Ich habe in der Schule Programmieren und lerne nun das 4. Jahr Delphi. Zur Matura ( = Abi) muss ich ein Projekt machen. Und zwar ist dass ein Datenbankprogramm das helfen soll elektronische Geräte zu katalogisieren und zu verwalten.
(Delphi 7, BDE, Paradox 7)

Nun möchte ich die Option anbieten, zBsp. einen neuen Beamer in die Datenbank hinzuzufügen.
Hier einmal der Quelltext:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
inventarnummer, raumnummer : integer;
name, raumbezeichnung : string;
begin
nummer:=strtoint(Edit1.Text);
raumnummer:=strtoint(Edit2.Text);
raumbezeichnung:=Edit3.Text;
name:=Edit4.Text;

Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQl.Add('INSERT INTO Räume VALUES ('+inttostr(raumnummer)+','+(raumbezeichnung)+')');
Query1.ExecSQL;
Query1.Active:=true;

Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQl.Add('INSERT INTO Inventarnummern (inventarnummer) VALUES ('+inttostr(inventarnummer)+')');
Query1.ExecSQL;
Query1.Active:=true;
Wenn ich nun das Programm ausführe gibt es keine Probleme. Ich kann die Daten in die Edits eingeben. Aber wenn ich dann auf den Button drücke kommt die fehlermeldung :
ProjectProject1.exe raised exception class EDBEngineError with message 'Invalid parameter.'. Process stopped. Use Step or Run to continue.

ein grüner Pfeil steht dann beim 2. Query1.Active:=false;
Hab bereits einen klassenkollegen befragt, er hat ein ähnliches programm sieht aber den fehler nicht
Ich hoffe ich habe nichts falsch gemacht und ihr könnt mir helfen ...

liebe Grüße
alex-91

Bernhard Geyer 14. Apr 2010 16:10

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Eine Query die ein INSERT/UPDATE-Statement beinhaltet kannst du nicht mit .Active "aktiv" schalten. Diese werden per ExecSQL ausgeführt.
".Active" erwartet einen Ergebniscurser einer SELECT-Anweisung.

mkinzler 14. Apr 2010 16:12

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Zudem würde sich hier parametrisierte Abfragen anbieten

alex-91 14. Apr 2010 16:17

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Seit mir bitte nicht böse für die blöden Fragen aber :
wenn ich die
[delphi]Query1.Active:=true;[/delphi weggebe] , kommt der Fehler noch immer :(


und was ist gemeint mit parametisierter abfrage ? :?:

lg

mkinzler 14. Apr 2010 16:19

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Akzeptiert den die BDE/Paradox Umlaute in Datenbankobjekten?
Heisst die Tabelle wirlich Räume?

alex-91 14. Apr 2010 16:23

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Die tabelle hat wirkliche Räume.db geheißen.
Hab jtz das Ä durch ein A ersetzt und hab leider das Problem nachwievor :cry:

mkinzler 14. Apr 2010 16:24

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
In welcher Codezeile tritt den der Fehler auf?

Bernhard Geyer 14. Apr 2010 16:27

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Hallo? Und was ist mit meinem Hinweis?

Nochmal etwas anders Beschrieben. Lösche Zeile
Delphi-Quellcode:
Query1.Active:=true;
Und gut ist. Erklärung Post #2

alex-91 14. Apr 2010 16:32

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Der Erste SQL-Block dürfet funktionieren. Es hat auch schon ein paar mal, wenn auch falsch, etwas in die Tabelle geschrieben. Das Problem tritt dann vermutlich beim 2.
Delphi-Quellcode:
 Query1.Active:=false;
auf ...

Jürgen Thomas 14. Apr 2010 16:35

Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
 
Hallo,

der ursprüngliche Fehler liegt vermutlich daran, dass du eine Zahl in Hochkommata setzt. Das darf nicht sein! Auch steht in der ersten SQL-Anweisung eine Variable in Klammern, aber das dürfte unproblematisch sein.

Genau deshalb gibt es die Empfehlung, mit Parametern zu arbeiten. Das ist zwar am Anfang eine Umstellung und sieht komplizierter aus; es vermeidet aber Unmengen von Problemen.

Benutze einfach die Forumssuche z.B. nach "Abfragen mit Parametern" o.ä.

Gruß Jürgen

// Asche auf mein Haupt, die vielen Hochkommata haben mich offensichtlich verwirrt. Noch ein Argument mehr für Parameter :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Seite 1 von 4  1 23     Letzte »    

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