![]() |
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: query
Firebird und query.recordcount
Hallo Leute
War ein langer Tag, ich kapiere es einfach nicht.
Delphi-Quellcode:
Die Zeile meine ich.
procedure seite_schreiben(ueberarray: array of integer);
var i :integer; begin for i := 0 to length(ueberarray) -1 do begin form1.queryinsert.Active := false; form1.trans.Active := false; form1.base.Connected := false; form1.base.Connected := true; form1.trans.Active := true; form1.queryinsert.SQL.Clear; form1.queryinsert.SQL.Add('select * from LESER where nummer =' +quotedstr(inttostr(ueberarray[i]))+''); form1.queryinsert.active := true; zeile := zeilereal; excel.cells[zeile,spalte].value := inttostr(ueberarray[i]) + '/' + inttostr(form1.queryinsert.RecordCount); inc(zeile); while not form1.queryinsert.Eof = true do begin showmessage(inttostr(form1.queryinsert.RecordCount)); anzahlzeitungen := anzahlzeitungen +1; excel.cells[zeile,spalte].value := form1.queryinsert.Fields.Fields[0].AsString + '/' + form1.queryinsert.Fields.Fields[2].AsString; inc(zeile); form1.queryinsert.Next; if form1.queryinsert.Eof = true then spalte := spalte + 1; end;//end while form1.queryinsert.Active := false; form1.trans.Active := false; form1.base.Connected := false; end;//end for end;
Delphi-Quellcode:
Er zeigt mir immer 1 an, obwohl es mehr sein sollten. Ansonsten funtzt alles wunderbar.
excel.cells[zeile,spalte].value := inttostr(ueberarray[i]) + '/' + inttostr(form1.queryinsert.RecordCount);
Die Showmessage() in der --While_Schleife-- habe ich nur eingefügt um zu kontrollieren wann er auf die volle Anzahl kommt. Sollte --Recordcount-- nicht die gesamte Anzahl der Datensätze aus der Query zurückgeben, und zwar sofort und nicht erst wenn ich die gesamten Datensätze durchlaufen habe. Danke im Voraus mato |
Re: Firebird und query.recordcount
.RecordCount scheint nur die gefetchten Datensätze zu berücksichtigen
|
Re: Firebird und query.recordcount
Danke erstmal. Gibts eine Möglichkeit an dieser Stelle des Codes an die Anzahl ranzukommen?
|
Re: Firebird und query.recordcount
Extra abfragen, BDE stilllegen!
|
Re: Firebird und query.recordcount
Na gut, muß mal sehen. Danke nochmal.
Mato |
Re: Firebird und query.recordcount
Hallo erstmal... :-D
wenn ich das richtig sehe möchtest du z.B. 1/10 angezeigt bekommen. ...da du bei jedem Schleifendurchlauf die Query neu absetzt hast du jeweils nur 1 Datensatz (RecordCount) als Ergebnis (Übereinstimmung mit Nummer) ...die maximale Anzahl der Datensätze gibt dir doch length(ueberarray) -1 an, oder ? :gruebel: |
Re: Firebird und query.recordcount
Zitat:
Ne, nicht ganz. Kurze Erklärung. In --üeberarray-- stehen Hausnummern. Unter jeder Hausnummer stehen dann verschiedene Namen, welche ich dann für jede Nummer haben möchte. In der ersten Abfrage stehen dann also 6 Datensätze, die ich dann vor der Ausgabe der einzelnen Namen haben möchte, nicht erst danach. Muß mal sehen wie ich das mache und in der Exceltabelle nicht mit den Zeilennummern nicht durcheinander komme. Mato |
Re: Firebird und query.recordcount
...ich glaube nicht so ganz, daß in der ersten Abfrage 6 Datensätze stehen, dann wäre RecordCount = 6 :???:
...visualisiere mal die Query in einem Grid und kontrolliere das Ergebnis der Abfrage... ...ich denke, das die SQL Abfrage wirklich nur einen Datensatz liefert. wie sehe denn der Wert von inttostr(ueberarray[i]) ausgeschrieben aus ? |
Re: Firebird und query.recordcount
Also. Die Anzahl der Datensätze ist 6. Ausgeschrieben ist es eine '81', eben die Hausnummer. Die Exceltabelle in die ich alles reinschreibe zeigt mir alle Namen korrekt an, alle schön untereinander. Über diesen Namen hätte ich aber gerne die Anzahl der Namen stehen, da steht aber nur jedesmal eine 1, nicht 6.
Mit dem --showmessage-- in der while-schleife lasse ich mir bei jedem Durchlauf (while) die recordcount anzeigen. Zählt wunderbar hoch, bis sechs. Die 6 erreicht er aber erst wenn ich alle durchlaufen habe, also bei --EOF--. Ich verstehe es ja auch nicht, ist aber so. mato |
Re: Firebird und query.recordcount
du durchläufst die Schleife 6 mal... bei jedem Durchlauf ist RecordCount 1 höher...
--> obwohl du jedesmal die Query neu absetzt :wiejetzt: ...warum holst du nicht alle Werte mit einer Query und durchläufst die Ergebnismenge mit der Schleife zum Eintragen in die Tabelle ? wie sehen die Werte von inttostr(ueberarray[i]) bei jedem Schleifendurchlauf aus ? wie ist der Aufbau von LESER ? [edit] ..fast übersehen... form1.queryinsert.Active := false; -- kann weg. ersetzen von form1.queryinsert.active := true; durch form1.queryinsert.open; Zitat:
[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz