Autor Beitrag
haribert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98 SE, Win 2000, Win XP
Delphi 5 prof. Delphi 7 prof.
BeitragVerfasst: Fr 27.06.08 14:50 
Hallo,

vielleicht steh ich einfach nur auf dem Schlauch, aber da ich nicht weiter komme frage ich einfach mal:

In einer Dbase-Datenbank habe ich mit meiner Anwendung einige Felder (ladenqm_mi, ladenqm2_mi,..) automatisch erstellt und zwar mit dem Typ ftFloat.

ALTER TABLE "adr.dbf"
ADD COLUMN ladenqm_mi FLOAT (0),
ADD COLUMN ladenqm2_mi FLOAT (0),
...

Ausgeführt hab ich das Ganze dann mit Query.ExecSQL

Diese Felder werden auch wirklich erzeugt und in der Anwendung benutzt, gefüllt, mit den Inhalten wird gerechnet etc. alles einwandfrei. In einem von mir geschriebenen Reporttool will ich jetzt über eines dieser Felder einen Filter legen, also mit Local-SQL eine Klausel die folgendermaßen aussieht:

Select
adr.name1,
adr.ladenqm_mi,
adr.ladenqm2_mi,
adr.name2
from adr
where (adr.ladenqm_mi between 30 and 50)
order by name1 ASC

Jetzt kommen als Ergebnisse Datensätze raus, bei denen der Wert weit jenseits des Bereichs ist und andere, die drin sein müßten, fehlen - ich bin da momentan etwas ratlos.

Es existieren in der Tabelle übrigens noch zahlreiche weitere Felder, die ich irgendwann mal manuell mit der Datenbankoberfläche angelegt habe. Filtern über diese Felder klappt fehlerfrei, nur diese automatisch angelegten Felder tun einfach nicht - ich kann mir das nicht erklären.

Viele Grüße
Uwe

_________________
Dieser Beitrag besteht aus 100% recyclingfähigen und glücklichen Elektronen!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 27.06.08 16:19 
Ersetze mal das BETWEEN durch 2 Bedingungen

_________________
Markus Kinzler.
haribert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98 SE, Win 2000, Win XP
Delphi 5 prof. Delphi 7 prof.
BeitragVerfasst: Sa 28.06.08 12:45 
hatte ich auch schon mal gemacht - das Ergebnis war leider das gleiche.

_________________
Dieser Beitrag besteht aus 100% recyclingfähigen und glücklichen Elektronen!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 28.06.08 12:47 
Erstelle mal die Indizes neu. Ist ein Index auf dem Feld?

_________________
Markus Kinzler.
haribert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98 SE, Win 2000, Win XP
Delphi 5 prof. Delphi 7 prof.
BeitragVerfasst: Mo 30.06.08 08:44 
Nein, ein Index ist nicht auf dem Feld. Ich verwende die Felder ganz normal in einer Anwendung, und in der anderen Anwendung - dem Reporttool - lasse ich sie auch ausgeben, das funktioniert auch, nur die Filterung über die Felder funktioniert nicht.

Ich versteh vor allem nicht, warum das nur bei den automatisch erstellten Feldern so ist, bei denen, die ich mit der (Borland)Datenbankoberfläche manuell erstellt habe, werden richtig im Filter verwendet. Was ich auch nicht verstehe ist, wenn ich mir die Datenbankstruktur in der (Borland)Datenbankoberfläche anzeigen lasse, werden mir bei den automatisch per code erzeugten Feldern kein Feldtyp und Größe angezeigt, bei den anderen von Hand erstellten ist alles komplett sichtbar.

_________________
Dieser Beitrag besteht aus 100% recyclingfähigen und glücklichen Elektronen!
haribert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98 SE, Win 2000, Win XP
Delphi 5 prof. Delphi 7 prof.
BeitragVerfasst: Fr 04.07.08 13:47 
Ich habe festgestellt, daß die Werte in meinem Beispiel korrekt verwendet werden, wenn man sie z.B. so anspricht: Table1Ladenqm.asFloat. Setzt man einen Filter auch in der TTable-Komponente kommt wieder Unfug raus.

Gibt es u.U. eine Typumwandlung für SQL-Abfragen mittels der BDE für eine dBase-Datenbank bei Verwendung einer TQuery-Komponente? Ich hab die Typumwandlung CINT(ladenqm_mi) gefunden, aber die klappt nicht mit Local-SQL der BDE sondern ist nur Bestandteil der Jet-SQL.

Könnte mein Problem damit zu tun haben, daß die Datenbank 132 Datenfelder hat und das Feld ladenqm_mi das Feld Nummer 96 ist? Alles reichlich dubios, vielleicht stehe ich aber auch einfach auf dem Schlauch...

_________________
Dieser Beitrag besteht aus 100% recyclingfähigen und glücklichen Elektronen!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 04.07.08 16:02 
ausblenden Delphi-Quelltext
1:
DataSet.FieldBynMa('<Name'>).asInteger;					

oder Trunc()

_________________
Markus Kinzler.