Autor |
Beitrag |
csigg
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Do 21.07.05 09:09
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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 21.07.05 09:25
Gibt es deiner SQL-Anweisung denn den Parameter "MANR"?
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 21.07.05 09:29
Verwechselst du ParamByName und FieldByName?
|
|
Matthias-K
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: 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 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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
Zuletzt bearbeitet von csigg am Do 21.07.05 10:39, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 21.07.05 10:38
Das stimmt.
Zeig doch mal das ganze SQL-Statement.
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 21.07.05 10:44
Folgendes:
Delphi-Quelltext 1:
| dmMesse.TDAnwesend.ParamByName('NUMMER').asString := dbeMAnr.Text; |
getestet?
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Do 21.07.05 10:47
ja, da kommt eben die Meldung NUMMER not found
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Do 21.07.05 10:56
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 21.07.05 10:57
Dann bin ich im Moment überfragt. Sorry.
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Do 21.07.05 11:01
an was könnte es sonst noch liegen, dass der oben genannte Trigger nicht greift??
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: 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.
|
|