AGB  ·  Datenschutz  ·  Impressum  







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

RecordCount

Ein Thema von michael.cohrs · begonnen am 28. Nov 2005 · letzter Beitrag vom 29. Nov 2005
Antwort Antwort
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#1

RecordCount

  Alt 28. Nov 2005, 12:52
Datenbank: Interbase • Zugriff über: anderes
Hallo zusammen,

ich versuche hier gread ne kleine Dephi.NET anwendung zu schreiben, der Interbase Server läuft auf einem entfernten Rechner. Ich möchte nun die Anzahl der enthaltenen Datensätze lesen, leider gibt es scheinbar soetwas wie RecordCount nicht mehr. Kann mir jemand sagen oder vieleicht nen CodeSnipsel zur Verfügung stellen wie ich an die Anzahl der Datensätze komme?

Vielen Dank

Michael
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von BeerBear
BeerBear

Registriert seit: 23. Aug 2005
Ort: Lübeck
85 Beiträge
 
#2

Re: RecordCount

  Alt 28. Nov 2005, 13:11
Keine Ahnung von .NET, aber hier hätte ich n SQL Statement für dich.
select count(*) from TABELLE
Der Fehler sitzt immer vor dem Bildschirm.
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: RecordCount

  Alt 28. Nov 2005, 13:48
Hm, darauf würde ich mich aber nicht verlassen, wenn man mit den Daten iterieren möchte.

Ein
SELECT * FROM user WHERE name='Maier' gibt im Query.Recordcount genau die Anzahl der Datensätze zurück, die in dieser Abfrage angefallen sind. Wenn man z.B. so weiterarbeiten möchte:

Delphi-Quellcode:
Query.Open;
iRecordCount:=Query.Recordcount;
ShowMessage(inttostr(iRecordCount)+' Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');
While not Query.eof do
begin
    mache was mit den Records
    Query.Next;
end;
ist man auf der sicheren Seite.

Wenn man jetzt aber den Weg zu Fuß macht mit:

Delphi-Quellcode:
Query.SQL.Text:='SELECT COUNT(*) FROM user WHERE name='Maier'';
Query.Open;
iRecordCount:=Query.Fields[0].asInteger;
ShowMessage(inttostr(iRecordCount)+' Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');

und dann ein

For ix:=0 to iRecordCount do
begin
   mache was mit den Records
   Query.Next;
end;
kann es unter Umständen sein, dass dies durch den zeitlichen Abstand nich immer zu den gewünschten Ergebnissen führt.

Wenn es nicht anders geht, wäre evtl. eine Alternative bei Variante 2 den Table solange zu locken.

Gruß Igotcha
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#4

Re: RecordCount

  Alt 28. Nov 2005, 13:51
das problem ist das ich bei .net keine query habe und es gibt dort ebenfalls keine fields mehr so wie ich es aus den älteren delphi versionen kenne. mir fehlen die kenntnisse in delphi .net um an die anzahl der einträge der datenbank zu kommen
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von BeerBear
BeerBear

Registriert seit: 23. Aug 2005
Ort: Lübeck
85 Beiträge
 
#5

Re: RecordCount

  Alt 29. Nov 2005, 17:00
Wenn du irgendwie n SQL Statement "ablassen" kannst, sollte mein Statement oben dich weiterbringen.
Eine where Clause kannst du bei Bedarf auch dranhängen.
Der Fehler sitzt immer vor dem Bildschirm.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: RecordCount

  Alt 29. Nov 2005, 17:24
Hier mal ein Schnipsel, den man hier mit etwas Mühe auch selbst gefunden bzw daraus abgeleitet hätte.
Delphi-Quellcode:
var
  connection : IDbconnection;
  command : IDbCommand;
  reader : IDataReader;
  parameter : IDataParameter;
begin

  connection := deineConnection;
  command := connection.CreateCommand();
  try
    command.CommandText := 'SELECT X FROM Y WHERE Z = :Z';
    parameter := command.CreateParameter();
    command.Parameters.Add(parameter);
    parameter.DbType := DbType.Int32;
    parameter.Value := 1;
    
    reader := command.ExecuteReader();
    try
      while reader.Read() do
       irgendeinContainer.Add(new SomeClass(reader.GetInt32(0)));
    finally
      reader.Dispose();
    end;
  finally
    command.Dispose();
  end;
  Anzahl := irgendeinContainer.Count;
  // mache was mit den Daten...
Für einen einzelnen Wert würde auch das reichen:

Delphi-Quellcode:
  command := connection.CreateCommand();
  try
    command.CommandText := 'SELECT count(X) FROM Y WHERE Z = :Z';
    parameter := command.CreateParameter();
    command.Parameters.Add(parameter);
    parameter.DbType := DbType.Int32;
    parameter.Value := 1;
    Anzahl := command.ExecuteScalar() as Integer;
  finally
    command.Dispose();
  end;
Auch das war eigentlich ziemlich offensichtlich. Schaue mal in die SDK Doku (findest du im Start menü), da werden sie geholfen.
Robert Giesecke
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#7

Re: RecordCount

  Alt 29. Nov 2005, 18:24
Vielen Dank für eure Hilfe,

ich habe das Problem mit eurer Hilfe gelöst, irgendwie hab ich den Baum vor lauter Blätter nicht gesehen. Einen schönen Abend euch und nochnmals vielen Dank

Michael Cohrs
Michael Cohrs
  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 00:28 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