Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TIBStoredProc und BIGINT Parameter (https://www.delphipraxis.net/82810-tibstoredproc-und-bigint-parameter.html)

Meta777 20. Dez 2006 18:21

Re: TIBStoredProc und BIGINT Parameter
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von Meta777
@hansa: Das es hier um Int64 geht haste wohl übersehen? :wink:

Mann, mann, ein falsches Wort und es ist schon zuviel verlangt, dass die Beteiligten mal ihr Gehirn einschalten. :mrgreen: Man gebe einen . ein und dann noch ein "A". Was sieht man ? AsInt64, AsBcd, AsExtentded usw. Muss man halt selber mal überlegen, was am besten passt.

Ich komme schon zu Rande mit meiner IDE... Awa Recht haste; bei .Params gibt es ein AsInt64 nur wenn die Procedure ausgeführt wird gibs eine "Ungültige Datenkonvertierung" Exception. Deswegen wahrscheinlich der Vorschlag von Lemmy zum TIBDataset zu Wechseln, da ja wohl die IBX nicht ganz "fertig" entwickelt worden waren bzw. TIBQuery und andere Kompos "nicht benutzt werden" sollten, orso :roll: ...

Hansa 20. Dez 2006 18:34

Re: TIBStoredProc und BIGINT Parameter
 
Zitat:

Zitat von Meta777
Ich komme schon zu Rande mit meiner IDE...

Mit Google aber anscheinend nicht. 8) Mein Beispiel war schon die Umsetzung in Delphi. Und zwar von so was :

Zitat:

Datensätze pro Tabelle in einer DB
Mit folgender Stored Procedure kann man sich schnell einen Überblick über die Anzahl der Datensätze in allen Tabellen einer Datenbank verschaffen:

SQL-Code:
CREATE PROCEDURE SP_SERVERISTATISTIK
RETURNS (
    TABLOAD VARCHAR(50),
    TABSIZE BIGINT)
AS
begin
   for
     SELECT RDB$RELATION_NAME
     FROM RDB$RELATIONS
     WHERE
     (RDB$RELATION_NAME NOT LIKE 'RDB$%')
     and
     (RDB$VIEW_SOURCE IS NULL)
     INTO
     :TABLOAD
   DO
   BEGIN
     execute statement 'SELECT CAST(COUNT(*) AS BIGINT) FROM "' || TABLOAD || '"'
     INTO :TABSIZE;
     suspend;
   END
end
Die erste Abfrage selektiert alle echten Tabellen (RDB$VIEW_SOURCE IS NULL), die keine Systemtabellen sind (RDB$RELATION_NAME NOT LIKE 'RDB$%').

Pro Tabelle wird die Anzahl der Datensätze ausgelesen.



Diese Stored Procedure kann man wie eine Tabelle abfragen:

SELECT * FROM SP_SERVERISTATISTIK;
Quelle : http://www.rrze.uni-erlangen.de/hilf...bird-faq.shtml

Wiederholung : den Rest macht As??????

Lemmy 21. Dez 2006 09:01

Re: TIBStoredProc und BIGINT Parameter
 
Guten Morgen,

vielleicht liegt es an mir, dass ich nicht kapiere was Du uns mitteilen willst Hansa. Fakt ist halt, dass Teile von IBX (zumindest in der Version die ich vorliegen habe) INT64 nicht unterstützt, da kannst Du noch so oft AS schreiben - IBDataSet/IBStoredProc.ParamByName().AsInt64 gibt's halt nicht... :-)

Evtl. gäb es über Umwege die Möglichkeit in Delphi wieder nen Int64 zu bekommen (ASString und denn StrToInt64) aber das habe ich nicht probiert. Ich weiß nur, dass ich es mal gemacht habe - und es hat auch funktioniert.

@Meta777: Leider bin ich gestern nicht mehr dazu gekommen meinen Rechner anzumachen....

Lemmy

Meta777 21. Dez 2006 12:08

Re: TIBStoredProc und BIGINT Parameter
 
Zitat:

Zitat von Lemmy
Evtl. gäb es über Umwege die Möglichkeit in Delphi wieder nen Int64 zu bekommen (ASString und denn StrToInt64) aber das habe ich nicht probiert. Ich weiß nur, dass ich es mal gemacht habe - und es hat auch funktioniert.

Mit dem TIBDataSet funktioniert es! Sowohl Input- als auch Output-Parameter kann man damit lesen und schreiben. Mit IBStoredProc funktioniert es nicht, jedenfalls kann man kein Int64 Param als String setzen (Ungültige Datenkonvertierung bei .ExecProc...).

Zitat:

Zitat von Lemmy
@Meta777: Leider bin ich gestern nicht mehr dazu gekommen meinen Rechner anzumachen....

Wenn du es noch schaffst wäre es schön. Denn obwohl es mit TIBDataset als String ja geht wäre eine Alternative, vllt. bessere Lösung nicht verkehrt. :stupid:

Shalom

Lemmy 23. Dez 2006 10:43

Re: TIBStoredProc und BIGINT Parameter
 
Hi Meta,

sorry, dass es so lange gedauert hat...

Im Moment bin ich total von mir überrascht ;-) Denn ich habe das Problem genau so gelöst:

Delphi-Quellcode:
function GetLargeInt(DataSet:TIBDataset; FieldName:String; FieldValue:TpInt64):boolean;
begin
  try
    FieldValue^:=StrToInt64(DataSet.Fields.FieldByName(FieldName).AsString);
    result:=true;
  except
    result:=false;
  end;
end;
Damals hatte ich mich einige Zeit mit dem Problem beschäftigt. Allerdings kann es sein, dass neuere Versionen von IBX den Int64 inzwischen besser unterstützen, ich habe die 7.04, da bei mir mal ne neuere Version mit FB 1.5 Probleme gemacht hat.

Grüße
Lemmy

Meta777 23. Dez 2006 23:51

Re: TIBStoredProc und BIGINT Parameter
 
Hi Lemmy,

danke das du dir noch die Mühe gemacht hast und es rausgesucht hast.
Das es so ja mit den StrToInt64 geht, ist es ja auch ok.
Aber mal noch ne andere dowe :stupid: Frage: Wo gibts die aktuellen Versionen der IBX?
Wir nutzen auch nur die, die mit Delphi 7 mitgeliefert werden...

Danke. Shalom und gesegnete Weihnachten :)

MagicAndre1981 24. Dez 2006 01:12

Re: TIBStoredProc und BIGINT Parameter
 
Zitat:

Zitat von Meta777
Aber mal noch ne andere dowe :stupid: Frage: Wo gibts die aktuellen Versionen der IBX?
Wir nutzen auch nur die, die mit Delphi 7 mitgeliefert werden...

Auf CodeCentral gibts die IBX 7.11 als Update für D7.


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