Entwickler-Ecke
Datenbanken - Problem mit ParamByName
csigg - Do 21.07.05 09:09
Titel: Problem mit ParamByName
ich hab in meinem onActivate einer unter-Form die Zeile:
Delphi-Quelltext
1:
| dmMesse.TDAnwesend.ParamByName('MANR').asString := dbeMAnr.Text; |
stehn.
Allerdings tritt dabei immer eine Exception auf, EIBClientError Field "MANR" nocht found
Muss ich in meinem DataSet noch speziell was definieren??
jasocul - Do 21.07.05 09:25
Gibt es deiner SQL-Anweisung denn den Parameter "MANR"?
csigg - Do 21.07.05 09:27
Es gibt halt die Spalte MANR, aber in des SQL-Statements des DataSets steht immer *, muss ich es da explizit angeben??
jasocul - Do 21.07.05 09:29
Verwechselst du ParamByName und FieldByName?
Matthias-K - Do 21.07.05 09:30
'select * from tabelle where name = :manr';
edit: dah basch doch glatt de erklärung vergessen,
also das, was hinter dem dopelpunkt steht, kannst du per parambyname deklarieren!
spaltennamen sind da ein wenig unangebracht, und wie ich grad gelesen hab, muss ich jasocul recht geben! du verwechselst da was!
csigg - Do 21.07.05 10:04
OK, wenn ihr meint.
Dann noch mal von vorne.
Ich hab in meinem DataSet Statement drin wie oben mit where manr=:manr .
Und jetzt hätt ich das manr gerne definiert, weil ich einen Trigger erstellt habe, mit
Quelltext
1: 2: 3: 4: 5: 6:
| CREATE TRIGGER "DEL_ANWESENHEIT" FOR "ANWESENHEIT" ACTIVE BEFORE DELETE POSITION 0 AS BEGIN DELETE FROM ANWESENHEIT WHERE MANR=OLD.MANR; END |
Allerdings muss ich ja jetzt noch das MANR definieren, oder??
jasocul - Do 21.07.05 10:12
Der Trigger dürfte damit nichts zu tun haben.
Gib deinem Parameter mal eine ander Bezeichnung als das Tabellenfeld. Ich vermeide sowas grundsätzlich! Daher ist das im Moment nur eine Vermutung, dass es daran liegen könnte.
Aber du hast natürlich Recht, dass der Parameter mit einem Wert belegt werden muss.
csigg - Do 21.07.05 10:15
Sorry, steh grad etwas auf der Leitung.
Wenn ich dem Parameter einen anderen Namen gebe, woher weiss das Programm dann welche spalte gemeint ist??
jasocul - Do 21.07.05 10:34
Zitat: |
Ich hab in meinem DataSet Statement drin wie oben mit where manr=:manr . |
manr ist die Spalte
und
:manr ist dein Parameter
csigg - Do 21.07.05 10:35
Ah, jetzt, aber dann brauch ich schon wieder das ParamByName, oder??
Also ich hab jetzt :manr in :nummer geändert, kommt aber noch die gleiche Exception, nud dieses mal mit NUMMER not found
jasocul - Do 21.07.05 10:38
Das stimmt.
Zeig doch mal das ganze SQL-Statement.
csigg - Do 21.07.05 10:40
Es sind ja mehrer, in meinem DataSet, das ist das SELECT:
Quelltext
1:
| SELECT * FROM Anwesenheit WHERE MANR = :NUMMER ORDER BY DATUM; |
jasocul - Do 21.07.05 10:44
Folgendes:
Delphi-Quelltext
1:
| dmMesse.TDAnwesend.ParamByName('NUMMER').asString := dbeMAnr.Text; |
getestet?
csigg - Do 21.07.05 10:47
ja, da kommt eben die Meldung NUMMER not found
jasocul - Do 21.07.05 10:52
Mal ne blöde Frage:
Du machst das ParamByName aber bei dem DataSet, wo auch die SQL-Anweisung mit dem Parameter ":NUMMER" steht?
csigg - Do 21.07.05 10:56
ja, genau da.
jasocul - Do 21.07.05 10:57
Dann bin ich im Moment überfragt. Sorry.
csigg - Do 21.07.05 11:01
an was könnte es sonst noch liegen, dass der oben genannte Trigger nicht greift??
BenBE - Do 21.07.05 14:18
Wenn Dein Parameter mehrfach in einer SQL-Statement eingebunden wird, musst Du die Parameter-Werte auch mehrfach angeben (in dem Du selber über alle Params iterierst und die Werte bei allen MANR-Objekten setzt). Hatte mal ein witziges Problem mit einer Abfrage, wo ich einen Parameter mit gleichem Namen an mehreren Stellen einsetzen musste und immernur die erste Instanz gegriffen hat.
csigg - Do 21.07.05 14:27
Also 1. Ich hab ja das Problem das schon beim ersten mal die Exception -siehe oben- kommt.
2. Soll ich jetzt 5x hintereinander den gleichen Befehl schreiben?? *g* Sorry, hab nicht wirklich begriffen wie du das gemeint hast.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!