[Delphi] Quick Report en tekst opmaak

Pagina: 1
Acties:
  • 242 views sinds 30-01-2008
  • Reageer

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik moet een stukje tekst in een Quick Report zetten met opmaak. Sommige woorden vet enzo. Maar hoe doe ik dit? Er is wel een RichEdit component voor Quick Report, maar die is nogal brak en krijg ik niet lekker aan de praat.

Ik zoek eigenlijk iets waarbij ik HTML (of een andere simpele opmaak taal) kan gebruiken.

Iemand ideeen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Sorry, ik ben bang dat dit soort dingen niet echt lekker gaat in QR. Maar wat voor problemen heb je met de RichEdit? Heb er zelf nooit problemen mee gehad.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Delphi32 schreef op 21 augustus 2002 @ 16:18:
Sorry, ik ben bang dat dit soort dingen niet echt lekker gaat in QR. Maar wat voor problemen heb je met de RichEdit? Heb er zelf nooit problemen mee gehad.
Ik wil de RTF code in de database hebben, zodat deze toch wat aanpasbaar is. Maar dat lukt niet echt met die DB versie van de RichEdit's.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Kool
  • Registratie: September 1999
  • Niet online
Ik zou zeggen gebruik de SaveToStream method en zet de RTF in een BLOB.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
De RTF code kan ik zo maken in Word ofzo. Da's geen probleem, maar het is meer het terug halen van die tekst met opmaak op een report.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Je moet wat meer info geven. Ik kan hier prima in een IB Blob field een willekeurig veelvuldig geformatteerd docje opnemen, en dat met een TQRDBRichText meerdere malen op een QuickReport krijgen:
Afbeeldingslocatie: http://www.xs4all.nl/~schagend/shots/any01.jpg

[edit]oops, sorry voor de nare size :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Oke, ik krijg die RTF data nu ook uit de database op mijn QuickReport. Alleen moet ik nu per pagina bepalen welke kolom er uit de database moet worden gebruikt voor de RTF data. Wel of niet incasso.

Waar (bij welke event) geef ik aan welke data er moet worden gebruikt uit de database?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

TQuickRep.OnStartPage wellicht? Of, aangezien je db-related werkt, kan je iets met OnBeforePrint van de TQRBand doen.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik probeer in de OnNeedData en de OnPrint de juiste DataField van de RichText te zetten, maar hij geeft op alle pagina's dezelfde tekst weer ook al weet ik zeker dat dit verschillend is.

Ik heb ook geprobeerd een lookup field te maken welke gevuld wordt met de juist RTF code, alleen mag een blob veld niet een calculated field zijn. Dat wil dus ook niet echt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

ah als ik het goed begrijp heb je 2 data fields in je table, 1 voor incasso en 1 voor normaal. En nou wil je runtime per pagina de datafield wisselen? Hmm nee dat gaat niet werken volgens mij.
Kan je niet de query een beetje aanpassen, zodat in jouw datafield reeds de juiste blob zit? Met een union of zow

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, dat zou ik dan even moeten bekijken.
Heb nog wel geprobeerd om 2 RichText's erin te zetten en per pagina de visible in te stellen, maar zelfs dat wil niet. Ze zijn altijd beide visisble.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Klopt, de visibility van de QR components doet niet altijd wat het lijkt te moeten doen :) Ik zou voor de union-optie gaan, lijkt me het minste werk en de minste ergernis op te leveren ;)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Prima, alleen moet ik even uitzoeken hoe ik dat doe in SQL.
Een veld in de query: is Incasso true dan col1 uit tabel_x anders col2 uit tabel_x

:)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

welke database? sommigen ondersteunen een IIF-constructie (Access bv), en als je die niet hebt krijg je
code:
1
2
3
SELECT IncassoText FROM TabelX WHERE Incasso = TRUE
UNION
SELECT NonIncassoText FROM TabelX WHERE Incasso = FALSE


Hmm ik wil een pseudocode tag :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
IIF (voor Access) en CASE (voor MSSQL).

Ik heb Access, en dan wordt het:

code:
1
2
SELECT Facturen.*, IIf(Incasso, FactuurIncasso, FactuurOvermaken) AS BetalingsTekst
FROM Facturen, Diversen;

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, helaas zet hij dat veld ergens om naar een WideString waardoor er niet veel in kan. Hij ziet hem niet als een Memo.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

toch die union maar testen :?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Zal es even testen, hoe werkt dat dan precies met de bovenstaande query?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

code:
1
2
3
4
5
6
7
8
9
//eerst de incasso's
SELECT Facturen.*, Diversen.FactuurIncasso
FROM Facturen, Diversen //die moet je zelf ff joinen
WHERE Facturen.Incasso = TRUE
//dan de niet-incasso's erbij
UNION
SELECT Facturen.*, Diversen.FactuurOvermaken
FROM Facturen, Diversen //die moet je zelf ff joinen
WHERE Facturen.Incasso = FALSE

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Thanks, de query werkt in Access perfect. Dus heb hem gewoon in de Access database gezet bij Query's. In mijn programma kan ik dan gewoon "SELECT * FROM QueryFacturen" doen. Maar helaas wordt het een WideString in Delphi. Ik vraag me echt af hoe dat kan.

Edit:
Uuhmm, kwam er net achter dat in Access het resultaat van de Query al afgekapt is, daar zit dus ergens de fout.

Een gewone query is geen probleem, maar zodra ik die UNION gebruik kapt hij de data af.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Probleem is bekend: MS KB artikel


:)

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1