AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FIBPlus - Fragen

Ein Thema von Hansa · begonnen am 22. Okt 2007
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

FIBPlus - Fragen

  Alt 22. Okt 2007, 18:44
Datenbank: IB/FB • Zugriff über: FIBPlus
es geht von hier aus weiter (wer jetzt noch was schreibt, der hat wohl FIBPlus und das von vorher passt so dann sowieso nicht ) :

http://www.delphipraxis.net/internal...=795905#795905

Das hier sind doch zwei Welten :

  TFIBQuery = class(TComponent,ISQLObject) Was ist das ? Von TComponent ausgehend wird alles neu gemacht. Anscheinend gab es keinen geeigneten Vorfahren. Eine solche Vorgehensweise ist hier zwar sehr oft zu besichtigen, in diesem Fall aber wohl tatsächlich nicht zu vermeiden gewesen. Denn das macht keiner freiwillig.

  TFIBCustomDataSet = class({$IFDEF D10+}TWideDataset{$ELSE}TDataset{$ENDIF},ISQLObject) Da siehts schon anders aus. Vor allem liegt da der Hund begraben, weswegen das Ganze TDataset-kompatibel ist. Selbst wenn da irgendwas 1 Millisekunde länger dauert, das DataSet würde ich trotzdem verwenden. So eine kurze Zeitspanne lässt sich wohl kaum genau messen. Mache mal den Rechner aus und starte das Query-Programm zuerst und dann das vom Dataset. Danach wieder Rechner aus und die beiden Programme in umgekehrter Reihenfolge starten. Könnte sein, dass das "Ergebnis" völlig anders aussieht.

Dann das mit GetTableName. Mache das für interne Zwecke z.B. so :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  DbDS.Close;
  DbDS.SelectSQL.Text := 'select RDB$RELATION_NAME from rdb$relations order by RDB$RELATION_NAME';
  DbDS.Open;
  DbDS.First;
  i := 0;
  while not DbDS.Eof do begin
    i := i + 1;
    DetailDS.Close;
    DetailDS.SelectSQL.Text := 'select count (*) AS ANZAHL from '+DbDS.FieldByName ('RDB$RELATION_NAME').AsString;
    DetailDS.Open;
    TableName := DbDS.FieldByName ('RDB$RELATION_NAME').AsString;
    Anzahl := DetailDS.FieldByName ('ANZAHL').AsString;
    if pos ('$',TableName) = 0 then begin
      if StrToInt (Anzahl) <> 0 then
        Memo1.Lines.Add(Tablename + blanks (20-length (TableName)) + ' '+ Anzahl)
      else
        Memo2.Lines.Add(Tablename + blanks (20-length (TableName)) + ' '+ Anzahl);
    end;
    DbDS.Next;
  end;
end;
Das SelectSQL am Anfang ermittelt zunächst mal die Tabellennamen. Ich will die Anzahl der Datensätze pro Tabelle wissen. Deshalb laufe ich die durch und lasse ein zweites DataSet die Anzahl ermiteln und zeige sie in einem Memo an.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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