![]() |
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:
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 :
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; 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 |
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. |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Zudem würde sich hier parametrisierte Abfragen anbieten
|
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 |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Akzeptiert den die BDE/Paradox Umlaute in Datenbankobjekten?
Heisst die Tabelle wirlich Räume? |
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: |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
In welcher Codezeile tritt den der Fehler auf?
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Hallo? Und was ist mit meinem Hinweis?
Nochmal etwas anders Beschrieben. Lösche Zeile
Delphi-Quellcode:
Und gut ist. Erklärung Post #2
Query1.Active:=true;
|
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:
auf ...
Query1.Active:=false;
|
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: |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Ok also:
Die zeile Query1.Active:=true; löschen bringt leider nichts. und ja die hochkomma braucht man ja für di stringmanipulation oder ? alles was in der zeile von INSER INTO steht sind variablen ... oda hab ich jtz die antwort nicht gecheckt :( |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Wie gesagt nimm Parameter:
Delphi-Quellcode:
Query1.SQl.Text := 'INSERT INTO Räume VALUES (:raumnummer, :raumbezeichnung)';
Query1.ParamByName('raumnummer').Value := raumnummer; ... Query1.ExecSQL; |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
hätte das jz mit parametern probiert , leider noch immer die selbe blöde fehlermeldung ='(
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Zeig doch mal den ganzen (relevanten) Code.
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
...und vermeide deutsche Umlaute in Tabellen- und Feldnamen!
Das kann dich irgendwann ist den Südpol beisen indem z.B. Fehlermeldung erscheinen, die man sich nicht erklären kann. |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Jo, das kommt noch strafverschärfend hinzu (ich wusste gar nicht, dass Paradox das überhaupt zulässt).
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
ursprünglich hät ich das so geplant:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var inventarnummer, raumnummer : integer; name, raumbezeichnung, baujahr : string; begin inventarnummer:=strtoint(Edit1.Text); raumnummer:=strtoint(Edit2.Text); raumbezeichnung:=Edit3.Text; name:=Edit4.Text; baujahr:=Edit5.Text; Query1.Active:=false: Query1.SQL.Clear; Query1.SQl.Add('INSERT INTO Raume VALUES ('+inttostr(raumnummer)+','+raumbezeichnung+')'); Query1.ExecSQL; Query1.Active:=false; Query1.SQL.Clear; Query1.SQl.Add('INSERT INTO B-Details VALUES ('+name+','+baujahr+'); Query1.ExecSQL; Query1.Active:=false; Query1.SQL.Clear; Query1.SQl.Add:=('INSERT INTO Inventarnummern (inventarnummer) VALUES ('+nummer+')'); Query1.ExecSQL; end; |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
SQL-Code:
Das wäre dann eine Subtraktion anstelle eines korrekten Tabellennamens.
INSERT INTO B-Details...
Erlaubt sind nur Buchstaben, Ziffern und der Unterstrich. Denk' einfach die Tabellen- und Feldnamen wäre Variablennamen ("Bezeichner") von Pascal. Dann siehst du schnell was erlaubt ist und was nicht. |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
hey shmia
danke für den vorschlag, hab das jz zur sicherheit einmal gemacht , hat aber leider nichts gebracht :( und irgendwie dürfte etwas am Query1.ExecSQL; stören. Das kann doch gar nicht sein oder ? Wenn ichs weg mach kommt keine fehlermeldung dafür passiert dann halt auch logischer weise nichts wenn man auf den button klickt... |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Was spricht den gegen die Verwendunf von Parametern
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
auch mit denen kommt die selbe fehlermeldung :(
habs eh kurz mal umgeschrieben , leider ohne erfolg ... |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Delphi-Quellcode:
Wie sieht es so aus?
procedure TForm1.Button3Click(Sender: TObject);
var inventarnummer, raumnummer : integer; name, raumbezeichnung, baujahr : string; begin inventarnummer:=strtoint(Edit1.Text); raumnummer:=strtoint(Edit2.Text); raumbezeichnung:=Edit3.Text; name:=Edit4.Text; baujahr:=Edit5.Text; Query1.SQL.Text := 'INSERT INTO Raume VALUES (:raumnummer,:raumbezeichnung)'; Query1.ParamByName('raumnummer').Value := raumnummer; Query1.ParamByName('raumbezeichnung').Value := raumbezeichnung; Query1.ExecSQL; end; [edit] Übrigens ist "name" ein schlechter Bezeichner, da jede Komponente auch über eine gleichnamige Property verfügt, nicht, dass da der Compiler durcheinanderkommt. [/edit] |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
nein leider auch nicht -.-
irgendwas passt an Qery1.ExecSQL; nicht :( |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Ist Query1 über eine Session verbunden oder per ist nur .DataBaseName konfiguriert?
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
garnichts von beidem ?! :oops:
was muss denn bei .DatabaseName drinnen stehen ? |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Der Pfad zu den Datenbankdateien
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Besser: In der BDE Verwaltung einen Alias für die DB anlegen, und den Alias da rein. Woher sollte die Komponente sonst wissen, welche DB es nun durchwühlen soll? (Und mittelfristig: BDE nicht benutzen)
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
@ mkinzler:
welche datnebankdateien ? @ Medium: kannst du mir erklären wie das funktionier? ham das noch nie gemacht und nur BDE kennengelernt .... |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Datenbankdateien: db, mdx, px, ...
Aliase:4In der Systemsteuerung gibt es die BDE Verwaltung. Dort kann man sprechende Namen für den Pfad anlegen. |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Systemsteuerung ?
bitte etwas genauer :oops: ... anleitung wär am coolsten ... |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Du kennst die Systemsteuerung nicht? :shock:
Start->Einstellungen->Systemsteuerung->BDE-Verwaltung |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
asooooo DIE systemsteuerung kenn ich schon =) *stolz bin*
aber ich wusste nicht, dass da ein BDE Administrator ist. und was muss ich jz mid dem machen ?? |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Einen Alias anlegen. Ich dachte, das wäre gelegentlich erwähnt worden.
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
ja sicher ich habe keine ahnung wie :oops:
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
kann mir bitte wer sagen wie das geht ?*hiiiiilfe*
|
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Wie hast du den die Tabellen angelegt? Bzw. hast du diese angelegt?
![]() |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
mit dem database desktop , ganz "normal" =)
BDE , Paradox 7 .... ganz normal =) |
Re: Problem mit SQL --> Fehlermeldung: Invalid parameter
Liste der Anhänge anzeigen (Anzahl: 2)
Anlegen eines neuen Alias
-Rechtsklick auf Datenbanken->Neu ( Bild1) -Art Standard (Bild2) -Namen Vergeben und Pfad auswählen (Bild3) -Übernehmen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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