Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TQuery function umstellen auf FibPlus (https://www.delphipraxis.net/137613-tquery-function-umstellen-auf-fibplus.html)

mkinzler 2. Aug 2009 21:18

Re: TQuery function umstellen auf FibPlus
 
Zitat:

Aber, warum sollte man QueryIsEmpty durch recordcount ersetzen?
Oder andersrum :zwinker:

hoika 2. Aug 2009 21:56

Re: TQuery function umstellen auf FibPlus
 
Hallo,

um nur herauszubekommen, wie viel Einträge existieren
(ohne alle Einträge zu brauchen),
reicht ein select count(*) .

Das wird auf dem Server ausgeführt.
Warum sollen alle Einträge zum Client gehen,
um nur zu wissen, wie viele Einträge es sind ?


Heiko

Eppos 3. Aug 2009 08:46

Re: TQuery function umstellen auf FibPlus
 
Ich habe eine Tabelle mit 100.000 Datensätze, diese werden kummuliert für Statistische Zwecke.
Einaml brauche ich die Anzahl für die Progressbar und im zweiten Schritt für die kummulierung.

hoika 3. Aug 2009 11:34

Re: TQuery function umstellen auf FibPlus
 
Hallo,

bei bestimmten Komponenten (z.B. BDE) wird bei einem Select Count(*)
lokal durchgezählt, d.h. alle Datensätze werden zum Client geladen
und fleissig durchgezählt.
Ob das FIBPlus auch so macht, sagt dir der SQL-Monitor.

Ab FB2.5 wird es übrigens eine schnellere interne Methode für select count(*) geben
(40-60% schneller).


Heiko

Eppos 6. Aug 2009 10:32

Re: TQuery function umstellen auf FibPlus
 
was jetzt noch aufgetaucht ist, ist folgender Fehler, wenn ich in der Where-Klausel ein Ü,Ä,...
drin habe kommt dieser Fehler:

Arithmetic overflow or divison by zero has occured.Arithmetic exception, numeric overflow, or string truncation.
Cannort transliterate character between charecter Sets.


Ich habe das charset "win1252" in der FibDatabase gesetzt.
In der Datenbank ist genau der selbe Wert hinterlegt.

Fehler kommt trotzdem.
Hat jemand eine Idee, woran es noch liegen kann?

mkinzler 6. Aug 2009 10:34

Re: TQuery function umstellen auf FibPlus
 
Wie sieht die Klausel aus?

hoika 6. Aug 2009 10:36

Re: TQuery function umstellen auf FibPlus
 
Hallo,

dein entsprechendes where-Feld
muss aich dieses charset haben.
Schau doch mal mit ibexpert nach.


Heiko

Eppos 6. Aug 2009 10:54

Re: TQuery function umstellen auf FibPlus
 
@ mkinzler
SQL-Code:
where ID = 1 and UPPER(Name) like Upper('%Ü%') ORDER BY Name DESC
@ hoika
Das Feld hat das gleiche CharSet


Info:
Über den DB-Explorer lässt sich der SQL einwandfrei ausführen. Ich arbeite auch noch parallel mit TDatabase, dort funktioniert es auch.

mkinzler 6. Aug 2009 10:58

Re: TQuery function umstellen auf FibPlus
 
Es könnte uach ein Fehler in der Zeicheninterpretation der IDE sein.

Eppos 6. Aug 2009 11:14

Re: TQuery function umstellen auf FibPlus
 
Kann ich also gar nichts machen?

mkinzler 6. Aug 2009 11:17

Re: TQuery function umstellen auf FibPlus
 
Geb mal den Code satt des Zeichens an

Eppos 6. Aug 2009 11:19

Re: TQuery function umstellen auf FibPlus
 
Code? Welcher Code?

mkinzler 6. Aug 2009 11:21

Re: TQuery function umstellen auf FibPlus
 
Code des Zeichens

Eppos 6. Aug 2009 11:42

Re: TQuery function umstellen auf FibPlus
 
Ich habe den Code so geändert:

Delphi-Quellcode:
like Upper(''%'+#220+'%'')
kommt aber noch der gleiche Fehler.

mkinzler 6. Aug 2009 12:46

Re: TQuery function umstellen auf FibPlus
 
Dann scheint doch ein Problem mit den Codepagen zu bestehen

hoika 6. Aug 2009 12:54

Re: TQuery function umstellen auf FibPlus
 
Hallo,

schau mal hier
Charsets

Dort steht u.a.

The UPPER() function

UPPER() only works correctly if there is a collation defined for the parameter field:

WHERE UPPER (NAME COLLATE DE_DE) = 'MÜLLER';


Heiko

mkinzler 6. Aug 2009 13:01

Re: TQuery function umstellen auf FibPlus
 
Also bei mir funktionierte es.
Ich verwende allerdings D2009 + IBDAC

Eppos 6. Aug 2009 13:45

Re: TQuery function umstellen auf FibPlus
 
Ich habe das von hoika jetzt mal ausprobiert,
da schreibt er folgendes:

collation DE_DE is not valid for specified character set

hoika 6. Aug 2009 14:17

Re: TQuery function umstellen auf FibPlus
 
Hallo,

SQL-Code:
Select name from personal
WHERE UPPER (NAME COLLATE WIN1252) = 'MÜLLER';
Wenn es trotzem nicht geht:
Mach mal in ibexpert Doppelklick auf die Tabelle, dann rechts DDL
und postedas mal (incl. das SET NAMES) ganz oben.


Heiko

Eppos 6. Aug 2009 16:22

Re: TQuery function umstellen auf FibPlus
 
Jetzt bekomme ich den anderen Fehler wieder: arithmetic...


SQL-Code:
/******************************************************************************/
/****              Generated by IBExpert 06.08.2009 17:20:08               ****/
/******************************************************************************/

set names win1252;



/******************************************************************************/
/****                                Tables                               ****/
/******************************************************************************/



create table RE_B (
    id                 integer,
    datum              date,
    ma_id              integer,
    fi_id              integer,
    te_ex              varchar(30) collate pxw_intl850,
    te_in              varchar(5) collate pxw_intl850,
    mi_1                integer,
    mi_2                integer,
    wear_id            integer,
    ku_rz              varchar(3) collate pxw_intl850,
    li_kz              char(1) default ''
);




/******************************************************************************/
/****                               Indices                               ****/
/******************************************************************************/

create unique index idre_b on re_b (id);


/******************************************************************************/
/****                              Privileges                             ****/
/******************************************************************************/

mkinzler 6. Aug 2009 17:35

Re: TQuery function umstellen auf FibPlus
 
Ich würde den unique index entfernen und eine pk constraint für id anlegen

hoika 7. Aug 2009 07:02

Re: TQuery function umstellen auf FibPlus
 
Hallo,

das sind keine de_de collates,
nimm die collates testweise mal ganz raus
oder ersetz sie durch collate_de_de (?).


Heiko

Eppos 7. Aug 2009 11:26

Re: TQuery function umstellen auf FibPlus
 
@Hoika
Meisnt du auf der datenbank die Collates raus nehmen, bei der Tabelle?

hoika 7. Aug 2009 11:50

Re: TQuery function umstellen auf FibPlus
 
Hallo,

bei der Tabelle.
Dieses alte pdx Zeug gefällt meinen Augen gar nicht :)


Heiko

Eppos 7. Aug 2009 12:59

Re: TQuery function umstellen auf FibPlus
 
Habe ich jetzt durch win1252 ersetzt, gar nichts rein schreiben geht auch nicht.
Habe es getestet, gleicher Fehler wieder, arithmetic...

Also ich glaube, die Umstellung scheitert von der BDE weg zugehen... :?
Noch eine Idee?

hoika 7. Aug 2009 20:32

Re: TQuery function umstellen auf FibPlus
 
Hallo,

neeeee ;)

baue doch mal ne Minimal-FDB und stelle die hier rein
+ die Query.


Heiko

Eppos 25. Aug 2009 18:47

Re: TQuery function umstellen auf FibPlus
 
das obige Problem hat sich von selbst gelöst, es taucht plötzlich nicht mehr auf und ich
weiß nicht was ich gewändert habe, naja...

Jetzt stellt sich folgendes Problem in den weg, wenn ich diesen SQl absetze
SQL-Code:
Select * from RDB$Relation_Fields where RDB$Relation_Name = 'TABELLE' order by RDB$Field_Position
über FibDataSet dann werden beim auslesen mit fieldbyname nur 10 Stellen angezeigt.
Weis jemand woran das liegen kann?

hoika 26. Aug 2009 06:30

Re: TQuery function umstellen auf FibPlus
 
Hallo,

welches Feld genau ?
Wie sieht deine Variable aus ? (Daten-Typ)


Heiko

Eppos 26. Aug 2009 07:30

Re: TQuery function umstellen auf FibPlus
 
Delphi-Quellcode:
Query.FieldByName( 'RDB$Field_Name' ).AsString
Dieses Feld lese ich aus.
Und ein Feld heisst: "Aenderungs_Datum"
Aber wenn ich dieses z.B. in einer ShowMessage anzeige kommen immer nur die ersten 10 Stellen "Aenderungs".

Wenn ich den SQL über den DBExplorer oder über TQuery aufrufe, wird die Bezeichnung richtig angezeigt.

alex517 26. Aug 2009 08:48

Re: TQuery function umstellen auf FibPlus
 
Zitat:

Zitat von Eppos
über FibDataSet dann werden beim auslesen mit fieldbyname nur 10 Stellen angezeigt.
Weis jemand woran das liegen kann?

Da war mal ein Problem in der Version 6.9.6 bei Verwendung bestimmter CharSets (u.a. auch ISO8859_1).
Könnte das gleiche sein.
Lösung siehe hier.

alex

Eppos 26. Aug 2009 18:15

Re: TQuery function umstellen auf FibPlus
 
super,
Danke!
hat geklappt


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.
Seite 2 von 2     12   

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