AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze Zählen klappt nicht ! Finde Fehler nicht.
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze Zählen klappt nicht ! Finde Fehler nicht.

Ein Thema von wlfmario · begonnen am 20. Okt 2005 · letzter Beitrag vom 21. Okt 2005
Antwort Antwort
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#1

Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 20. Okt 2005, 20:05
Datenbank: Interbase • Zugriff über: IB
Hallo,

ich benutze eine Interbase Datenbankmit zwei tabellen.
Jetzt möchte ich wissen wie viel Datensätze in einer Tabelle sind und benutze folgende Zeilen:
Delphi-Quellcode:
procedure TFilmFact.FormActivate(Sender: TObject);
 var anzKunden: integer;
begin
  DM.IBKunde.Close;
  DM.IBKunde.SelectSQL.Text := 'SELECT Count(*) FROM KUNDEN';
  DM.IBKunde.Open;
  AnzKunden := DM.IBKunde.Fields[0].AsInteger;
  StatusBar1.Panels[0].Text := 'Kunden Gesammt: '+ inttostr(AnzKunden);
end;
in dem Form wo das Script leigt, sind noch drei DBGrid's Inkl. je einen Datasource. Die IBDataSet ist auf Activ = True.
Wenn ich das Script so ausführe, kommt folgende Meldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt FilmFactProj.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung: 'IBKunde: Das Feld 'KDID' wurde nicht gefunden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Wenn ich das DM.IBKunde.Close weck mache, kommt diese Meldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt FilmFactProj.exe ist eine Exception der Klasse EIBClientError aufgetreten. Meldung: 'Größenfehler - Feld KDID ist zu klein für die Daten'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Meine vermutung ist, das es an den TataSourcen hängt.
Ich möchte einfach nur die Anzahl der Datensätze in einer Variabel stehen haben.

Bevor mich jemand da drauf Aufmerksam macht, das dieses schon in einem anderem Forum steht ! Ja ich habe das auch woander gepostet, leider nicht die Antworten bekommen die ich suchte. Ich möchte nur wissen wo der Hacken ist um mein Hintergrund Wissen zu vertieven. Mit Aussagen wie Lies ein Buch oder Schmeichelnd umschrieben du bist zu Blöd kann ich nichts anfagen.
Ich hoffe, das mir Einsteiger jemand erkären kann wie so die Fehler kommen und was ich bei einer DB wie Interbase Beachten muß in Delphi.

Danke schon einmal für die Antworten.
Mario
  Mit Zitat antworten Zitat
Hansa

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

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 20. Okt 2005, 22:54
Zitat von wlfmario:
...Bevor mich jemand da drauf Aufmerksam macht, das dieses schon in einem anderem Forum steht ! Ja ich habe das auch woander gepostet, leider nicht die Antworten bekommen die ich suchte... Schmeichelnd umschrieben du bist zu Blöd kann ich nichts anfagen.
Ich hoffe, das mir Einsteiger jemand erkären kann wie so die Fehler kommen...
Fehlt vielleicht nur die Geduld ? Was soll denn das : AnzKunden := DM.IBKunde.Fields[0].AsInteger; Was soll das Fields [0] ? Woher soll die DB wissen, was AnzKunden ist usw. ??
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 20. Okt 2005, 22:59
Zitat von Hansa:
Was soll denn das : AnzKunden := DM.IBKunde.Fields[0].AsInteger; Was soll das Fields [0] ? Woher soll die DB wissen, was AnzKunden ist usw. ??
Fields[0] ist das erste Feld des Resultsets. Im Resultset ist nur eine Spalte drin, nämlich die Anzahl der Datensätze. Und diesen Wert speichert er als Integer in der Variable AnzKunden. Also darin seh ich keinen Fehler.
  Mit Zitat antworten Zitat
Hansa

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

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 20. Okt 2005, 23:50
Ja, das stimmt. Im Prinzip müßte es so schon gehen. Einen Array - Index anzugeben, das ist aber schlecht. 8) Vielleicht liegts nur an dem AS.

Delphi-Quellcode:
  DM.KuDS.Close;
  DM.KuDS.SelectSQL.TEXT :='SELECT COUNT (*) AS Z FROM KUNDE';
  DM.KuDS.Open;
  Button1.Caption := IntToStr (DM.KuDS.FieldByName ('Z').AsInteger);
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 06:34
Hai wlfmario,

kann es sein das Du dem DataSet IBKunde über den Feldeditor (rechter Mausklick auf die Komponente) Felder zugewiesen hast?
Wenn ja wäre dies nämlich die Erklärung für den Fehler. Wenn im Feldeditor Einträge vorhanden sind erwartet das DataSet diese auch bei jeder SELECT-Abfrage und giebt genau diese Felder zurück.

Ich würde an deiner Stelle eine extra Funktion in deinem DataModule erzeugen welches Dir die Anzahl der Datensätze aus einer Tabelle zurückgibt:
Delphi-Quellcode:
function TDM.TableCount(aTable: string): integer;
begin
  Result := -1;
  with TIBQuery.Create(nil) do
  begin
    try
      Database := IBDataBase1;
      Close;
      SQL.Text := Format('SELECT Count(*) FROM %s', [aTable]);
      Open;
      Result := Fields[0].AsInteger;
    finally
      Free;
    end;
  end;
end;
Diese Funktion kannst Du dann in deiner Form benutzen.
Delphi-Quellcode:
procedure TFilmFact.FormActivate(Sender: TObject);
begin
  StatusBar1.Panels[0].Text := Format ('Kunden Gesammt: %d',[DM.TableCount('kunde')]);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#6

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 07:13
Guten Morgen Mario,
wie Sharky schon geschrieben hat ...

Irgendetwas an Deinem Programm (und nicht der dargestellte Code) verlangt nach dem Feld KDID. Eine Möglichkeit sind die von Sharky genannten Datenbankfelder die über den Feldeditor der Query oder Tabelle festgelegt sein könnten.

Ein anderer Grund könnten Objekte vom Register "DB-Steuerung" auf Deinem Formular sein. Wenn eines davon auf dieses Feld verweist (z.B. weil Du vorher mit dieser Abfrage die Inhalte der Tabelle dargestellt hast) dann kracht es jetzt, weil die neue Abfrage nur ein Feld mit der Summe zurückliefert.

Viel Erfolg
Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#7

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 08:02
Zitat von Sharky:
Delphi-Quellcode:
function TDM.TableCount(aTable: string): integer;
begin
  Result := -1;
  with TIBQuery.Create(nil) do
  begin
    try
      Database := IBDataBase1;
      Close;
      SQL.Text := Format('SELECT Count(*) FROM %s', [aTable]);
      Open;
      Result := Fields[0].AsInteger;
    finally
      Free;
    end;
  end;
end;
Aha das bringt schon viel ! Danke für die tollen Erkärungen.
Gibt es eine möglichkei auch ohne TIBQuery damit zu arbeiten ?
Mario
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 08:10
Hallo wlfmario,

es gibt die Alternative mit einer IBTable zu arbeiten und mit FetchAll alle Datensätze zu holen. Dann kannst du mit RecordCount die Anzahl der Datensätze ermitteln. Dabei werden aber alle Datensätze ggf. übers Netz übertragen, was natürlich um einiges länger dauert als das Absetzen einer Query, die nur einen Wert übers Netz als Antwort liefert.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

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

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 08:41
Ne, IBTable ist nicht die Alternative. Sowohl IBTable als auch IBQuery ist nur für BDE geschädigte gedacht. 8) Benutze besser immer IBDataset.
Gruß
Hansa
  Mit Zitat antworten Zitat
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#10

Re: Datensätze Zählen klappt nicht ! Finde Fehler nicht.

  Alt 21. Okt 2005, 08:45
Das wollte ich wissen !

Da ich IBDataSet in meinem Prg. benutze und nicht IBQuerry oder Table.
Mario
  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 02:09 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