Re: TQuery function umstellen auf FibPlus
Zitat:
|
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 |
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. |
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 |
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? |
Re: TQuery function umstellen auf FibPlus
Wie sieht die Klausel aus?
|
Re: TQuery function umstellen auf FibPlus
Hallo,
dein entsprechendes where-Feld muss aich dieses charset haben. Schau doch mal mit ibexpert nach. Heiko |
Re: TQuery function umstellen auf FibPlus
@ mkinzler
SQL-Code:
@ hoika
where ID = 1 and UPPER(Name) like Upper('%Ü%') ORDER BY Name DESC
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. |
Re: TQuery function umstellen auf FibPlus
Es könnte uach ein Fehler in der Zeicheninterpretation der IDE sein.
|
Re: TQuery function umstellen auf FibPlus
Kann ich also gar nichts machen?
|
Re: TQuery function umstellen auf FibPlus
Geb mal den Code satt des Zeichens an
|
Re: TQuery function umstellen auf FibPlus
Code? Welcher Code?
|
Re: TQuery function umstellen auf FibPlus
Code des Zeichens
|
Re: TQuery function umstellen auf FibPlus
Ich habe den Code so geändert:
Delphi-Quellcode:
kommt aber noch der gleiche Fehler.
like Upper(''%'+#220+'%'')
|
Re: TQuery function umstellen auf FibPlus
Dann scheint doch ein Problem mit den Codepagen zu bestehen
|
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 |
Re: TQuery function umstellen auf FibPlus
Also bei mir funktionierte es.
Ich verwende allerdings D2009 + IBDAC |
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 |
Re: TQuery function umstellen auf FibPlus
Hallo,
SQL-Code:
Wenn es trotzem nicht geht:
Select name from personal
WHERE UPPER (NAME COLLATE WIN1252) = 'MÜLLER'; Mach mal in ibexpert Doppelklick auf die Tabelle, dann rechts DDL und postedas mal (incl. das SET NAMES) ganz oben. Heiko |
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 ****/ /******************************************************************************/ |
Re: TQuery function umstellen auf FibPlus
Ich würde den unique index entfernen und eine pk constraint für id anlegen
|
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 |
Re: TQuery function umstellen auf FibPlus
@Hoika
Meisnt du auf der datenbank die Collates raus nehmen, bei der Tabelle? |
Re: TQuery function umstellen auf FibPlus
Hallo,
bei der Tabelle. Dieses alte pdx Zeug gefällt meinen Augen gar nicht :) Heiko |
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? |
Re: TQuery function umstellen auf FibPlus
Hallo,
neeeee ;) baue doch mal ne Minimal-FDB und stelle die hier rein + die Query. Heiko |
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:
über FibDataSet dann werden beim auslesen mit fieldbyname nur 10 Stellen angezeigt.
Select * from RDB$Relation_Fields where RDB$Relation_Name = 'TABELLE' order by RDB$Field_Position
Weis jemand woran das liegen kann? |
Re: TQuery function umstellen auf FibPlus
Hallo,
welches Feld genau ? Wie sieht deine Variable aus ? (Daten-Typ) Heiko |
Re: TQuery function umstellen auf FibPlus
Delphi-Quellcode:
Dieses Feld lese ich aus.
Query.FieldByName( 'RDB$Field_Name' ).AsString
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. |
Re: TQuery function umstellen auf FibPlus
Zitat:
Könnte das gleiche sein. Lösung siehe hier. alex |
Re: TQuery function umstellen auf FibPlus
super,
Danke! hat geklappt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 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