Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Access Datenbank Parameters.ParamByName (https://www.delphipraxis.net/185045-access-datenbank-parameters-parambyname.html)

Walter Landwehr 11. Mai 2015 09:37

Datenbank: Firebird • Version: 2.5.4 • Zugriff über: IBO

Access Datenbank Parameters.ParamByName
 
Hallo,

ich möchte eine Access Tabelle öffnen:

SELECT Sum(GesamtHonorar) as Summe from Behandlungsleistungen where Behandlung = :ID


Delphi-Quellcode:
 MainMod.Behandlungssumme.Close;
 MainMod.Behandlungssumme.Parameters.ParamByName('ID').Value := MainMod.Behandlungen.FieldByName('ID').Value;
 MainMod.Behandlungssumme.Open;
Beim Open kommt diese Meldung:
EOleException mit Meldung '[Microsoft][ODBC-Treiber für Microsoft Access]Ungültiger Genauigkeitswert'.

Habe das eigentlich in Delpi 2007 immer so gemacht. Hat sich in DXE2 da was geändert oder wieso kommt diese Meldung und wie mach ich es dann richtig.

Danke für Eure Hilfe

Bernhard Geyer 11. Mai 2015 09:47

AW: Access Datenbank Parameters.ParamByName
 
"ich möchte eine Access Tabelle öffnen:" - Und oben steht Firebird?

Und ODBC? Geht du wirlich über den Umweg ODBC statt über dbGO direkter auf die DB zuzugreifen?

Lemmy 11. Mai 2015 09:48

AW: Access Datenbank Parameters.ParamByName
 
Hi,

was jetzt? Firebird oder Access? ODBC oder IBO??

wenn ODBC mit Access dann das hier mal versuchen:

Code:

SELECT Sum(GesamtHonorar) as Summe from Behandlungsleistungen where Behandlung = ?;

 MainMod.Behandlungssumme.Close;
 MainMod.Behandlungssumme.Parameters.Items[0].Value := MainMod.Behandlungen.FieldByName('ID').Value;
 MainMod.Behandlungssumme.Open;

Jasocul 11. Mai 2015 09:56

AW: Access Datenbank Parameters.ParamByName
 
Unter der Voraussetzung, dass "ID" numerisch ist, kannst du folgendes Versuchen:
Delphi-Quellcode:
 MainMod.Behandlungssumme.Close;
  MainMod.Behandlungssumme.Parameters.ParamByName('ID').AsInteger := MainMod.Behandlungen.FieldByName('ID').AsInteger;
  MainMod.Behandlungssumme.Open;
Die Benutzung von ".value" ist dasselbe, wie ".AsVariant", was auch aus Performance-Sicht nicht optimal ist.

Wenn du zum Beispiel in deiner Tabelle "Behandlungen" keine Ergebnis hast, bekommst du für Value ein "Null". Bei AsInteger bekommt man in dem Fall eine "0" geliefert.

Walter Landwehr 11. Mai 2015 10:03

AW: Access Datenbank Parameters.ParamByName
 
Danke Lemmy so hat es geklappt.

baumina 11. Mai 2015 10:07

AW: Access Datenbank Parameters.ParamByName
 
Evtl. ist auch die berechnete Summe größer als die Felddefinition zulässt.

p80286 11. Mai 2015 10:23

AW: Access Datenbank Parameters.ParamByName
 
Jetzt würde mich noch interessieren warum?
Eigentlich sollte es ja egal sein ob ich über den Index oder den Namen zugreife, eigentlich oder haben wir hier wieder einmal ein ganz besonderes Feature von Access vor uns?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.

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