AGB  ·  Datenschutz  ·  Impressum  







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

Reportproblem

Ein Thema von manfred_h · begonnen am 10. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

Reportproblem

  Alt 10. Jul 2009, 10:48
Datenbank: Firebird • Version: 2.1 • Zugriff über: Fibplus
Hallo zusammen

in einem Report möchte ich eine zusammenfassung div. Tabellen darstellen.
Das Problem ist das die Details immer leer sprich 0 sind.

Delphi-Quellcode:
procedure TDM_member.print_camps_dist_ov(Sender: TObject);
begin
  with DM_reports.camps do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Text :=('SELECT * FROM CAMPS ORDER BY C_NO');
    Open;
  end;
  with DM_reports.Default_OV do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add
      ('SELECT '+
       '(SELECT COUNT( NAME ) FROM HOTEL WHERE (C_NO = ?C_NO)) AS COUNT_OF_HOTEL, '+
       '(SELECT COUNT( NAME ) FROM CHURCH WHERE (C_NO = ?C_NO)) AS COUNT_OF_CHURCH, '+
       '(SELECT COUNT( NAME ) FROM DOCTOR WHERE (C_NO = ?C_NO)) AS COUNT_OF_DOCTOR, '+
       '(SELECT COUNT( NAME ) FROM SCHOOL WHERE (C_NO = ?C_NO)) AS COUNT_OF_SCHOOL, '+
       '(SELECT COUNT( NAME ) FROM NURSING_H WHERE (C_NO = ?C_NO)) AS COUNT_OF_NURSING_H, '+
       '(SELECT COUNT( NAME ) FROM LAWYER WHERE (C_NO = ?C_NO)) AS COUNT_OF_LAWYER, '+
       '(SELECT COUNT( NAME ) FROM HOSPITAL WHERE (C_NO = ?C_NO)) AS COUNT_OF_HOSPITAL, '+
       '(SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = ''10'' and C_NO = ?C_NO) AS COUNT_OF_MILITARY, '+
       '(SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = ''20'' and C_NO = ?C_NO) AS COUNT_OF_FIRE_BRIGADE, '+
       '(SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = ''30'' and C_NO = ?C_NO) AS COUNT_OF_POLICE, '+
       '(SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = ''40'' and C_NO = ?C_NO) AS COUNT_OF_PRISON, '+
       '(SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = ''50'' and C_NO = ?C_NO) AS COUNT_OF_REFUGEE_CAMP '+
       'FROM CAMPS '+
       'WHERE C_NO = ?C_NO;');
    Open;
  end;
// FibPLus Dataset setup end:
  with DM_reports.frxReport do
  begin
    Variables.LoadFromFile(report_dir+'/report_var.fd3');
    LoadFromFile(report_dir+'/report_camp_dist_ov.fr3');
    DM_reports.set_variables(Sender);
    PrepareReport;
    ShowPreparedReport;
  end;
end;
Wenn ich die abfrage mit IBExport ausführe ist der Datensatz ok:
SQL-Code:
SELECT
    C_NO, REG_NO, ZONE_NO, AREA_NO, CITY, COUNTRY, LANG,
    (SELECT COUNT( NAME ) FROM HOTEL WHERE (C_NO = 'I47705')) AS COUNT_OF_HOTEL,
    (SELECT COUNT( NAME ) FROM CHURCH WHERE (C_NO = 'I47705')) AS COUNT_OF_CHURCH,
    (SELECT COUNT( NAME ) FROM DOCTOR WHERE (C_NO = 'I47705')) AS COUNT_OF_DOCTOR,
    (SELECT COUNT( NAME ) FROM SCHOOL WHERE (C_NO = 'I47705')) AS COUNT_OF_SCHOOL,
    (SELECT COUNT( NAME ) FROM NURSING_H WHERE (C_NO = 'I47705')) AS COUNT_OF_NURSING_H,
    (SELECT COUNT( NAME ) FROM LAWYER WHERE (C_NO = 'I47705')) AS COUNT_OF_LAWYER,
    (SELECT COUNT( NAME ) FROM HOSPITAL WHERE (C_NO = 'I47705')) AS COUNT_OF_HOSPITAL,
    (SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = '10and C_NO = 'I47705') AS COUNT_OF_MILITARY,
    (SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = '20and C_NO = 'I47705') AS COUNT_OF_FIRE_BRIGADE,
    (SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = '30and C_NO = 'I47705') AS COUNT_OF_POLICE,
    (SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = '40and C_NO = 'I47705') AS COUNT_OF_PRISON,
    (SELECT COUNT( NAME ) FROM PUB_S WHERE KIND = '50and C_NO = 'I47705') AS COUNT_OF_REFUGEE_CAMP
FROM CAMPS WHERE (C_NO = 'I47705')
Danke schonmal für Eure Hilfe
Manfred
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#2

Re: Reportproblem

  Alt 10. Jul 2009, 11:03
Schon mal im Quellcode die hart codierte Variante
des IBExpert, d.h. ohne Variablen abgesetzt?

Gruß
Gerald
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Reportproblem

  Alt 10. Jul 2009, 11:06
Hallo Manfred,

-Warum die Abfrage über CAMPS? Du liest ja nichts von dieser Tabelle.
Was für einen Typ hat PUB_S.KIND? ( Quotes erscheinen mir überflüssig)
Zudem wäre es u.U. zu überlegen, die Tabellen zu verschmelzen (wenn die Struktir gleich/ähnlich). Dann könnte man das ganze in einer normalen Abfrage mit IIFs händeln.
Oder eine Execution Block unter Verwendung von PL zu verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Reportproblem

  Alt 10. Jul 2009, 11:20
Zitat von GHorn:
Schon mal im Quellcode die hart codierte Variante
des IBExpert, d.h. ohne Variablen abgesetzt?
Da erhalte ich bei allen Details den gleichen Wert.

Zitat von mkinzler:
-Warum die Abfrage über CAMPS? Du liest ja nichts von dieser Tabelle.
Im Report wird Camp als Master Eintrag dargestellt.

Zitat von mkinzler:
Was für einen Typ hat PUB_S.KIND? ( Quotes erscheinen mir überflüssig)
Der Typ ist VARCHAR.

Zitat von mkinzler:
Zudem wäre es u.U. zu überlegen, die Tabellen zu verschmelzen (wenn die Struktir gleich/ähnlich). Dann könnte man das ganze in einer normalen Abfrage mit IIFs händeln.
Werde das mal versuchen.

Zitat von mkinzler:
Oder eine Execution Block unter Verwendung von PL zu verwenden
Sorry, kannst Du das ein wenig erklären?

Danke
Manfred
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Reportproblem

  Alt 10. Jul 2009, 11:33
Zitat:
Der Typ ist VARCHAR.
Da hier aber Zahlen verwendet werden erscheint mir die Verwendung von Integern besser geeignet.
Zitat:
Im Report wird Camp als Master Eintrag dargestellt.
Aber nicht die Tabelle sondern das DataSet (Ergebnis)
Zitat:
Sorry, kannst Du das ein wenig erklären?
Entweder als Stored Procedure oder als Code block
SQL-Code:
EXECUTE BLOCK ( C_NO INTEGER = :C_NO)
RETURNS ( REG_NO INTEGER, ZONE_NO INTEGER, AREA_NO INTEGER, CITY VARCHAR(32), COUNTRY .., LANG .., COUNT_OF_HOTEL INTEGER, ... )
AS
BEGIN
    select REG_NO, ZONE_NO, AREA_NO, CITY, COUNTRY, LANG from camps into :REG_NO, :ZONE_NO, :AREA_NO, :CITY, :COUNTRY, :LANG;
    SELECT COUNT( NAME ) FROM HOTEL WHERE C_NO = :C_NO into :COUNT_OF_HOTEL;
    ...
    SUSPEND;
END;
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Reportproblem

  Alt 10. Jul 2009, 17:59
Zitat von mkinzler:
Zudem wäre es u.U. zu überlegen, die Tabellen zu verschmelzen (wenn die Struktir gleich/ähnlich). Dann könnte man das ganze in einer normalen Abfrage mit IIFs händeln.
Bin schon eine weile am rumtesten aber irgendwie noch nicht auf dem richtigen Weg.
Habe auch schon hier im Forum die Suche bemüht. Aber wie das über mehrere Tabellen mit where geht ist mir nicht ganz klar.
SQL-Code:
SELECT
    C_NO, REG_NO, ZONE_NO, AREA_NO, CITY, COUNTRY, LANG,
    count (IIF (HOTEL.NAME is not null,1,0 WHERE (C_NO = 'I47705')) AS COUNT_OF_HOTEL,
FROM CAMPS WHERE (C_NO = 'I47705')
Könntest Du mir ein kleines Bsp. geben?

Shalom
Manfred
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Reportproblem

  Alt 10. Jul 2009, 18:27
Ich meinte die mehrere Tabellen durch eine ersetzen. Diese dann um ein Art-Feld erweitern. Dies könnte man auch in einer Union-Abfrage temporär erledigen.
Markus Kinzler
  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 16:01 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