Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Parameter mit NULL-Wert füllen (https://www.delphipraxis.net/155385-parameter-mit-null-wert-fuellen.html)

Nersgatt 21. Okt 2010 09:01

Datenbank: Firebird • Version: 2.5 • Zugriff über: DBExpress

Parameter mit NULL-Wert füllen
 
Moin,

ich hab eine Problem Parametern, die ich mit Null-Werten füllen möchte.
In der Regel mache ich das so:
Delphi-Quellcode:
q.ParamByName('BLA').Clear;
q.ParamByName('BLA').DataType := ftInteger;
q.ParamByName('BLA').Bound := True;
Das funktioniert auch ganz wunderbar.

Nun hab ich aber den Fall, dass ich den Datentyp nicht kenne. Die 2. Zeile kann ich also nicht füllen. Lasse ich sie weg, bekomme ich die Fehlermeldung:
Zitat:

Der dbExpress-Treiber unterstützt den Datentyp TDBXTypes.UNKNOWN nicht. Fehlermeldung des Herstellers: unknown ISC error 0.
Da ich den Feldnamen kenne, der gefüllt wird, könnte ich natürlich den Datentyp aus den Systemtabellen auslesen und entsprechend setzen. Aber den Aufwand möchte ich vermeiden. Insbesondere weil der Programmteil möglichst schnell laufen soll. Da wäre es nicht so schön, 100000 mal den Datentyp auszulesen.
Gibt es eine andere Möglichkeit, den Parameter auf NULL zu setzen, ohne Kenntnis des Datentyps?

Jens

idefix2 21. Okt 2010 09:29

AW: Parameter mit NULL-Wert füllen
 
Ich kann es nicht sicher sagen, aber vorstellen kann ich es mir nicht, weil ja die Grösse des Datenbereichs für die Datenübergabe eines Feldes vom Datentyp abhängt - auch wenn null übergeben wird, wird der Platz für die Daten reserviert.

Warum 100000 mal aus den Systemtabellen auslesen? Einmal aus den Tabellen auslesen und in einer geeigneten Struktur (Stringlist, hashmap o.ä.) speichern.

Nersgatt 21. Okt 2010 12:42

AW: Parameter mit NULL-Wert füllen
 
So hab ich es jetzt auch gelöst. Beim Start (einmal) die Feldtype in eine Liste einlesen und dann hinterher entsprechend wieder auslesen. Ist gar nicht mal so langsam geworden, wie ich befürchtet hab. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 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