Toon posts:

[DELPHI] [RAVE] Invalid report fields

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op het moment ben ik een Delphi applicatie aan het schrijven hetgeen gebruik maakt van een Rave report. De applicatie bestaat uit drie forms:
- Main,
- InternePrint,
- ExternePrint.

Op het Main form heb ik de volgende componenten geplaatst:
- ADO connection object,
- ADO query object,
- Rave Dataset object,
- Rave Project object.

Om het Rave report te voorzien van de juist datafields, heb ik een simpele query in het ADO query object geplaatst met de benodigde velden. In het Rave report maak ik een nieuwe Dataview aan die gekoppeld is aan het Rave Dataset object op het Main form van de Delphi applicatie.

Nu pas ik de volgende truuk toe. Ik verwijder de query uit het ADO query object en vul dit ADO query object met een query die ik dynamisch opbouw in de code. (Zie een stuk uit de code hieronder.)

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
qryBarcodeStickers.SQL.Text := 'SELECT CodeObject, Straat, HuisNr, Toevoeging1, Toevoeging2, Toevoeging3,';
            qryBarcodeStickers.SQL.Add( 'Postcode, Woonplaats, Gemeente, :pmFrac AS Frac, :pmVol AS Vol' );
            qryBarcodeStickers.SQL.Add( 'FROM Objecten' );
            qryBarcodeStickers.SQL.Add( 'WHERE CodeObject = :pmCodeObject' );
            qryBarcodeStickers.Parameters.ParamByName( 'pmCodeObject' ).Value := dbgObjecten.Fields[0].AsString;
            qryBarcodeStickers.Parameters.ParamByName( 'pmFrac' ).Value       := edtFractie.Text;
            qryBarcodeStickers.Parameters.ParamByName( 'pmVol' ).Value        := edtVol.Text;
            qryBarcodeStickers.Active := True;
            rpBarSticker.ProjectFile  := sRepPath + '\Barcode sticker.rav';
            rpBarSticker.Execute;
            qryBarcodeStickers.Active := False;
            qryBarcodeStickers.SQL.Clear;


Wanneer ik deze code opbouw vanuit het InternePrint form (hetgeen één object produceert) en het Rave report start, dan krijg ik netjes de gegevens in het report terug.

Echter, wanneer ik deze code opbouw vanuit het ExternePrint form (hetgeen meerdere objecten produceert) en het Rave report start, krijg ik netjes het aantal records te zien (en evenzoveel report pages), maar alle velden geeven (INVALID) weer.

Heeft iemand iets soortgelijks meegemaakt en/of weet iemand hier een oplossing voor? Er is weinig over Rave op internet te vinden en ik heb reeds een email gestuurd naar Nevrona, maar ik vermoed dat die niet gaan reageren.

Alvast bedankt!

Verwijderd

Topicstarter
Er mag een slotje op deze thread. Ik ben erachter wat het probleem is. De query waarmee ik de datafields initialiseerde had een veld dat van het type string was.

Vanuit het form InternePrint was dit veld ook van het type string, terwijl vanuit het form ExternePrint dit veld van het type integer was. Jammer dat Rave geen convert error geeft o.i.d.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 15:16

Tomatoman

Fulltime prutser

Los van je eigen constatering, bij ADO moet je voor alle parameters invullen van welk datatype ze zijn. Doe je dat niet, dan krijg je vaak vreemde foutmeldingen van query's.

Delphi:
1
2
3
4
5
6
with qryBarcodeStickers.Parameters do
begin
  ParamByName('pmCodeObject').DataType := ftString;
  ParamByName('pmFrac').DataType := ftString;
  ParamByName('pmVol').DataType := ftString;
end;
Verwijderd schreef op vrijdag 22 juli 2005 @ 11:20:
Er mag een slotje op deze thread.
Zie de FAQ :) :
opgelost: Je hebt een probleemtopic geopend en het is opgelost. Post dan altijd op welke manier je het hebt opgelost. Op deze manier is het voor een volgende lezer ook makkelijker een oplossing te vinden. Post ook als je het uiteindelijk hebt 'opgelost' door middel van een herinstallatie of format. Opgelost betekent niet dat het topic daarna op slot moet.

Een goede grap mag vrienden kosten.